0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker の実験(その13:イメージの移設・ビルド(レイヤ)キャッシュ)

Last updated at Posted at 2023-02-19

その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:ネットワークの概要につづく。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?