ここまでの内容を振り返ります。
-
registry:2.7.1のイメージを使いコンテナをバックグラウンドで実行してください。また、ホストOSの5000ポートをコンテナの5000ポートに繋いでください。 -
テストイメージをビルドするためのディレクトリを作成し移動してください。
-
以下のコマンドでindex.htmlを作成してください。
echo "self build sita image de ugoitemasu" > index.html
-
以下を満たすコンテナイメージをビルドしてください。ビルドするイメージ名は
{ホストOS名}:5000/httpd:selfbuildとしてください。(Dockerfileの記述は日本語マニュアルを参考にする)- ベースイメージは
alpine:latestを使用 - 以下のコマンドを実行しベースイメージにhttpdをインストール
apk update apk add apache2
- index.htmlを
/var/www/localhost/htdocs/にコピー 80ポートを公開- コンテナ起動時の実行コマンドは以下
/usr/sbin/httpd -D FOREGROUND
- ベースイメージは
-
{ホストOS名}:5000/httpd:selfbuildイメージのコンテナをバックグラウンドで起動してください。また、ホストOSの80ポートをコンテナの80ポートに繋いでください。 -
ホストOSから
curl localhost:80で接続してください。self build sita image de ugoitemasuが表示されることを確認してください。 -
{ホストOS名}:5000/httpd:selfbuildをプライベートイメージレジストリにpushしてください。
ここからの手順はホストOSに接続可能なもう一台のサーバで作業してください。なお、もう一台のサーバからホストOSのホスト名が名前解決できるように設定しておいてください。
-
もう一台のサーバで
{ホストOS名}:5000/httpd:selfbuildイメージのコンテナをバックグラウンドで起動してください。また、もう一台のサーバの80ポートをコンテナの80ポートに繋いでください。 -
もう一台のサーバから
curl localhost:80で接続してください。self build sita image de ugoitemasuが表示されることを確認してください。
両方のサーバで実施してください。
-
以下コマンドでコンテナをすべて削除してください。
docker rm -f `docker ps -a -q` -
以下コマンドでイメージを削除してください。
docker rmi {ホストOS名}:5000/httpd:selfbuild -
ホストOSに作成したテストイメージビルド用のディレクトリを削除してください。
また、興味のある方はイメージの手動運搬も確認してください。
答え(一例です)
- 以下コマンドを実行する。
docker run -d -p 5000:5000 registry:2.7.1
- 以下コマンドを実行する。
$ mkdir {テストイメージをビルドするためのディレクトリ名}
$ cd {テストイメージをビルドするためのディレクトリ名}
- プラクティスの指示コマンドを実行してください。
- 以下一連コマンドを実行する。
$ cat <<EOF > Dockerfile
FROM alpine:latest
RUN apk update
RUN apk add apache2
COPY index.html /var/www/localhost/htdocs/
EXPOSE 80/tcp
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
EOF
$ hostname
{ホストOS名}
$ docker build -t {ホストOS名}:5000/httpd:selfbuild .
- 以下コマンドを実行する。
docker run -d -p 80:80 {ホストOS名}:5000/httpd:selfbuild
- プラクティスの指示コマンドを実行して確認してください。
$ curl localhost:80
"self build sita image de ugoitemasu"
- 以下コマンドを実行する。
docker push {ホストOS名}:5000/httpd:selfbuild
- 以下コマンドを実行する。
$ docker pull {ホストOS名}:5000/httpd:selfbuild
selfbuild: Pulling from httpd
9824c27679d3: Pull complete
aa1ebd0dde91: Pull complete
17782f8e77a5: Pull complete
11a7891f47af: Pull complete
Digest: sha256:d641eb700e20318ec56ee692ae059b73bb86008dcccf0a9bff8856f932388df0
Status: Downloaded newer image for ip-10-0-10-220.ap-southeast-2.compute.internal:5000/httpd:selfbuild
ip-10-0-10-220.ap-southeast-2.compute.internal:5000/httpd:selfbuild
$ docker run -d -p 80:80 {ホストOS名}:5000/httpd:selfbuild
なお、docker pull実行時に以下のようなエラー
「Error response from daemon: Get "https://ip-10-0-10-220.ap-southeast-2.compute.internal:5000/v2/": http: server gave HTTP response to HTTPS client」
が出た際は、docker pullを実行する別マシンより以下一連のコマンドを実行すると解決できる可能性があります。
$ sudo echo "{"insecure-registries": ["ip-10-0-10-220.ap-southeast-2.compute.internal:5000"]}" > /etc/docker/daemon.json
$ sudo systemctl restart docker
- プラクティスの指示コマンドを実行して確認してください。
$ curl localhost:80
"self build sita image de ugoitemasu"
- プラクティスの指示コマンドを実行してください。
- プラクティスの指示コマンドを実行してください。
- 以下コマンドを実行する。
$ cd ..
$ rm -rf {テストイメージをビルドするためのディレクトリ名}