AWS

Amazon Linux2 + Dockerで「Welcome to nginx!」

o_wani
この記事は作成から5年以上経過しているため、内容が古くなっている可能性があります。

Dockerってなんだろう。そう思いながらも時間とれずにいたので、今回は、実際に動かしながら、Dockerの勉強をしていこう。

どこから始めるべきか、できれば、実際に動かしながら動作を確認して理解していきたい。

そう考え、さくらインターネットのさくらのナレッジの記事を参考に進めてみることにしました。

デモ動作環境として、AWSにサーバを作成して進める手順です。
さくらのナレッジでは、さくらのクラウドで進めていましたので、それでもOK。

Vagrantをずっと使って来たが、DockerでのnginxのWelcomeページ表示は速攻で出来ました。。すご><

Amazon Linux2

今回は、AWSのEC2インスタンス作成で、AMI(AmazonMachineImage)としてAmazonLinux2 を選択しました。

Alt text

セキュリティグループの修正

Alt text

  • HTTP
  • HTTPS

を追加しておきましょう。

インスタンスの作成を完了

あとは、そのままインスタンスを作成して完了です。
作成が完了し次第、アクセスして確認しましょう。

デモサーバ(AWS)へのアクセス確認

SSHログインできることを確認しましょう。

Alt text

Dockerをインストール

AWSでインスタンスを作成しました。ログインまで出来て、デモ環境の準備はOKです。Dockerを動かすためにセットアップを行います。
yum update しておきましょう。

$ sudo yum update

基本的にはさくらのナレッジにある通り進めてみる。

yum-utilsとdevicemapper

$ sudo yum install -y yum-utils\
device-mapper-persistent-data\
lvm2

コマンドの改行\見やすそうなので、それで書きます。

yumのリポジトリ追加

Docker CEをインストールするため、yumのリポジトリを追加します。

$ sudo yum-config-manager\
--add-repo\
https://download.docker.com/linux/centos/docker-ce.repo

docker-ce.repo確認

$ ls /etc/yum.repos.d/
amzn2-core.repo docker-ce.repo

Dockerインストール

$ sudo yum install docker-ce
読み込んだプラグイン:langpacks, priorities, update-motd
docker-ce-stable | 2.9 kB 00:00:00
docker-ce-stable/x86_64/primary_db | 13 kB 00:00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ docker-ce.x86_64 0:18.03.1.ce-1.el7.centos を インストール
--> 依存性の処理をしています: container-selinux >= 2.9 のパッケージ: docker-ce-18.03.1.ce-1.el7.centos.x86_64
--> 依存性の処理をしています: pigz のパッケージ: docker-ce-18.03.1.ce-1.el7.centos.x86_64
--> 依存性の処理をしています: libltdl.so.7()(64bit) のパッケージ: docker-ce-18.03.1.ce-1.el7.centos.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ docker-ce.x86_64 0:18.03.1.ce-1.el7.centos を インストール
--> 依存性の処理をしています: container-selinux >= 2.9 のパッケージ: docker-ce-18.03.1.ce-1.el7.centos.x86_64
---> パッケージ libtool-ltdl.x86_64 0:2.4.2-22.2.amzn2 を インストール
---> パッケージ pigz.x86_64 0:2.3.4-1.amzn2 を インストール
--> 依存性解決を終了しました。
エラー: パッケージ: docker-ce-18.03.1.ce-1.el7.centos.x86_64 (docker-ce-stable)
要求: container-selinux >= 2.9
問題を回避するために --skip-broken を用いることができます。
これらを試行できます: rpm -Va --nofiles --nodigest

インストール失敗しました。

調べて別手順でうまくいきました。

$ sudo yum install --setopt=obsoletes=0 \
docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch

インストールの確認

$ docker -v
Docker version 17.03.2-ce, build f5ec1e2

Dockerサービス

Dockerサービスの起動と自動起動登録しておきます。

Dockerサービスを起動

$ sudo systemctl start docker

Dockerの起動確認

activeであることを確認

$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since 木 2018-05-31 09:31:18 UTC; 5s ago

自動起動の登録をしておく

これでマシン再起動後も自動でDockerサービスが起動します。

$ sudo systemctl enable docker

NginxのDockerイメージで即表示

イメージをダウンロードします。

$ sudo docker pull nginx

ダウンロードしたNginxイメージでコンテナを起動します。
8080ポートでアクセスします。

$ sudo docker run -d --name nginx-container -p 8080:80 nginx

AWSのセキュリティグループ修正

インバウンドルールに8080を追加しておく。

Alt text

表示確認

IPアドレス:8080でアクセスします。

Alt text

dockerイメージのダウンロードだけでいけました。。
速い。。。

参考

Docker入門(第二回)~Dockerセットアップ、コンテナ起動~

Docker for Centos – Install Instructions Causing Conflicts #20

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました