Docker コマンド一覧
試してみたコマンド一覧
Dockerfileのビルド
$ docker image build -t [イメージ名]:[タグ名] [Dockerfileのパス]
# 例) docker image build -t test_image:test_tag .
# -t はイメージ名やタグ名を指定するため必須
イメージの操作
$ docker image pull [イメージ名]:[タグ名]
# docker hub からイメージをダウンロード
$ docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# すでにあるイメージなどに別名タグをつける
$ docker image rm IMAGE_ID
# 削除
# エラーが出て消せないけど強制削除する場合は -fをつける
# 全て削除する場合
$ docker images -aq | xargs docker rmi
# これも消せないイメージは -f をつける
# xargsはパイプライン前の結果を引き継ぎコマンドを打てるもの
コンテナの操作
$ docker container ps #動いているコンテナの一覧が見れる
$ docker container ps -a #止まっているコンテナも含めてみれる
$ docker container rm コンテナの名前かID #コンテナの削除
$ docker container run -t イメージの名前かID #コンテナをイメージから作成し、起動
# docker container create
#オプション
-d #バックグラウンドで動かす
-p #ホスト側ポート番号:コンテナ側ポート番号
# 例) -p 9000:8080 だと localhost:9000でコンテナ側の8080にフォワードされる
# --name [名前] # コンテナに名前指定できる。指定しない場合は自動でつく
$ docker container stop 名前かID #コンテナの停止
$ docker container restart 名前かID #コンテナの再起動
$ docker container exec コンテナの名前かID コマンド...
# 起動中のコンテナにコマンド投げれる
# 例)docker container exec -it [コンテナの名前かID] mysql -u root -p test_db
# コンテナに立ち上げたMYSQLにログインして操作
# -it はコンテナに接続した際にSSHみたいに中の動きを表示&コマンド操作できるようにする
# コマンドをbashにするとコンテナ内に入って操作できる。
$ docker container exec -it [コンテナの名前かID] bash
docker-compose
$ docker-compose up -d
#docker-compose.ymlに記述した内容でイメージからビルド、ランなどさせる
$ dokcker-compose down
#docker-composeで起動したコンテナを全て終了させる
docker-compose.yml内容
# jenkinsのイメージは公式をみる
# https://github.com/jenkinsci/docker/blob/master/README.md
# コロンのあとは半角スペースを忘れない
version: "3" #ファイルフォーマットのバージョン
services:
master:
container_name: master #コンテナ名の定義
image: jenkins/jenkins:lts #dockerhubから取得するイメージ:タグ
#ポート
ports:
- 8080:8080 #ホスト側ポート:#コンテナ側ポート
#マウント
volumes:
- ./jenkins_home:/var/jenkins_home #ホスト側ディレクトリ:コンテナ側ディレクトリ
composeの中の項目の一覧はそのうち別でまとめる
docker network
- コンテナ間の通信で使う
$docker network create ネットワーク名 #ネットワーク作成
$docker network ls #ネットワーク一覧表示
$docker network rm ネットワーク名 #ネットワークの削除
$docker network inspect ネットワーク名
#ネットワークの詳細表示 どのコンテナが接続されているか確認できる。
一括削除
$ docker image prune -a #イメージの一括削除
$ docker container prune #コンテナの一括削除
用語
- dind
- docker in docker コンテナ内にコンテナを立てること
そのうち一旦完成予定