Open6

Docker

RR

基本コマンド

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
RR

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
RR

build context内にdockerfileがない場合

オプションで-fをつけることでdockerfileの指定が可能

docker build -f <dockerfileパス> .
RR

ENTRYPOINT

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

Docker内の整理

使用してないコンテナの削除

docker container prune

使用してないイメージの削除

docker image prune