dockerコマンド

2018-07-02

docker

すぐ忘れちゃうのでよく使用するdocker系コマンドをつらつら書き留めておく

Dockerについては我らが「さくらのナレッジ」が超参考になる

$ docker -v
Docker version 18.03.1-ce, build 9ee9f40
$ docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3

docker と docker-compose のインストール

centosにインストールした際の作業ログ

公式(docker, compose)に書いてあることやっただけ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 $ sudo yum remove docker \
     docker-client \
     docker-client-latest \
     docker-common \
     docker-latest \
     docker-latest-logrotate \
     docker-logrotate \
     docker-engine
 $ sudo yum install -y yum-utils
 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 $ sudo yum install docker-ce docker-ce-cli containerd.io
 $ docker --version
 $ sudo systemctl start docker
 $ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 $ sudo chmod +x /usr/local/bin/docker-compose
 $ docker-compose --version

docker-composeを使ったビルド

キャッシュを使わずイチからビルド

1
docker-compose build --no-cache

不要なボリュームの一覧

不要なコンテナイメージ

1
docker volume ls -f "dangling=true" -q

volumeをいっこ削除

1
docker volume rm [VOLUME NAME]

不要なボリュームを全て削除(合体)

1
docker volume ls -f "dangling=true" -q | xargs docker volume rm

コンテナのID一覧

1
docker ps -aq

コンテナ全削除

1
docker ps -aq | xargs docker rm

イメージの全削除

1
docker images --format "{{.Repository}}:{{.Tag}}" | xargs docker rmi

または

1
docker images --format "{{IMAGE ID}}" | xargs docker rmi

docker plune

使用していないオブジェクトの削除には prune コマンドが用意されてた
こっち使うようにしよう

1
2
3
4
$ docker container prune
$ docker image prune
$ docker volume prune
$ docker network prune

imageをエクスポート

イメージファイルを作るよ

1
docker save [IMAGE_ID] -o [FILE_NAME]

imageをインポート

作ったイメージファイルをdockerに取り込むよ

1
docker load -i [FILE_NAME]

dockerコンテナにログイン

シェルを実行しちゃう

1
docker exec -it [CONTAINER_NAME] /bin/bash

稼働中のコンテナにアタッチ

1
docker attach [CONTAINER_NAME]

抜けるときは Ctrl+p -> Ctrl+q
キルのシグナルはコンテナをダウンさせるので注意

docker-compose

アプリの開発では単一コンテナではなく、コンポーザーを使用して本番環境を模すことが多いでしょ。

ファイルを指定してbuildしたりupしたり

1
2
docker-compose -f docker-compose-xxxxx.yml build --no-cache --progress plain
docker-compose -f docker-compose-xxxxx.yml up

大きな変更があるときは --no-cache つけるといいかも
--progress plain はDockerfileの進捗を詳細に表示する

rails coneole(exec)

たまにカーソルの位置がバグるキモい挙動するので後述するrun バージョンの方がいいかも

1
docker-compose exec [CONTAINER_NAME] rails console

rails coneole(run)

execのような問題が起きたことはないが、新しくコンテナを起動するので若干時間がかかるのかも。
下の例はすでにdocker-compose upされている前提です
依存コンテナ(dbとか)が起動してないなら--no-depsを外せばいいと思う

1
docker-compose run --no-deps -e RAILS_ENV=development [CONTAINER_NAME] bundle exec rails console

コメント

投稿する

投稿したコメントはご自身で削除できません

不適切なコメントと判断した場合は管理側で削除することがあります