{"id":574,"date":"2020-07-24T03:06:47","date_gmt":"2020-07-24T03:06:47","guid":{"rendered":"http:\/\/10.0.0.14\/?p=574"},"modified":"2021-10-05T22:20:15","modified_gmt":"2021-10-05T22:20:15","slug":"install-docker-docker-compose-on-ubuntu-18","status":"publish","type":"post","link":"https:\/\/tutorials.leesonresearch.com\/tutorials\/2020\/07\/24\/install-docker-docker-compose-on-ubuntu-18\/","title":{"rendered":"Install Docker &#038; Docker-Compose on Antsle Antlet Using Ubuntu 18"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Create New Antlet<\/h2>\n\n\n\n<p>Create new antlet using Ubuntu 18 KVM.<br>Very important, before starting we must create a Virtual NIC<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Set Up Bridge Networking<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\nssh ubuntu@10.1.1.23\nsudo apt-get update\ncd \/etc\/netplan\nsudo nano 50-cloud-init.yaml\n<\/pre><\/div>\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\nnetwork:\n  ethernets:\n    ens3:\n      dhcp4: true\n  ethernets:\n    ens8:\n      dhcp4: true\n  version: 2\n<\/pre><\/div>\n\n\n<p>Close and save file with control-o =&gt; return =&gt; control-x<\/p>\n\n\n\n<p>Run the netplan apply command to update the network.<br>Don\u2019t need to restart antlet.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\nsudo netplan apply\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\">Get the external ip address<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\nip a\n1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host \n       valid_lft forever preferred_lft forever\n2: ens3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link\/ether b2:61:6e:73:6c:17 brd ff:ff:ff:ff:ff:ff\n    inet 10.1.1.23\/24 brd 10.1.1.255 scope global dynamic ens3\n       valid_lft 2565sec preferred_lft 2565sec\n    inet6 fe80::b061:6eff:fe73:6c17\/64 scope link \n       valid_lft forever preferred_lft forever\n3: ens8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link\/ether 52:54:00:ee:19:de brd ff:ff:ff:ff:ff:ff\n    inet 10.0.0.19\/24 brd 10.0.0.255 scope global dynamic ens8\n       valid_lft 556189sec preferred_lft 556189sec\n    inet6 2601:645:4300:f150:5254:ff:feee:19de\/128 scope global dynamic noprefixroute \n       valid_lft 204298sec preferred_lft 204298sec\n    inet6 2601:645:4300:f150:5054:ff:feee:19de\/64 scope global dynamic mngtmpaddr noprefixroute \n       valid_lft 345599sec preferred_lft 345599sec\n    inet6 fe80::5054:ff:feee:19de\/64 scope link \n       valid_lft forever preferred_lft forever\n4: docker0: &amp;lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc noqueue state DOWN group default \n    link\/ether 02:42:b4:21:01:4e brd ff:ff:ff:ff:ff:ff\n    inet 172.17.0.1\/16 brd 172.17.255.255 scope global docker0\n       valid_lft forever preferred_lft forever\n5: br-922b31faae00: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default \n    link\/ether 02:42:51:44:fe:48 brd ff:ff:ff:ff:ff:ff\n    inet 172.18.0.1\/16 brd 172.18.255.255 scope global br-922b31faae00\n       valid_lft forever preferred_lft forever\n    inet6 fe80::42:51ff:fe44:fe48\/64 scope link \n       valid_lft forever preferred_lft forever\n9: vethd3515df@if8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue master br-922b31faae00 state UP group default \n    link\/ether f6:dd:54:84:a8:78 brd ff:ff:ff:ff:ff:ff link-netnsid 0\n    inet6 fe80::f4dd:54ff:fe84:a878\/64 scope link \n       valid_lft forever preferred_lft forever\n11: veth2d9e871@if10: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue master br-922b31faae00 state UP group default \n    link\/ether 1e:b4:ed:8c:11:fa brd ff:ff:ff:ff:ff:ff link-netnsid 1\n    inet6 fe80::1cb4:edff:fe8c:11fa\/64 scope link \n       valid_lft forever preferred_lft forever\n<\/pre><\/div>\n\n\n<p>Eeeeeek! Not to worry. We just need to find ens8 in the above response.<\/p>\n\n\n\n<p>3: ens8: mtu 1500 qdisc fq_codel state UP group default qlen 1000<br>link\/ether 52:54:00:ee:19:de brd ff:ff:ff:ff:ff:ff<br>inet 10.0.0.19\/24 brd 10.0.0.255 scope global dynamic ens8<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Install Docker Engine<\/h4>\n\n\n\n<p>We need to use <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-and-use-docker-on-ubuntu-18-04\" target=\"_blank\" rel=\"noreferrer noopener\">Digital Ocean&#8217;s setup tutorial<\/a> since the setup using the official docker setup doesn&#8217;t work.<\/p>\n\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\nsudo apt-get update\n\nsudo apt install apt-transport-https ca-certificates curl software-properties-common\n\nsudo curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -\n\nsudo add-apt-repository &quot;deb &#x5B;arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu bionic stable&quot;\n\nsudo apt update\n\napt-cache policy docker-ce\n# confirm Installed: (none)\n\nsudo apt install docker-ce\n\nsudo systemctl status docker\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\">Install Docker-Compose<\/h4>\n\n\n\n<p>We&#8217;re using the official <a href=\"https:\/\/docs.docker.com\/compose\/install\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker installation tutorial<\/a>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\nsudo curl -L https:\/\/github.com\/docker\/compose\/releases\/download\/1.21.2\/docker-compose-`uname -s`-`uname -m` -o \/usr\/local\/bin\/docker-compose\n<\/pre><\/div>\n\n\n<p>Set permissions:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\nsudo chmod +x \/usr\/local\/bin\/docker-compose\n<\/pre><\/div>\n\n\n<p>Verify installation by checking version:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\ndocker-compose --version\ndocker-compose version 1.21.2, build a133471\n<\/pre><\/div>\n\n\n<p>If using curl doesn&#8217;t work, try pip.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: Double click to copy; notranslate\" title=\"Double click to copy\">\n# install python3\nsudo apt update\nsudo apt install python3\n\n# install pip3\nsudo apt update\nsudo apt install python3-pip\n\n# install docker-compose\nsudo pip3 install docker-compose\n\n# confirm that docker-compose is installed\ndocker-compose --version\n<\/pre><\/div>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Install Docker on Ubuntu 18&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":575,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49,13,11],"tags":[48],"class_list":["post-574","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-antsle","category-docker","category-server-ops","tag-antsle"],"_links":{"self":[{"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/posts\/574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/comments?post=574"}],"version-history":[{"count":20,"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/posts\/574\/revisions"}],"predecessor-version":[{"id":2600,"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/posts\/574\/revisions\/2600"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/media\/575"}],"wp:attachment":[{"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/media?parent=574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/categories?post=574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tutorials.leesonresearch.com\/tutorials\/wp-json\/wp\/v2\/tags?post=574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}