{"id":70830,"date":"2020-09-09T05:41:55","date_gmt":"2020-09-09T05:41:55","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=86804"},"modified":"2020-09-09T05:41:55","modified_gmt":"2020-09-09T05:41:55","slug":"getting-network-information-from-docker","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/2020\/09\/09\/getting-network-information-from-docker\/","title":{"rendered":"Getting Network Information from Docker"},"content":{"rendered":"<p class=\"syndicated-attribution\"><meta name= \\\"keywords \\\" content= \\\"\u96fb\u5b50\u8a08\u7b97\u6a5f, \u6559\u80b2, IT \u96fb\u8166\u73ed,\u96fb\u8166\u88dc\u7fd2\uff0c \u96fb\u8166\u73ed\uff0c \u5bb6\u6559\uff0c \u79c1\u4eba\u8001\u5e2b\uff0c \u8cc7\u8a0a\u6280\u8853\uff0c \u7a0b\u5e8f\u8a2d\u8a08\uff0c \u96fb\u5b50\u8a08\u7b97\u6a5f\uff0c \u904a\u6232\uff0c \u860b\u679c\uff0c \u96fb\u5f71\uff0c \u8a08\u7b97\u6a5f\uff0c\u7de8\u78bc\uff0c Java\uff0c C\/C++\uff0c JavaScript\uff0c PHP\uff0c HTML\uff0c CSS\uff0c MySQL\uff0c mobile\uff0c Android\uff0c \u52d5\u6f2b\uff0c Python\uff0c teacher\uff0c \u88dc\u7fd2\uff0c \u96fb\u8166\u88dc\u7fd2 \u8cc7\u8a0a, \u7535\u5b50\u8ba1\u7b97\u673a, IT ,Game, apple, movie, Computer,student,Java,\u6559\u80b2, ,\u5b66\u751f, \u5b66\u4e60, learn, \u6559\u5b66,  Android, apple,anime, animation, \u4fe1\u606f\u6280\u672f, \u7a0b\u5e8f\u8bbe\u8ba1, \u79fb\u52a8\u7535\u8bdd, \u8cc7\u8a0a\u79d1\u6280,Game, Jeu, Juego,Call Of Duty ,\u4f7f\u547d\u53ec\u559a , \u6e38\u620f, \u7535\u5b50\u6e38\u620f,, \u591a\u4eba\u7535\u5b50\u6e38\u620f, \u7f51\u7edc\u6e38\u620f\uff0conline\uff0conline game, \u624b\u673a\u6e38\u620f, mobile \\\"><\/p>\n<h2 data-id=\"overview\">1. Overview<\/h2>\n<div class=\"bd-anchor\" id=\"overview\"><\/div>\n<p>One of the main features of Docker is creating and isolating networks.<\/p>\n<p>In this tutorial, we&#8217;ll see how to extract information about networks and the containers they hold.<\/p>\n<h2 data-id=\"networking-in-docker\">2. Networking in Docker<\/h2>\n<div class=\"bd-anchor\" id=\"networking-in-docker\"><\/div>\n<p>When we run a Docker container, we can define what ports we want to expose to the outside world. <strong>What this means is that we use (or create) an isolated network and put our container inside.<\/strong> We can decide how we&#8217;ll communicate both with and inside this network.<\/p>\n<p>Let&#8217;s create a few containers and configure networking between them. They will all internally work on port 8080, and they will be placed in two networks.<\/p>\n<p>Each of them will host a simple &#8220;Hello World&#8221; HTTP service:<\/p>\n<pre><code class=\"language-yaml\">version: \"3.5\"\r\nservices:\r\n  test1:\r\n    image: node\r\n    command: node -e \"const http = require('http'); http.createServer((req, res) =&gt; { res.write('Hello from test1\\n'); res.end() }).listen(8080)\"\r\n    ports:\r\n      - \"8080:8080\"\r\n    networks:\r\n      - network1\r\n  test2:\r\n    image: node\r\n    command: node -e \"const http = require('http'); http.createServer((req, res) =&gt; { res.write('Hello from test2\\n'); res.end() }).listen(8080)\"\r\n    ports:\r\n      - \"8081:8080\"\r\n    networks:\r\n      - network1\r\n      - network2\r\n  test3:\r\n    image: node\r\n    command: node -e \"const http = require('http'); http.createServer((req, res) =&gt; { res.write('Hello from test3\\n'); res.end() }).listen(8080)\"\r\n    ports:\r\n      - \"8082:8080\"\r\n    networks:\r\n      - network2\r\nnetworks:\r\n  network1:\r\n    name: network1\r\n  network2:\r\n    name: network2\r\n<\/code><\/pre>\n<p>Here&#8217;s a diagram of these containers for a more visual representation:<\/p>\n<p><a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/wp-content\/uploads\/2020\/09\/docker-compose-bael.png\"><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-86809 aligncenter\" src=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2020\/09\/docker-compose-bael.png\" alt=\"\" width=\"617\" height=\"291\" srcset=\"https:\/\/www.baeldung.com\/wp-content\/uploads\/2020\/09\/docker-compose-bael.png 681w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2020\/09\/docker-compose-bael-300x141.png 300w, https:\/\/www.baeldung.com\/wp-content\/uploads\/2020\/09\/docker-compose-bael-100x47.png 100w\" sizes=\"(max-width: 617px) 100vw, 617px\" \/><\/a><\/p>\n<p>Let&#8217;s start them all with the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/docs.docker.com\/compose\/\"><em>docker-compose<\/em><\/a> command:<\/p>\n<pre><code class=\"language-bash\">$ docker-compose up -d\r\nStarting bael_test2_1 ... done\r\nStarting bael_test3_1 ... done\r\nStarting bael_test1_1 ... done<\/code><\/pre>\n<h2 data-id=\"inspecting-the-network\">3. Inspecting the Network<\/h2>\n<div class=\"bd-anchor\" id=\"inspecting-the-network\"><\/div>\n<p>Firstly, let&#8217;s list all available Docker&#8217;s networks:<\/p>\n<pre><code class=\"language-bash\">$ docker network ls\r\nNETWORK ID          NAME                DRIVER              SCOPE\r\n86e6a8138c0d        bridge              bridge              local\r\n73402de5766c        host                host                local\r\ne943f7124776        network1            bridge              local\r\n3b9a28673a16        network2            bridge              local\r\n9361d16a834a        none                null                local<\/code><\/pre>\n<p>We can see the <em>bridge<\/em> network, which is the default network used when we use the <em>docker run<\/em> command. Also, we can see the networks we created with a <em>docker-compose <\/em>command.<\/p>\n<p>Let&#8217;s inspect them with the <em>docker inspect<\/em> command:<\/p>\n<pre><code class=\"language-bash\">$ docker inspect network1 network2\r\n[\r\n    {\r\n        \"Name\": \"network1\",\r\n        \"Id\": \"e943f7124776d45a1481ee26795b2dba3f2ab51f000d875a179a99ce832eee9f\",\r\n        \"Created\": \"2020-08-22T10:38:22.198709146Z\",\r\n        \"Scope\": \"local\",\r\n        \"Driver\": \"bridge\",\r\n        \"EnableIPv6\": false,\r\n        \/\/ output cutout for brevity\r\n    }\r\n],\r\n    {\r\n        \"Name\": \"network2\",\r\n        \/\/ output cutout for brevity\r\n    }\r\n}<\/code><\/pre>\n<p>This will produce lengthy, detailed output. We rarely need all of this information.<strong> Fortunately, we can format it using <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/golang.org\/pkg\/text\/template\/\">Go templates<\/a> and extract only the elements that suit our needs.<\/strong> Let&#8217;s get only the subnet of <em>network1:<\/em><\/p>\n<pre><code class=\"language-bash\">$ docker inspect -f '{{range .IPAM.Config}}{{.Subnet}}{{end}}' network1\r\n172.22.0.0\/16<\/code><\/pre>\n<h2 data-id=\"inspecting-the-container\">4. Inspecting the Container<\/h2>\n<div class=\"bd-anchor\" id=\"inspecting-the-container\"><\/div>\n<p>Similarly, we can inspect a specific container. First, let&#8217;s list all containers with their identifiers:<\/p>\n<pre><code class=\"language-bash\">$ docker ps --format 'table {{.ID}}\\t{{.Names}}'\r\nCONTAINER ID        NAMES\r\n78c10f03ad89        bael_test2_1\r\nf229dde68f3b        bael_test3_1\r\nb09a8f47e2a8        bael_test1_1<\/code><\/pre>\n<p><strong>Now we&#8217;ll use the container&#8217;s ID as an argument to the <em>inspect<\/em> command to find its IP address.<\/strong> Similarly to networks, we can format output to get just the information we need. We&#8217;ll check the second container and its address in both networks we created:<\/p>\n<pre><code class=\"language-bash\">$ docker inspect 78c10f03ad89 --format '{{.NetworkSettings.Networks.network1.IPAddress}}'\r\n172.22.0.2\r\n$ docker inspect 78c10f03ad89 --format '{{.NetworkSettings.Networks.network2.IPAddress}}'\r\n172.23.0.3<\/code><\/pre>\n<p>Alternatively, we can print hosts directly from a container using the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/docs.docker.com\/engine\/reference\/commandline\/exec\/\"><em>docker exec<\/em><\/a> command:<\/p>\n<pre><code class=\"language-bash\">$ docker exec 78c10f03ad89 cat \/etc\/hosts\r\n127.0.0.1\tlocalhost\r\n::1\tlocalhost ip6-localhost ip6-loopback\r\nfe00::0\tip6-localnet\r\nff00::0\tip6-mcastprefix\r\nff02::1\tip6-allnodes\r\nff02::2\tip6-allrouters\r\n172.22.0.2\t78c10f03ad89\r\n172.23.0.3\t78c10f03ad89<\/code><\/pre>\n<h2 data-id=\"communication-between-containers\">5. Communication Between Containers<\/h2>\n<div class=\"bd-anchor\" id=\"communication-between-containers\"><\/div>\n<p>Using knowledge about our Docker networks, we can establish communication between containers in the same network.<\/p>\n<p>First, let&#8217;s get inside the\u00a0 &#8220;test1&#8221; container:<\/p>\n<pre><code class=\"language-bash\">$ docker exec -it b09a8f47e2a8 \/bin\/bash<\/code><\/pre>\n<p>Then, use curl to send a request to the &#8220;test2&#8221; container:<\/p>\n<pre><code class=\"language-bash\">root@b09a8f47e2a8:\/# curl 172.22.0.2:8080\r\nHello from test2<\/code><\/pre>\n<p><strong>Since we&#8217;re inside the Docker&#8217;s network, we can also use the alias instead of the IP address.<\/strong> Docker&#8217;s builtin DNS service will resolve the address for us:<\/p>\n<pre><code class=\"language-bash\">root@b09a8f47e2a8:\/# curl test2:8080\r\nHello from test2<\/code><\/pre>\n<p>Mind that we can&#8217;t connect to the &#8220;test3&#8221; container because it&#8217;s in a different network. Connecting by the IP address will time out:<\/p>\n<pre><code class=\"language-bash\">root@b09a8f47e2a8:\/# curl 172.23.0.2:8080<\/code><\/pre>\n<p>Connecting by the alias will also fail because the DNS service won&#8217;t recognize it:<\/p>\n<pre><code class=\"language-bash\">root@b09a8f47e2a8:\/# curl test3:8080\r\ncurl: (6) Could not resolve host: test3<\/code><\/pre>\n<p>To make this work,\u00a0we need to add &#8220;test3&#8221; container to &#8220;network1&#8221; (from outside of the container):<\/p>\n<pre><code class=\"language-bash\">$ docker network connect --alias test3 network1 f229dde68f3b<\/code><\/pre>\n<p>Now request to &#8220;test3&#8221; will work correctly:<\/p>\n<pre><code class=\"language-bash\">root@b09a8f47e2a8:\/# curl test3:8080\r\nHello from test3<\/code><\/pre>\n<h2 data-id=\"conclusion\">6. Conclusion<\/h2>\n<div class=\"bd-anchor\" id=\"conclusion\"><\/div>\n<p>In this tutorial, we&#8217;ve seen how to configure networks for Docker containers and then query information about them.<\/p>\n<p>The post <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/devops\/docker-network-information\/\" >Getting Network Information from Docker<\/a> first appeared on <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/\" >Baeldung<\/a>.<\/p>\n<p><Img align=\"left\" border=\"0\" height=\"1\" width=\"1\" alt=\"\" style=\"border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;\" hspace=\"0\" src=\"https:\/\/feeds.feedblitz.com\/~\/i\/635266408\/0\/baeldung\"><\/p>\n<div style=\"clear:both;padding-top:0.2em;\"><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Share on Google+\" href=\"https:\/\/feeds.feedblitz.com\/_\/30\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/googleplus20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/635266408\/baeldung,https%3A%2F%2Fwww.baeldung.com%2Fwp-content%2Fuploads%2F2020%2F09%2Fdocker-compose-bael.png\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/devops\/docker-network-information#respond\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&#160;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/devops\/docker-network-information\/feed\/\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a><\/p>\n<h3 style=\"clear:left;padding-top:10px\">Related Stories<\/h3>\n<ul>\n<li><a rel=\"NOFOLLOW\" href=\"https:\/\/www.baeldung.com\/devops\/efficient-docker-images\">Tips for Creating Efficient Docker Images<\/a><\/li>\n<li><a rel=\"NOFOLLOW\" href=\"https:\/\/www.baeldung.com\/devops\/docker-engine-api-container-info\">Getting Docker Container From Docker Engine API<\/a><\/li>\n<li><a rel=\"NOFOLLOW\" href=\"https:\/\/www.baeldung.com\/devops\/docker-removing-images\">Removing Docker Images<\/a><\/li>\n<\/ul>\n<p>&#160;<\/p><\/div>\n\n<p class=\"syndicated-attribution\"><figure class= \\\"wp-block-image alignnone \\\"><img src= \\\"http:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-content\/uploads\/2016\/05\/logo2-2.png\\\" alt=\\\"IT\u96fb\u8166\u88dc\u7fd2 java\u88dc\u7fd2 \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b, PHP\u88dc\u7fd2,CSS\u88dc\u7fd2,XML,Java\u88dc\u7fd2,MySQL\u88dc\u7fd2,graphic design\u88dc\u7fd2,\u4e2d\u5c0f\u5b78ICT\u88dc\u7fd2,\u4e00\u5c0d\u4e00\u79c1\u4eba\u88dc\u7fd2\u548cFreelance\u81ea\u7531\u5de5\u4f5c\u914d\u5c0d\u3002\\\"\/><figcaption>\u7acb\u523b\u8a3b\u518a\u53ca\u5831\u540d\u96fb\u8166\u88dc\u7fd2\u8ab2\u7a0b\u5427!<\/figcaption><\/figure>\r\n<\/br>Find A Teacher Form:\r\n<\/br>https:\/\/docs.google.com\/forms\/d\/1vREBnX5n262umf4wU5U2pyTwvk9O-JrAgblA-wH9GFQ\/viewform?edit_requested=true#responses\r\n<\/br><\/br>Email:\r\n<\/br>public1989two@gmail.com<br><br><br><br><br><br><br>\r\n<a href=www.itsec.hk style=color:#FFFFFF;>www.itsec.hk<\/a><br>\r\n<a href=\\\"www.itsec.vip\\\" style=color:#FFFFFF;>www.itsec.vip<\/a><br>\r\n<a href=\\\"www.itseceu.uk\\\" style=color:#FFFFFF;>www.itseceu.uk<\/a><br><\/p>","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>A quick and practical guide to getting network information from Docker.<\/p>\n<p>The post <a rel=\"NOFOLLOW noopener noreferrer\" href=\"https:\/\/feeds.feedblitz.com\/~\/635266408\/0\/baeldung~Getting-Network-Information-from-Docker\/\" target=\"_blank\">Getting Network Information from Docker<\/a> first appeared on <a rel=\"NOFOLLOW noopener noreferrer\" href=\"https:\/\/www.baeldung.com\/\" target=\"_blank\">Baeldung<\/a>.<\/p>\n<div><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\"><\/a>&nbsp;<a title=\"Share on Google+\" href=\"https:\/\/feeds.feedblitz.com\/_\/30\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/googleplus20.png\"><\/a>&nbsp;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/635266408\/baeldung,https%3A%2F%2Fwww.baeldung.com%2Fwp-content%2Fuploads%2F2020%2F09%2Fdocker-compose-bael.png\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\"><\/a>&nbsp;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\"><\/a>&nbsp;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\"><\/a>&nbsp;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/635266408\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\"><\/a>&nbsp;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/devops\/docker-network-information#respond\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&nbsp;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/devops\/docker-network-information\/feed\/\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a><\/p>\n<h3>Related Stories<\/h3>\n<ul>\n<li><a rel=\"NOFOLLOW\" href=\"https:\/\/www.baeldung.com\/devops\/efficient-docker-images\">Tips for Creating Efficient Docker Images<\/a><\/li>\n<li><a rel=\"NOFOLLOW\" href=\"https:\/\/www.baeldung.com\/devops\/docker-engine-api-container-info\">Getting Docker Container From Docker Engine API<\/a><\/li>\n<li><a rel=\"NOFOLLOW\" href=\"https:\/\/www.baeldung.com\/devops\/docker-removing-images\">Removing Docker Images<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p><\/div>\n<\/div>","protected":false},"author":831,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"Getting Network Information from Docker - ITTeacherITFreelance.hk","description":"A quick and practical guide to getting network information from Docker. The post Getting Network Information from Docker first appeared on Baeldung . &nbsp; &nb"},"footnotes":""},"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/70830"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/831"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=70830"}],"version-history":[{"count":7,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/70830\/revisions"}],"predecessor-version":[{"id":77736,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/70830\/revisions\/77736"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=70830"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=70830"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=70830"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}