Docker を AWS で試してみる

  • Docker
  • やりたいこと

    世の中に分かりやすい解説があふれています

    Docker についての分かりやすい解説は世の中にあふれているのでそちらを参照された方が賢明です。

    オススメは以下です。

    他にも、Docker 入門、Docker 初心者などと検索すると、たくさんの優良な記事が出てきます。

    すごい時代になったなとオジサンは感心しております。

    やりたいこと

    さて、そこで今回は、AWS の AmazonLinux2 に Docker をインストールをして Apache2 環境を構築するところまでをやってみたいと思います。

    AWS の基本サービスは理解していることを前提として進めていきます。

    公式サイトの手順を見る

    CentOS

    AmazonLinux2 ということは、CentOS の手順を参考にするのが良いと思いました。

    CentOS のインストール手順の公式サイトはこちら「Install Docker Engine on CentOS」です。

    Uninstall old versions

    [root@ip-10-0-50-26 ~]# yum remove docker \ > docker-client \ > docker-client-latest \ > docker-common \ > docker-latest \ > docker-latest-logrotate \ > docker-logrotate \ > docker-engine Loaded plugins: extras_suggestions, langpacks, priorities, update-motd No Match for argument: docker No Match for argument: docker-client No Match for argument: docker-client-latest No Match for argument: docker-common No Match for argument: docker-latest No Match for argument: docker-latest-logrotate No Match for argument: docker-logrotate No Match for argument: docker-engine No Packages marked for removal

    SET UP THE REPOSITORY

    [root@ip-10-0-50-26 ~]# yum install -y yum-utils Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core | 3.7 kB 00:00:00 amzn2extra-docker | 3.0 kB 00:00:00 mysql-connectors-community | 2.5 kB 00:00:00 mysql-tools-community | 2.5 kB 00:00:00 mysql57-community | 2.5 kB 00:00:00 packages-microsoft-com-prod | 3.0 kB 00:00:00 pgdg-common | 2.9 kB 00:00:00 pgdg10 | 3.6 kB 00:00:00 pgdg11 | 3.6 kB 00:00:00 pgdg12 | 3.6 kB 00:00:00 pgdg95 | 3.6 kB 00:00:00 pgdg96 | 3.6 kB 00:00:00 packages-microsoft-com-prod/primary_db | 1.9 MB 00:00:00 64 packages excluded due to repository priority protections Package yum-utils-1.1.31-46.amzn2.0.1.noarch already installed and latest version Nothing to do [root@ip-10-0-50-26 ~]# yum-config-manager \ > --add-repo \ > https://download.docker.com/linux/centos/docker-ce.repo Loaded plugins: extras_suggestions, langpacks, priorities, update-motd adding repo from: https://download.docker.com/linux/centos/docker-ce.repo grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo repo saved to /etc/yum.repos.d/docker-ce.repo

    INSTALL DOCKER ENGINE

    [root@ip-10-0-50-26 ~]# yum install docker-ce docker-ce-cli containerd.io Loaded plugins: extras_suggestions, langpacks, priorities, update-motd docker-ce-stable | 3.5 kB 00:00:00 (1/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00 (2/2): docker-ce-stable/x86_64/primary_db | 45 kB 00:00:00 64 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package containerd.io.x86_64 0:1.2.13-3.2.el7 will be installed --> Processing Dependency: container-selinux >= 2:2.74 for package: containerd.io-1.2.13-3.2.el7.x86_64 ---> Package docker-ce.x86_64 3:19.03.12-3.el7 will be installed --> Processing Dependency: container-selinux >= 2:2.74 for package: 3:docker-ce-19.03.12-3.el7.x86_64 --> Processing Dependency: libcgroup for package: 3:docker-ce-19.03.12-3.el7.x86_64 ---> Package docker-ce-cli.x86_64 1:19.03.12-3.el7 will be installed --> Running transaction check ---> Package containerd.io.x86_64 0:1.2.13-3.2.el7 will be installed --> Processing Dependency: container-selinux >= 2:2.74 for package: containerd.io-1.2.13-3.2.el7.x86_64 ---> Package docker-ce.x86_64 3:19.03.12-3.el7 will be installed --> Processing Dependency: container-selinux >= 2:2.74 for package: 3:docker-ce-19.03.12-3.el7.x86_64 ---> Package libcgroup.x86_64 0:0.41-21.amzn2 will be installed --> Finished Dependency Resolution Error: Package: containerd.io-1.2.13-3.2.el7.x86_64 (docker-ce-stable) Requires: container-selinux >= 2:2.74 Error: Package: 3:docker-ce-19.03.12-3.el7.x86_64 (docker-ce-stable) Requires: container-selinux >= 2:2.74 You could try using --skip-broken to work around the problem ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:

    Error 発生

    原因は docker-ce.repo

    AmazonLinux2 に対して、docker-ce.repo からはインストールできません。

    実は、AWS が専用のインストール方法を用意してれていました。最初からこちらを見ていれば。。。

    [root@ip-10-0-50-26 ~]# cd /etc/yum.repos.d/ [root@ip-10-0-50-26 yum.repos.d]# ls amzn2-core.repo docker-ce.repo amzn2-extras.repo [root@ip-10-0-50-26 yum.repos.d]# rm docker-ce.repo [root@ip-10-0-50-26 yum.repos.d]# ls amzn2-core.repo amzn2-extras.repo [root@ip-10-0-50-26 yum.repos.d]# amazon-linux-extras install docker ... Installed: docker.x86_64 0:19.03.6ce-4.amzn2 Dependency Installed: containerd.x86_64 0:1.3.2-1.amzn2 libcgroup.x86_64 0:0.41-21.amzn2 pigz.x86_64 0:2.3.4-1.amzn2.0.1 runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2 Complete! [root@ip-10-0-50-26 yum.repos.d]# service docker start Redirecting to /bin/systemctl start docker.service [root@ip-10-0-50-26 yum.repos.d]# usermod -a -G docker ec2-user

    ec2-user で入り直して確認

    [ec2-user@ip-10-0-50-26 ~]$ docker info Client: Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 19.03.6-ce Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: ff48f57fc83a8c44cf4ad5d672424a98ba37ded6 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 4.14.186-146.268.amzn2.x86_64 Operating System: Amazon Linux 2 OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 983.3MiB Name: ip-10-0-50-26.ap-northeast-1.compute.internal ID: N3JD:E4WY:ZB4Y:CLF5:U7Z7:QA2K:B3MV:IUT4:MC6T:633W:PYCG:JRKD Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled

    何やら WARNING が出ておりますが、一旦気にせず進めます。

    Docker イメージの作成

    Dockerfile

    [ec2-user@ip-10-0-50-26 20200910]$ touch Dockerfile [ec2-user@ip-10-0-50-26 20200910]$ ls Dockerfile [ec2-user@ip-10-0-50-26 20200910]$ vi Dockerfile FROM ubuntu:18.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh [ec2-user@ip-10-0-50-26 20200910]$ docker build -t hello-world . Sending build context to Docker daemon 2.56kB Step 1/6 : FROM ubuntu:18.04 ... Successfully built d34eb3c7242f Successfully tagged hello-world:latest [ec2-user@ip-10-0-50-26 20200910]$ docker images --filter reference=hello-world REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest d34eb3c7242f 2 minutes ago 190MB [ec2-user@ip-10-0-50-26 20200910]$ docker run -t -i -p 80:80 hello-world

    これで Docker イメージの作成が出来ました。

    http 接続確認

    手元の端末からブラウザで以下の URL にアクセスしてみます。

    http://ec2-18-183-98-156.ap-northeast-1.compute.amazonaws.com:80

    ポイントは PORT を 80 で指定することです。

    Hello World! と表示されれば OK です。

    久しぶりの投稿

    ここ1か月はプライベートに仕事に忙しく、記事の更新が止まっていました。

    やっと落ち着いてきましたので、これからは定期的に更新してまいりたいと思います。

  • Docker