Help us understand the problem. What is going on with this article?

Docker pull run push Dockerfile 簡単Webサイトをつくる(トレーニング資料)

Dockerのpull run push Dockerfileからのbuildなど、一通りの事を簡単なWebサイトを作ることを目的にやってみましょう。

環境:こちらで用意してあるクラウド上のVMアクセス情報は、別途メールで展開します。
   OS:Ubuntu18.04.2
   Docker:Docker-ce-18.09.5 ※インストール方法をご参照
   ユーザー:ubuntu (sudo可)

事前にDokerHubのアカウントを作成しておきましょう。

事前準備

コマンド:rootユーザーに切替
$ 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.リポジトリーを確認

https://cloud.docker.com/にアクセスし、自分のDockerHubアカウント配下にnginx02:1.0が入っていることを確認します。

コンテナーイメージを再ダウンロード

最後に全てのイメージと停止コンテナを削除して、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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away