{"id":273,"date":"2016-09-22T23:34:48","date_gmt":"2016-09-22T15:34:48","guid":{"rendered":"http:\/\/blog.haostudio.net\/hwp\/?p=273"},"modified":"2017-07-25T00:07:43","modified_gmt":"2017-07-24T16:07:43","slug":"%e5%9c%a8-odroid-c2-%e4%b8%8a-%e5%ae%89%e8%a3%9d-docker-%e7%a8%8b%e5%bc%8f-arm-aarch64-%e7%89%88%e6%9c%ac","status":"publish","type":"post","link":"https:\/\/blog.haostudio.net\/hwp\/%e5%9c%a8-odroid-c2-%e4%b8%8a-%e5%ae%89%e8%a3%9d-docker-%e7%a8%8b%e5%bc%8f-arm-aarch64-%e7%89%88%e6%9c%ac\/","title":{"rendered":"\u5728 Odroid-C2 \u4e0a \u5b89\u88dd docker \u7a0b\u5f0f (ARM aarch64 \u7248\u672c)"},"content":{"rendered":"<!--more-->\n<h2>\u5728 Odroid-C2 \u4e0a \u5b89\u88dd docker \u7a0b\u5f0f (ARM aarch64 \u7248\u672c)<\/h2>\n<h3>\u524d\u8a00<\/h3>\n<p>\u624b\u4e0a\u6709\u4e00\u7247<a href=\"http:\/\/www.hardkernel.com\/main\/main.php\">Odroid-C2<\/a> \u958b\u767c\u677f, \u4e26\u4e14\u5b89\u88dd\u4e86<a href=\"http:\/\/www.armbian.com\/\">armbian<\/a> Debian-jessie \u4f5c\u696d\u7cfb\u7d71. \u60f3\u8aaa\u53ef\u5426\u5728\u9019\u677f\u5b50\u4e0a\u57f7\u884c <a href=\"https:\/\/www.docker.com\/\">docker<\/a> , \u4f46\u662f\u767c\u73fe, \u76ee\u524ddocker \u5b98\u65b9\u4e26\u672a\u91cb\u51faARM aarch64 \u67b6\u69cb\u7684\u7de8\u8b6f\u7248\u672c, \u82e5\u8981\u4f7f\u7528docker\u7684\u8a71, \u53ea\u80fd\u81ea\u5df1\u624b\u52d5\u7de8\u8b6f\u4e86.<\/p>\n<h3>linux kernel \u7248\u672c<\/h3>\n<p>\u7531\u65bc docker \u5fc5\u9808\u4f9d\u8cf4 linux kernel 3.10 \u4ee5\u4e0a. \u4e26\u4e14\u9700\u8981\u4e00\u4e9b\u6307\u5b9a\u7684 kernel feature \u6709\u88ab\u555f\u7528\u624d\u53ef\u4ee5. docker source code \u4e2d\u6709\u4e00\u500b\u7a0b\u5f0f\n<code>check-config.sh<\/code>, \u53ef\u4ee5\u6aa2\u67e5\u4f60\u7684linux kernel \u662f\u5426\u80fd\u5920\u57f7\u884cdocker.<\/p>\n<pre><code># uname -a\nLinux odroidc2 3.14.73-odroidc2 #2 SMP PREEMPT Mon Aug 1 14:01:38 CST 2016 aarch64 GNU\/Linux\n<\/code><\/pre>\n<p>\u4e0b\u8f09\n<code>check-config.sh<\/code><\/p>\n<pre><code># wget https:\/\/github.com\/docker\/docker\/raw\/master\/contrib\/check-config.sh\n1. chmod +x check-config.sh\n<\/code><\/pre>\n<p>\u57f7\u884c\n<code>check-confg.sh<\/code>, \u6703\u51fa\u73fe\u985e\u4f3c\u5982\u4e0b\u7684\u8a0a\u606f:<\/p>\n<pre><code># .\/check-config.sh      \ninfo: reading kernel config from \/proc\/config.gz ...\n\nGenerally Necessary:\n- cgroup hierarchy: properly mounted [\/sys\/fs\/cgroup]\n- apparmor: enabled and tools installed\n- CONFIG_NAMESPACES: enabled\n- CONFIG_NET_NS: enabled\n- CONFIG_PID_NS: enabled\n- CONFIG_IPC_NS: enabled\n- CONFIG_UTS_NS: enabled\n- CONFIG_DEVPTS_MULTIPLE_INSTANCES: enabled\n- CONFIG_CGROUPS: enabled\n- CONFIG_CGROUP_CPUACCT: enabled\n- CONFIG_CGROUP_DEVICE: enabled\n- CONFIG_CGROUP_FREEZER: enabled\n- CONFIG_CGROUP_SCHED: enabled\n- CONFIG_CPUSETS: enabled\n- CONFIG_MEMCG: enabled\n- CONFIG_KEYS: enabled\n- CONFIG_VETH: enabled (as module)\n- CONFIG_BRIDGE: enabled\n- CONFIG_BRIDGE_NETFILTER: enabled\n- CONFIG_NF_NAT_IPV4: enabled (as module)\n- CONFIG_IP_NF_FILTER: enabled (as module)\n- CONFIG_IP_NF_TARGET_MASQUERADE: enabled (as module)\n- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled (as module)\n- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled (as module)\n- CONFIG_NF_NAT: enabled (as module)\n- CONFIG_NF_NAT_NEEDED: enabled\n- CONFIG_POSIX_MQUEUE: enabled\n\nOptional Features:\n- CONFIG_USER_NS: enabled\n- CONFIG_SECCOMP: enabled\n- CONFIG_CGROUP_PIDS: missing\n- CONFIG_MEMCG_SWAP: enabled\n- CONFIG_MEMCG_SWAP_ENABLED: enabled\n- CONFIG_MEMCG_KMEM: enabled\n- CONFIG_RESOURCE_COUNTERS: enabled\n- CONFIG_BLK_CGROUP: enabled\n- CONFIG_BLK_DEV_THROTTLING: enabled\n- CONFIG_IOSCHED_CFQ: enabled\n- CONFIG_CFQ_GROUP_IOSCHED: missing\n- CONFIG_CGROUP_PERF: enabled\n- CONFIG_CGROUP_HUGETLB: enabled\n- CONFIG_NET_CLS_CGROUP: enabled (as module)\n- CONFIG_CGROUP_NET_PRIO: enabled\n- CONFIG_CFS_BANDWIDTH: enabled\n- CONFIG_FAIR_GROUP_SCHED: enabled\n- CONFIG_RT_GROUP_SCHED: enabled\n- CONFIG_IP_VS: enabled (as module)\n- CONFIG_EXT3_FS: missing\n- CONFIG_EXT3_FS_XATTR: missing\n- CONFIG_EXT3_FS_POSIX_ACL: missing\n- CONFIG_EXT3_FS_SECURITY: missing\n    (enable these ext3 configs if you are using ext3 as backing filesystem)\n- CONFIG_EXT4_FS: enabled\n- CONFIG_EXT4_FS_POSIX_ACL: enabled\n- CONFIG_EXT4_FS_SECURITY: enabled\n- Network Drivers:\n  - &quot;overlay&quot;:\n    - CONFIG_VXLAN: missing\n    Optional (for secure networks):\n    - CONFIG_XFRM_ALGO: enabled\n    - CONFIG_XFRM_USER: enabled (as module)\n  - &quot;ipvlan&quot;:\n    - CONFIG_IPVLAN: missing\n  - &quot;macvlan&quot;:\n    - CONFIG_MACVLAN: enabled (as module)\n    - CONFIG_DUMMY: enabled (as module)\n- Storage Drivers:\n  - &quot;aufs&quot;:\n    - CONFIG_AUFS_FS: missing\n  - &quot;btrfs&quot;:\n    - CONFIG_BTRFS_FS: enabled (as module)\n    - CONFIG_BTRFS_FS_POSIX_ACL: enabled\n  - &quot;devicemapper&quot;:\n    - CONFIG_BLK_DEV_DM: enabled (as module)\n    - CONFIG_DM_THIN_PROVISIONING: enabled (as module)\n  - &quot;overlay&quot;:\n    - CONFIG_OVERLAY_FS: enabled (as module)\n  - &quot;zfs&quot;:\n    - \/dev\/zfs: missing\n    - zfs command: missing\n    - zpool command: missing\n\nLimits:\n- \/proc\/sys\/kernel\/keys\/root_maxkeys: 1000000\n<\/code><\/pre>\n<p>\u5176\u4e2d\n<code>Generally Necessary<\/code> \u7684features \u5fc5\u9808\u5168\u90e8\u90fd\u662fenabled \u624d\u80fd\u5920\u57f7\u884cdocker, \u82e5\u6709\u4efb\u4f55\u4e00\u9805\u6c92\u6709enabled, \u90a3\u9ebc\u4f60\u53ef\u80fd\u5c31\u5fc5\u9808\u91cd\u65b0\u7de8\u8b6f\u4f60\u7684linux kernel, \u6216\u8005\u662f\u4f9d\u7167\u6b64\u7a0b\u5f0f\u88e1\u9762\u7684\u5efa\u8b70\u65b9\u5f0f\u4f86\u555f\u7528\u9019\u4e9bfeatures.<\/p>\n<h3>\u7de8\u8b6f docker<\/h3>\n<p>\u67e5\u4e86\u4e00\u4e0b<a href=\"https:\/\/docs.docker.com\/v1.5\/contributing\/devenvironment\/\">docker\u5b98\u65b9\u6587\u4ef6<\/a>, \u8981\u7de8\u8b6fdocker, \u9700\u8981\u6709docker \u7684\u74b0\u5883\u624d\u80fd\u7de8\u8b6f. \u9019\u500b\u5c31\u5f88\u5947\u602a\u4e86, \u6211\u5c31\u662f\u56e0\u70ba\u6c92\u6709aarch64 \u7248\u672c\u7684docker, \u624d\u60f3\u8981\u7de8\u8b6fdocker for aarch64\u7684\u554a. \u9019\u4e0d\u5c31\u8b8a\u6210<code>\u96de\u751f\u86cb,\u86cb\u751f\u96de<\/code>\u7684\u554f\u984c\u4e86\u55ce? \u67e5\u4e86\u8a31\u4e45, \u624d\u77e5\u9053docker \u6709\u63d0\u4f9b<code>\u7121\u4e2d\u751f\u6709<\/code>\u7684\u7de8\u8b6f\u65b9\u5f0f\u5566. \u53ea\u662f\u5b98\u65b9\u6587\u4ef6\u6c92\u6709\u8aaa\u660e. \u7de8\u8b6f\u65b9\u5f0f\u6211\u662f\u4f9d\u7167\u6700\u5f8c\u9762\u7684<code>\u53c3\u8003\u8cc7\u6599 1<\/code> \u4f86\u64cd\u4f5c\u7684. \u6b65\u9a5f\u5982\u4e0b:<\/p>\n<p>\u9996\u5148 \u5b89\u88dd golang, \u7248\u672c\u5fc5\u9808\u662f1.6\u4ee5\u4e0a<\/p>\n<pre><code># apt-get update; apt-get install golang-go\n\n1. go version\ngo version go1.6.2 linux\/arm64\n<\/code><\/pre>\n<p>\u5b89\u88dd\u7de8\u8b6f\u6642\u5fc5\u8981\u7684\u5957\u4ef6<\/p>\n<pre><code># apt-get install  btrfs-tools libsqlite3-dev libdevmapper-dev\n<\/code><\/pre>\n<p>\u4e0b\u8f09docker source code,\u9996\u5148 \u7de8\u8b6fdocker\n<code>v1.10.2<\/code>\u7248. \u56e0\u70ba<code>v1.10.2<\/code> \u958b\u59cb\u6709\u652f\u63f4ARM aarch64\u67b6\u69cb<\/p>\n<pre><code># mkdir -p ~\/code\n1. cd ~\/code\n1. git clone https:\/\/github.com\/docker\/docker\n1. cd docker\n1. git checkout v1.10.2\n<\/code><\/pre>\n<p>\u958b\u59cb\u7de8\u8b6f<\/p>\n<pre><code># AUTO_GOPATH=1 .\/hack\/make.sh dynbinary\n<\/code><\/pre>\n<p>\u7de8\u8b6f\u5b8c\u6210\u5f8c\u8a0a\u606f\u5982\u4e0b:<\/p>\n<pre><code># WARNING! I don&#039;t seem to be running in the Docker container.\n1. The result of this command might be an incorrect build, and will not be\n1.   officially supported.\n1. 1. Try this instead: make all\n1. \n---&gt; Making bundle: dynbinary (in bundles\/1.10.2\/dynbinary)\nCreated binary: bundles\/1.10.2\/dynbinary\/dockerinit-1.10.2\nBuilding: bundles\/1.10.2\/dynbinary\/docker-1.10.2\nCreated binary: bundles\/1.10.2\/dynbinary\/docker-1.10.2\n<\/code><\/pre>\n<p>\u7de8\u8b6f\u5b8c\u5f8c\u7684\u7a0b\u5f0f\u88ab\u653e\u5728\n<code>~\/code\/docker\/bundles\/1.10.2\/dynbinary\/<\/code><\/p>\n<pre><code># ls -al ~\/code\/docker\/bundles\/1.10.2\/dynbinary\ntotal 41788\ndrwxr-xr-x 2 root root     4096 Sep 22 08:18 .\ndrwxr-xr-x 3 root root     4096 Sep 22 08:11 ..\nlrwxrwxrwx 1 root root       13 Sep 22 08:18 docker -&gt; docker-1.10.2\n-rwxr-xr-x 1 root root 32942232 Sep 22 08:18 docker-1.10.2\n-rw-r--r-- 1 root root       48 Sep 22 08:18 docker-1.10.2.md5\n-rw-r--r-- 1 root root       80 Sep 22 08:18 docker-1.10.2.sha256\nlrwxrwxrwx 1 root root       17 Sep 22 08:12 dockerinit -&gt; dockerinit-1.10.2\n-rwxr-xr-x 1 root root  9819424 Sep 22 08:12 dockerinit-1.10.2\n-rw-r--r-- 1 root root       52 Sep 22 08:12 dockerinit-1.10.2.md5\n-rw-r--r-- 1 root root       84 Sep 22 08:12 dockerinit-1.10.2.sha256\n<\/code><\/pre>\n<p>\u6211\u5011\u53ea\u9700\u5c07docker-1.10.2 \u53ca dockerinit-1.10.2 \u62f7\u8c9d\u5230\u9069\u7576\u7684\u76ee\u9304\u4e0b\u5373\u53ef:<\/p>\n<pre><code># cd ~\/code\/docker\/\n1. mkdir -p \/usr\/lib\/docker\/\n1. cp bundles\/1.10.2\/dynbinary\/docker-1.10.2 \/usr\/bin\/docker\n1. cp bundles\/1.10.2\/dynbinary\/dockerinit-1.10.2 \/usr\/lib\/docker\/dockerinit\n<\/code><\/pre>\n<h3>\u6e2c\u8a66docker<\/h3>\n<p>\u5728\u4f7f\u7528docker\u4e4b\u524d, \u9700\u8981\u5148\u555f\u52d5docker daemon, \u555f\u52d5\u65b9\u5f0f\u5982\u4e0b:<\/p>\n<pre><code># docker daemon &amp;\n<\/code><\/pre>\n<p>\u958b\u59cb\u6e2c\u8a66docker<\/p>\n<pre><code># docker run -ti ebspace\/aarch64-debian\nERRO[0140] Handler for POST \/v1.22\/containers\/create returned error: No such image: ebspace\/aarch64-debian:latest \nUnable to find image &#039;ebspace\/aarch64-debian:latest&#039; locally\nlatest: Pulling from ebspace\/aarch64-debian\n59d7421c5877: Pull complete \nDigest: sha256:b4993a58d12d822a62ebf4b683c74716a77078f6310fd0bf97451c9d5465dbd4\nStatus: Downloaded newer image for ebspace\/aarch64-debian:latest\n\nroot@e39ac0f7cbcc:\/# ls -al\ntotal 68\ndrwxr-xr-x  20 root root 4096 Sep 22 14:56 .\ndrwxr-xr-x  20 root root 4096 Sep 22 14:56 ..\n-rwxr-xr-x   1 root root    0 Sep 22 14:56 .dockerenv\n-rwxr-xr-x   1 root root    0 Sep 22 14:56 .dockerinit\ndrwxr-xr-x   2 root root 4096 Sep 21 20:56 bin\ndrwxr-xr-x   2 root root 4096 Sep 12 04:11 boot\ndrwxr-xr-x   5 root root  380 Sep 22 14:56 dev\ndrwxr-xr-x  42 root root 4096 Sep 22 14:56 etc\ndrwxr-xr-x   2 root root 4096 Sep 12 04:11 home\ndrwxr-xr-x   9 root root 4096 Sep 21 20:49 lib\ndrwxr-xr-x   2 root root 4096 Sep 21 20:46 media\ndrwxr-xr-x   2 root root 4096 Sep 21 20:46 mnt\ndrwxr-xr-x   2 root root 4096 Sep 21 20:46 opt\ndr-xr-xr-x 123 root root    0 Sep 22 14:56 proc\ndrwx------   2 root root 4096 Sep 21 20:46 root\ndrwxr-xr-x   3 root root 4096 Sep 21 20:46 run\ndrwxr-xr-x   2 root root 4096 Sep 21 20:56 sbin\ndrwxr-xr-x   2 root root 4096 Sep 21 20:46 srv\ndr-xr-xr-x  12 root root    0 Sep 22 00:39 sys\ndrwxrwxrwt   2 root root 4096 Sep 21 20:58 tmp\ndrwxr-xr-x  10 root root 4096 Sep 21 20:46 usr\ndrwxr-xr-x  11 root root 4096 Sep 21 20:46 var\nroot@e39ac0f7cbcc:\/# exit\nexit\n\n1. docker ps -a\nCONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS                     PORTS               NAMES\ne39ac0f7cbcc        ebspace\/aarch64-debian   &quot;\/bin\/bash&quot;         5 minutes ago       Exited (0) 2 minutes ago                       backstabbing_kalam\n<\/code><\/pre>\n<p>Yes!! docker \u6210\u529f\u7522\u751f\u4e86\u4e00\u500b container.<\/p>\n<h3>\u7de8\u8b6f\u6700\u65b0\u7248\u672c\u7684docker<\/h3>\n<p>\u6211\u5011\u5df2\u7d93\u7de8\u8b6f\u51fa\u7b2c\u4e00\u500b\u7248\u672c\u7684docker\n<code>v1.10.2<\/code> \u4e86 (\u4e5f\u5c31\u662f\u7b2c\u4e00\u96bb\u6bcd\u96de). \u82e5\u4ee5\u5f8c\u60f3\u8981\u8a66\u8a66\u6700\u65b0\u7248\u7684docker, \u5c31\u53ef\u4ee5\u63a1\u7528\u5b98\u65b9\u5efa\u8b70\u7684\u7de8\u8b6f\u65b9\u5f0f. \u7528 docker \u4f86 \u7522\u751f\u65b0\u7248\u7684 docker. (\u7528\u9019\u96bb\u6bcd\u96de\u4f86\u5b75\u96de\u86cb\u5427).<\/p>\n<p>\u4f9d\u7167<a href=\"https:\/\/docs.docker.com\/v1.5\/contributing\/devenvironment\/\">\u5b98\u65b9\u6587\u4ef6<\/a>, \u7de8\u8b6f\u6307\u4ee4\u5f88\u7c21\u55ae, \u53ea\u8981\u5169\u500b\u6307\u4ee4<code>make build<\/code>, <code>make binary<\/code><\/p>\n<pre><code>\u66f4\u65b0\u81f3\u6700\u65b0\u7248\u672c\u7684 docker source code\n\u76ee\u524d\u6700\u65b0release \u7684\u7248\u672c\u70ba v1.12.1\n1. cd ~\/code\/docker\n1. git pull\n1. git checkout v1.12.1\n\n\u7de8\u8b6f docker\n1. make build\n1. make binary\n<\/code><\/pre>\n<p>\u7de8\u8b6f\u5b8c\u5f8c, \u57f7\u884c\u6a94\u6703\u653e\u5728\n<code>~\/code\/docker\/bundles\/1.12.1\/<\/code> \u76ee\u9304\u88e1.\n\u88e1\u9762\u6709\u5169\u500b\u76ee\u9304, \u5206\u5225\u70ba\n<code>binary-client<\/code> \u4ee5\u53ca <code>binary-daemon<\/code><\/p>\n<h4>\u79fb\u9664\u820a\u7248\u7248\u672cdocker<\/h4>\n<ol>\n<li>\u9996\u5148\u505c\u6b62\u6b63\u5728\u57f7\u884c\u7684 docker deamon.<\/li>\n<li>\u7136\u5f8c\u79fb\u9664\u820a\u7684docker \u57f7\u884c\u6a94.<\/li>\n<li>\u6700\u5f8c\u79fb\u9664 \/var\/lib\/docker \u76ee\u9304. !!\u6ce8\u610f!! \u9019\u500b\u52d5\u4f5c\u4e5f\u6703\u907a\u5931\u820a\u7684docker images, \u4ee5\u53ca\u76f8\u95dc\u8cc7\u6599.<\/li>\n<\/ol>\n<p>\u5728\u7b2c\u4e09\u9805\u7684\u76ee\u7684, \u662f\u70ba\u4e86\u9632\u6b62docker \u65b0\u820a\u7248\u8cc7\u6599\u76f8\u885d\u7a81\u800c\u589e\u52a0\u7684. \u56e0\u70ba\n<code>v1.10.2<\/code>\u7248\u5728<code>\/var\/lib\/docker<\/code>\u5efa\u7acb\u7684\u8cc7\u6599, \u6703\u9020\u6210\u65b0\u7248\u555f\u52d5\u5931\u6557. \u6240\u4ee5\u6700\u597d\u7684\u65b9\u5f0f\u662f\u5168\u90e8\u79fb\u9664\u4e7e\u6de8, \u518d\u8b93\u65b0\u7248docker \u5efa\u7acb\u65b0\u8cc7\u6599.<\/p>\n<h4>\u5b89\u88dd\u65b0\u7248\u672c docker<\/h4>\n<p>\u5c07\u65b0\u7de8\u8b6f\u5f8c\u7684\u57f7\u884c\u6a94\u62f7\u8c9d\u5230\/usr\/bin \u76ee\u9304\u5373\u53ef<\/p>\n<pre><code># cp ~\/code\/docker\/bundles\/1.12.1\/binary-client\/docker* \/usr\/bin\n1. cp ~\/code\/docker\/bundles\/1.12.1\/binary-daemon\/docker* \/usr\/bin\n<\/code><\/pre>\n<h3>\u6ce8\u610f\u4e8b\u9805<\/h3>\n<p>\u6211\u5728\u7de8\u8b6f\n<code>v1.12.1<\/code> \u904e\u7a0b\u4e2d, \u6709\u51fa\u73fe\u7de8\u8b6f\u5931\u6557, \u7d93\u67e5\u8a62\u5f8c, \u539f\u4f86\u662f\u8a18\u61b6\u9ad4\u4e0d\u8db3\u800c\u9020\u6210\u7de8\u8b6f\u5931\u6557. \u5f8c\u4f86\u5c07swap memory \u52a0\u5927\u4e4b\u5f8c, \u5c31\u89e3\u6c7a\u554f\u984c\u4e86.\nOdroid-C2 \u677f\u5b50\u4e0a\u67092G RAM, \u770b\u4f86\u62ff\u4f86\u7de8\u8b6fdocker, \u4ecd\u7136\u7a0d\u5acc\u4e0d\u8db3. \u4e5f\u53ea\u80fd\u9760swap memory \u4f86\u89e3\u6c7a\u4e86.<\/p>\n<hr \/>\n<h3>\u53c3\u8003\u8cc7\u6599:<\/h3>\n<ol>\n<li><a href=\"http:\/\/blog.hypriot.com\/post\/getting-docker-running-on-a-high-density-armv8-server-from-hisilicon\/\">Getting Docker running on a high-density ARMv8 development board from HiSilicon<\/a><\/li>\n<\/ol>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[87,85,15,86],"tags":[88],"class_list":["post-273","post","type-post","status-publish","format-standard","hentry","category-arm","category-docker","category-embedded-system","category-virtual-machine","tag-docker"],"_links":{"self":[{"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/posts\/273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/comments?post=273"}],"version-history":[{"count":8,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/posts\/273\/revisions"}],"predecessor-version":[{"id":387,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/posts\/273\/revisions\/387"}],"wp:attachment":[{"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/media?parent=273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/categories?post=273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.haostudio.net\/hwp\/wp-json\/wp\/v2\/tags?post=273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}