Open6
Docker

基本コマンド
image削除 (削除対象となるイメージがコンテナ化されていた場合、削除できない)
docker rmi <image id>
# 全イメージ削除
docker rmi $(docker images -q)
コンテナ削除
docker rm <container id>
# 全コンテナ削除
docker system prune
イメージをbuildする
docker build .
# キャッシュなしでbuild
docker build --no-cache .
コンテナ起動してコンテナへ入る
docker run -it <image id> bash
起動してるコンテナ内へ入る
docker exec -it <container id> sh
マウント
docker run -d -v <host>:<container> <image id>
# 例: ホスト側の8080ポートとコンテナ側の8080ポートを繋いで、マウント実行
docker run -d -p 8080:8080 -v ~/Desktop/study/pyramid_study/tasks:/app pyramid-tutorial

ADDについて
- 圧縮ファイル等をコンテナ内へ解凍した状態で入れることができる
適当に圧縮ファイルを作ってやってみる
# dockerfile直下にsample_folderを作成
$ ls
dockerfile sample_folder
# sample_folder内にhelloと記述されたhelloファイルを作成
$ cd sample_folder
$ echo 'hello' > hello
# 圧縮する
$ cd ..
$ tar -cvf compressed.tar sample_folder
sample_folder/
sample_folder/hello
$ ls
compressed.tar dockerfile sample_folder
sample dockerfile
FROM ubuntu:latest
ADD compressed.tar /
buildする
# buildする
docker build .
コンテナ起動
$ docker run -it --rm <image id> bash
/# ls
bin boot dev etc home lib media mnt opt proc root run sample_folder sbin srv sys tmp usr var
/# ls sample_folder/
hello
/# cat sample_folder/hello
hello

build context内にdockerfileがない場合
オプションで-fをつけることでdockerfileの指定が可能
docker build -f <dockerfileパス> .

ENTRYPOINT
- ENTRYPOINTは、run時に上書きできない。
- ENTRYPOINTがある場合は、CMDは["param1", "param2", ...]の形をとる(ENTRYPOINTで指定したコマンドの引数)
- run時に上書きできるのは、CMDの部分のみ
- コンテナをコマンドのようにして使いたいときに使う

コンテナからクライアントのlocalhostへアクセスさせる

Docker内の整理
使用してないコンテナの削除
docker container prune
使用してないイメージの削除
docker image prune