その12:イメージのクリーンアップ・検索のつづき。
ファイルに落として、それを移設、それを取り込む方法。
save サブコマンド、load サブコマンドが使える。
Dockerfile を作成する。
$ mkdir demo_save_load
$ cd demo_save_load
$ vim Dockerfile
FROM busybox
RUN touch test.txt
CMD ["/bin/sh"]
イメージをビルドする。
$ docker build -t testapp .
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM busybox
latest: Pulling from library/busybox
205dae5015e7: Pull complete
Digest: sha256:7b3ccabffc97de872a30dfd234fd972a66d247c8cfc69b0550f276481852627c
Status: Downloaded newer image for busybox:latest
---> 66ba00ad3de8
Step 2/3 : RUN touch test.txt
---> Running in e6bb2e057e51
Removing intermediate container e6bb2e057e51
---> 12a57073a54f
Step 3/3 : CMD ["/bin/sh"]
---> Running in d1ffd528eccd
Removing intermediate container d1ffd528eccd
---> 6a2179d8bb73
Successfully built 6a2179d8bb73
Successfully tagged testapp:latest
イメージが作成されたか確認する。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
testapp latest 6a2179d8bb73 About a minute ago 4.87MB
my_ubuntu latest cf29e08b3975 3 hours ago 77.8MB
<none> <none> 5e443cc82858 39 hours ago 175MB
<none> <none> ede4075dc036 40 hours ago 175MB
nginx latest 3f8a00f137a0 10 days ago 142MB
mysql latest 57da161f45ac 11 days ago 517MB
ubuntu latest 58db3edaf2be 3 weeks ago 77.8MB
busybox latest 66ba00ad3de8 6 weeks ago 4.87MB
作成したイメージをファイルに書き出す。
$ docker save testapp > testapp.tar
$ ls -l testapp.tar
-rw-r--r-- 1 xxx xxx 5110784 Feb 19 22:32 testapp.tar
vm インスタンスから exit して、project にもどり(cloud shell にもどり)、scp コマンドで、vm インスタンスからデータをコピーする。
$ gcloud compute scp --project <project-id> --zone asia-northeast1-b docker-test:/home/<username>/demo_save_load/testapp.tar .
Cloud Storage にアップロードする。
$ gsutil cp testapp.tar gs://<storage name>
Copying gs://<storage name>/testapp.tar...
- [1 files][ 4.9 MiB/ 4.9 MiB]
Operation completed over 1 objects/4.9 MiB.
これを、手元の Docker がインストールされているマシンにダウンロードする。
testapp.tar を移設する。移設先(ホストマシン)での作業。
$ docker load < testapp.tar
$ docker load < testapp.tar
b64792c17e4a: Loading layer [==================================================>] 5.096MB/5.096MB
90b9248c90cc: Loading layer [==================================================>] 1.536kB/1.536kB
Loaded image: testapp:latest
イメージが出来たか確認する。
移設先(ホストマシン)での作業。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
testapp latest 6a2179d8bb73 16 minutes ago 4.87MB
nginx latest 3f8a00f137a0 10 days ago 142MB
bitnami/mariadb 10.6 b71bec10debb 2 months ago 339MB
bitnami/moodle 4 e1dfb360afb8 2 months ago 618MB
Google Cloud の Container Optimized-os 上で作成したイメージを、ホストマシンに移設することができた。
ビルドキャッシュ
以下、vm の Docker マシンにもどる。
$ mkdir demo_buildcache
$ cd demo_buildcache
$ vim Dockerfile
FROM python:3.7-slim-buster
COPY . .
RUN pip install --quiet -r requirements.txt
ENTRYPOINT ["python", "server.py"]
$ vim requirements.txt
certifi==2022.12.07
chardet==3.0.4
Click==7.0
cycler==0.10.0
decorator==4.3.0
defusedxml==0.5.0
スクラッチからビルド
$ docker build -t without-cache .
Sending build context to Docker daemon 3.072kB
Step 1/4 : FROM python:3.7-slim-buster
3.7-slim-buster: Pulling from library/python
29cd48154c03: Pull complete
2c59e55cfd71: Pull complete
6238b0f1f415: Pull complete
4f0b0ef0a468: Pull complete
b62a1b99a09f: Pull complete
Digest: sha256:1a88815950a79b39c3b9e8e8d310cbc7d52fe0bf77505a2765f43d7e397f70b3
Status: Downloaded newer image for python:3.7-slim-buster
---> 13b871171c6e
Step 2/4 : COPY . .
---> e7b5ebfc3742
Step 3/4 : RUN pip install --quiet -r requirements.txt
---> Running in 88164192d9d6
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 23.0.1 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container 88164192d9d6
---> b72c2e698fe2
Step 4/4 : ENTRYPOINT ["python", "server.py"]
---> Running in c104ab157c97
Removing intermediate container c104ab157c97
---> 544b0330e592
Successfully built 544b0330e592
Successfully tagged without-cache:latest
ビルドできたか確認する。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
without-cache latest 544b0330e592 About a minute ago 124MB
testapp latest 6a2179d8bb73 29 minutes ago 4.87MB
my_ubuntu latest cf29e08b3975 3 hours ago 77.8MB
<none> <none> 5e443cc82858 40 hours ago 175MB
<none> <none> ede4075dc036 40 hours ago 175MB
python 3.7-slim-buster 13b871171c6e 10 days ago 115MB
nginx latest 3f8a00f137a0 10 days ago 142MB
mysql latest 57da161f45ac 11 days ago 517MB
ubuntu latest 58db3edaf2be 3 weeks ago 77.8MB
busybox latest 66ba00ad3de8 6 weeks ago 4.87MB
ビルドキャッシュを活用してイメージを作成する。
$ docker build -t wit-cache .
Sending build context to Docker daemon 3.072kB
Step 1/4 : FROM python:3.7-slim-buster
---> 13b871171c6e
Step 2/4 : COPY . .
---> Using cache
---> e7b5ebfc3742
Step 3/4 : RUN pip install --quiet -r requirements.txt
---> Using cache
---> b72c2e698fe2
Step 4/4 : ENTRYPOINT ["python", "server.py"]
---> Using cache
---> 544b0330e592
Successfully built 544b0330e592
Successfully tagged wit-cache:latest
ビルドのスピードが速かった。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wit-cache latest 544b0330e592 2 minutes ago 124MB
without-cache latest 544b0330e592 2 minutes ago 124MB
testapp latest 6a2179d8bb73 30 minutes ago 4.87MB
my_ubuntu latest cf29e08b3975 3 hours ago 77.8MB
<none> <none> 5e443cc82858 40 hours ago 175MB
<none> <none> ede4075dc036 40 hours ago 175MB
python 3.7-slim-buster 13b871171c6e 10 days ago 115MB
nginx latest 3f8a00f137a0 10 days ago 142MB
mysql latest 57da161f45ac 11 days ago 517MB
ubuntu latest 58db3edaf2be 3 weeks ago 77.8MB
busybox latest 66ba00ad3de8 6 weeks ago 4.87MB
with-cache のつもりが、typo してしまった。。
その14:ネットワークの概要につづく。