LoginSignup
1
0

More than 3 years have passed since last update.

dockerメモ

Last updated at Posted at 2020-11-23

はじめに

この記事は、自分がdockerでよく利用したコマンドを自分用に書き残したものです。

環境

  • macOS Catalina 10.15.7
  • Docker version 19.03.13

Dockerイメージの取得

DockerHub等からimageを取得する。

docker pull ubuntu

イメージの確認

取得したイメージをimagesで取得。

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu-python       latest              91d4b5ba1c2d        4 weeks ago         605MB
ubuntu              18.04               56def654ec22        8 weeks ago         63.2MB

上記の場合、ubuntuとubuntu-pythonというimageがある。

imageの削除

docker rmi [imageID or image名]

ubuntu-pythonを消す場合、

docker rmi ubuntu-python
docker rmi 91d4b5ba1c2d
docker rmi 9

で消すことができる。
IDは前方一致のため、最後のコマンドでは9から始まるimageIDを持つimageがすべて削除される。

Dockerfileからimageを作成

docker build -t [image名]:[TAG名] [Dockerfileのディレクトリ] 

コンテナ(停止した)からimageを作成

docker commit [コンテナ名 or コンテナID] [image名]:[TAG名]

コンテナの起動

作成したimageからコンテナを起動する。

docker run -itd --name [コンテナ名 or コンテナID] [image名]

よく利用するオプションについて

--name [コンテナ名]は省略できますがランダムで名前がつけられます。
-it 標準入出力をコンテナに結びつける(キー入力する場合)。
-d コンテナをバックグランドで実行
-p [ホストのポート]:[コンテナのポート]

コンテナ作成時にボリュームをマウントしたい場合、
(以下例はカレントディレクトリをマウント)

docker run --name myubuntu -itd \
--mount type=volume,src=$(pwd),dst=/vol ubuntu /bin/bash

(-v [ホストDIRの絶対パス]:[コンテナの絶対パス])
上記(-v)の場合、volumeかbindのどちらでマウントされているのかわからない。
ホストとコンテナ間でデータを同期させたいとき(非推奨)は、
--mount type=bind,src=<パス>,dst=<パス>
コンテナにボリュームをマウントしたいときは、
--mount type=volume,src=<ボリューム名>,dst=<パス>

 コンテナの確認

docker ps 

docker ps -aで停止しているものもすべて表示
docker ps -aqで停止しているコンテナも含めコンテナIDを表示

コンテナの停止、再スタート、削除

docker stop [コンテナ名 or コンテナID]  #停止
docker start [コンテナ名 or コンテナID]  #再スタート
docker rm [コンテナ名 or コンテナID]     #削除

コンテナをすべて削除したい場合、

docker rm $(docker ps -aq)

コンテナにログイン

作成したコンテナにログインしてshellを起動する。

docker exec -it [コンテナ名 or コンテナID] bash

コンテナから抜け出す

Ctrl + D または exit と入力すると抜け出せます。

root@b789a85f6d39:/# exit

ログの出力

dockerアプリで出たログを出力して見る。

docker logs [コンテナ名 or コンテナID]

コンテナ情報の確認

指定コンテナに関する全ての情報を取得。

docker inspect [コンテナ名 or コンテナID]

基本的には一部の情報しかいらないので、
--format optionでピンポイントで出力する。

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [コンテナ名 or コンテナID]
## コンテナに割り振られているIPアドレスの取得

--format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
でNetworkSettings.Networks内のIPAddressを取得している。

1
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
1
0