Dockerのpull run push Dockerfileからのbuildなど、一通りの事を簡単なWebサイトを作ることを目的にやってみましょう。
環境:こちらで用意してあるクラウド上のVMアクセス情報は、別途メールで展開します。
OS:Ubuntu18.04.2
Docker:Docker-ce-18.09.5 ※インストール方法をご参照
ユーザー:ubuntu (sudo可)
事前にDokerHubのアカウントを作成しておきましょう。
事前準備
$ sudo su -
インストールしたDocker情報を確認
1.Dockerのバージョンを確認
# docker version
2.システム情報の確認
# docker info
Docker Hubからコンテナーイメージのpull
1.searchサブコマンドでレジストリーを検索
# docker search nginx
NAME DESCRIPTION STARS OFFICIAL
nginx Official build of Nginx. 11281 [OK]
※上記のnginxというイメージは、DokerHubのから確認できます。
2.コンテナーイメージをダウンロード
# docker image pull nginx
Using default tag: latest
latest: Pulling from library/nginx
27833a3ba0a5: Pull complete
ea005e36e544: Pull complete
d172c7f0578d: Pull complete
Digest: sha256:e71b1bf4281f25533cf15e6e5f9be4dac74d2328152edf7ecde23abc54e16c1c
Status: Downloaded newer image for nginx:latest
3.ダウンロードしたイメージを確認
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 27a188018e18 7 days ago 109MB
コンテナーの起動
1.コンテナーを起動
# docker container run -it -d --name nginx01 nginx
81a8933e431158c3eaded6b33fa952e97024dedf9de4f56d157841afdcee0b8e
-dオプションはバックグラウンドで実行
起動したコンテナーの確認
1.起動したコンテナーを確認
# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81a8933e4311 nginx "/bin/bash" 2 minutes ago Up 2 minutes 80/tcp nginx01
2.docker container execコマンド
# docker container exec -it nginx01 /bin/bash
[root@f2f7ecdecaf2 /]# cat /usr/share/nginx/html/index.html
[root@f2f7ecdecaf2 /]# exit
コンテナーの起動、停止と削除
1.コンテナーを停止
# docker container stop nginx01
2.停止したコンテナーを確認
# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81a8933e4311 nginx "/bin/bash" 10 minutes ago Exited (0) About a minute ago nginx01
3.コンテナーを削除
# docker container rm nginx01
nginx01
4.コンテナーを確認
# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
コンテナーに外部からアクセス(ポートフォワード)
1.コンテナーを起動
# docker container run -it -d -p 80:80 --name nginx01 nginx
3183b9cd317ad720e11e57e8dbafad4a183a31478cf251cfb7e9292998d2c737
-pオプションで、外部からアクセスされるポート番号:コンテナ側のポート番号を指定
-dオプションはバックグラウンドで実行
起動したコンテナーの確認
1.起動したコンテナーを確認
# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3183b9cd317a nginx "nginx -g 'daemon of…" 18 seconds ago Up 17 seconds 0.0.0.0:80->80/tcp nginx01
2.現時点のNginxの画面確認
ブラウザ上に、http://IPアドレス にアクセスし、Nginxの管理画面が表示されることを確認します。
※Nginxの初期画面となっているはずです。
Docker ボリュームについての簡単な動作確認
1.コンテナーを削除
# docker container stop nginx01
# docker container rm nginx01
nginx01
2.コンテナーを起動
# docker container run -it -d -p 80:80 -v /root/docker-volume:/usr/share/nginx/html --name nginx01 nginx
3183b9cd317ad720e11e57e8dbafad4a183a31478cf251cfb7e9292998d2c737
-pオプションで、外部からアクセスされるポート番号:コンテナ側のポート番号を指定
-dオプションはバックグラウンドで実行
-vオプションはコンテナーの一部データをDockerホストに永続化
3.現時点のNginxの画面確認
ブラウザ上に、http://IPアドレス にアクセスし、Nginxの管理画面が表示されることを確認します。
※Docker Volume Test! が表示されているはずです。
4.VolumeのMount元のファイル変更後の確認
# vi /root/docker-volume/index.html
<h1>Docker Volume Test!</h1> の内容を<h1>Docker Volume Test Changed!</h1>に変更する
ブラウザ上に、http://IPアドレス にアクセスし、Nginxの管理画面が表示されることを確認します。
※Docker Volume Test Changed! が表示されているはずです。
DockerfileからWebサイトをつくる
1.コンテナーを削除
# docker container stop nginx01
# docker container rm nginx01
nginx01
2.Dockerビルド用の内容物を確認
# cat /root/docker-file/Dockerfile
# cat /root/docker-file/index.html
3.Dockerビルドを実行
# docker image build -t DockerHubアカウント名/nginx02:1.0 /root/docker-file
・
・
Successfully built 0c4e45b86bcd
4.Dockerイメージを実行
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
DockerHubアカウント名/nginx02 1.0 fd85c23c4735 2 minutes ago 109MB
5.コンテナーを起動
# docker container run -itd -p 80:80 --name nginx02 DockerHubアカウント名/nginx02:1.0
3ce407416874308af370951ecf56c77b53e2aa405ba20aae51593fd3a0e2e108
コンテナーイメージをDocker Hubにpush
1.Docker Hubにログイン
# docker login
Username:
Password:
Login Succeeded
2.Docker Hubにコンテナーイメージをpush
# docker image push DockerHubアカウント名/nginx02:1.0
Do you really want to push to public registry? [y/n]: y
The push refers to repository [docker.io/DockerHubアカウント名/nginx02]
・
・
1.0: digest: sha256:6c3ff81d5f449b10b56a1bb941578db9ada4b40065f8f08f55f5d58a4b1c85e4 size: 1155
3.リポジトリーを確認
コンテナーイメージを再ダウンロード
最後に全てのイメージと停止コンテナを削除して、pushしたのコンテナーイメージをダウンロードして起動してみましょう。
1.停止コンテナの一括削除
# docker container stop $(docker container ls -q)
# docker container rm $(docker container ls -a -q)
# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2.イメージの一括削除
# docker image rm $(docker image ls -a -q)
# docker image ls
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
3.nginx02のコンテナーイメージをダウンロード
# docker image pull -a DockerHubアカウント名/nginx02
4.コンテナーを起動
# docker container run -itd -p 80:80 --name nginx02 DockerHubアカウント名/nginx02:1.0
5.ブラウザ確認
ブラウザ上に、http://IPアドレス にアクセスし、Nginxの管理画面が表示されることを確認します。
※ Docker build Test! が表示されているはずです。
参考:https://qiita.com/cyberblack28/items/e3fb956f584094341c62