dockerのマウントについて。コンテナ内にファイルを配置しておくと、コンテナ削除した時にファイルも失われるので、docker外に保存しておく
例)
apacheコンテナとは別に、HPの中身であるhtmlファイルはコンテナに保存しないで、別に保存する
保存先その1、apacheコンテナを生成する時に、バインドマウント(windowsのローカルフォルダに、ショートカットを作っておくイメージ)
これでFTPやSCPを使わずとも、直接windowsフォルダ・ファイルを修正すれば、webサーバ上も反映される。
http://localhost:8090/
1 |
docker run --name apa000ex20 -d -p 8090:80 -v C:\Users\ユーザー名\Desktop\htdocs:/usr/local/apache2/htdocs httpd |
保存先その2、docker上に、コンテナとは別に、ボリューム生成して、そこにファイルを配置(コンテナ破棄しても消えない)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# コンテナとは別に、ボリューム生成 docker volume create apa000vol1 # apacheコンテナ生成。volumeをアタッチしておく docker run --name apa000ex21 -d -p 8091:80 -v apa000vol1:/usr/local/apache2/htdocs httpd # ボリュームの詳細情報 docker volume inspect apa000vol1 # コンテナ詳細を見て、ちゃんとマウントされているか確認 docker container inspect apa000ex21 #コンテナ停止・削除 docker stop apa000ex21 docker rm apa000ex21 # ボリュームの削除 docker volume rm apa000vol1 |
コンテナからイメージ生成
apacheイメージ → apacheコンテナ → コピーapacheイメージ
1 2 3 4 5 6 7 8 9 10 11 |
# apacheイメージ → apacheコンテナ docker run --name apa000ex22 -d -p 8092:80 httpd # apacheコンテナ → コピーapacheイメージ docker commit apa000ex22 ex22_original1 # イメージが追加されたか確認 docker image ls # イメージ削除 docker image rm ex22_original1 |
Dockerfileからイメージ生成
1, 拡張子なしのDockerfileという名前のテキストファイルを作り、この2行を記述。材料フォルダに配置
FROM httpd
COPY index.html /usr/local/apache2/htdocs
2, buildコマンドで、イメージ生成
1 2 3 4 5 6 7 |
docker build -t ex22_original2 C:\Users\ユーザー名\Desktop\htdocs # ex22_original2が、追加されたか確認 docker image ls # イメージ削除 docker image rm ex22_original2 |
apacheコンテナ内でlinuxコマンドを実行する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# コンテナ生成&起動 docker run --name apa000ex23 -d -p 8089:80 httpd # コンテナ内で、linux実行 docker exec -it apa000ex23 /bin/bash root@744a8e2b15b0:/usr/local/apache2# pwd /usr/local/apache2 root@744a8e2b15b0:/usr/local/apache2# date Fri Mar 15 02:03:40 UTC 2024 root@744a8e2b15b0:/usr/local/apache2# echo hello hello root@744a8e2b15b0:/usr/local/apache2# exit exit |