👌
[ハンズオン]AWS Docker入門編
先日、Dockerを触れる機会があったので忘れないようシェアしたいと思います。
Dockerとは?
初心者の方向けにAWS公式のDockerに関する説明をリンク貼付しました!
[ポイント]
Dockerは
・コンテナ型
・ソフトウェアプラットフォーム
・すばやくビルド、出荷、実行=テスト環境の構築に向いている
とはいうものの、ものは試しというわけで早速やってみましょう!
今回は練習なのでAWS EC2環境で体験してましょう!
Docker インストール
yum install -y docker
起動・自動設定
systemctl start docker.service
systemctl enable docker.service
念の為起動しているか確認してみましょう。
ps -efH | grep docker
これで起動の確認が取れました!
root 3759 1 0 08:57 ? 00:00:05 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536
root 4769 3759 0 09:03 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.17.0.2 -container-port 80
root 4774 3759 0 09:03 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.17.0.2 -container-port 80
今回はnginxをコンテナで動かそうと思います!
まず、作業ディレクトリを作成します。
mkdir /work
cd /work
次にhtmlファイルを作成し、適当な文言を入力しておきます。
vim index.html
#以下ファイルの中に文言入力
---------------
Hello World
--------------
今回「Dockerfile」というものを使ってnginxのイメージを作成しようと思います。
以下をファイルに入力してください。(詳細は後ほど説明)
vim Dockerfile
#以下ファイル内に入力
----------
FROM nginx
EXPOSE 80
#Docker上のディレクトリにコピー
COPY index.html /usr/share/nginx/html
#OS特有の実行させたいコマンド
CMD nginx -g "daemon off;"
----------
- FROM nginx
ベースとするDockerイメージを指定します。 - EXPOSE 80
80番ポートの開放を意味します。 - COPY index.html /usr/share/nginx/html
EC2内にあるファイルindex.htmlをコンテナ内の所定のディレクトリにコピーします。 - CMD nginx -g "daemon off;"
コンテナのデフォルトの実行コマンドを定義します。
nginx を起動する際に daemon off; をつけることでフォアグランドでの起動が可能になります。
では作成したイメージを立ち上げてみましょう!
docker build . -t my_nginx
できたイメージの確認もついでにやってみます。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my_nginx latest 3ce060349dc5 28 minutes ago 133MB
Dockerfileで作成したイメージの結果が出ていますね!
では最後にコンテナの作成です!
docker run -d -p 80:80 --name web my_nginx
コンテナが作成されたか確認してみましょう。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
116c37fb82c4 my_nginx "/docker-entrypoint.…" 29 minutes ago Up 29 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp web
最後にブラウザで自分のグローバルIP/index.htmlでHello Worldと出れば成功です!
*グローバルIPのみだと以下のように表示されます。
今回はDockerの起動とDockerfileからのnginxを作ってみました。
自身もDockerは勉強始めたばかりなのでちょくちょく更新していこうと思います!
Discussion