トップページ > コンテンツ > 環境設定 > Docker関連

導入方法

ほぼ公式ドキュメントままでいけたので割愛。
https://docs.docker.com/engine/install/

主なDockerコマンド

リポジトリとローカルのイメージとコンテナとかにコマンドの位置づけを分けて考えると
全体像を捉えやすいかもしれない。

事前準備(用語整理)

リポジトリ DockerHub
イメージ DockerEngine:/var/lib/docker/image

リポジトリ=>イメージ関連のコマンド

docker search 検索
docker pull イメージの取得

イメージ関連のコマンド

docker images イメージの一覧
docker rmi コンテナイメージの削除

イメージ=>コンテナ関連のコマンド

docker run コンテナ作成
docker create コンテナ作成(起動しない)

コンテナ関連のコマンド

docker rm コンテナ削除
docker logs コンテナログ
docker start コンテナの起動
docker pause コンテナの中断
docker stop コンテナの停止
docker restart コンテナの再起動
docker ps コンテナ状態の表示。-aオプションで停止中のものも。
docker stats コンテナのリソース情報表示
docker attach 起動コンテナに標準入出力をアタッチする
docker exec 起動コンテナに対するコマンド実行
docker cp コンテナホスト間のファイル・ディレクトリコピー
docker import docker exportで作成したtarファイルを展開
docker export コンテナをtarファイルに保存。使用頻度はdocker saveよりは低いかも

コンテナ=>イメージ関連のコマンド

docker build イメージの自動構築(自動commit)
docker commit イメージの作成

イメージ関連のコマンド

docker inspect コンテナやイメージの調査
docker history イメージの履歴表示
docker diff 元イメージとコンテナの差分表示
docker tag イメージをタグ付け
docker load docker saveで作成したtarファイルを展開
docker save イメージをtarファイルに保存

イメージ=>レジストリ関連のコマンド

docker login ログイン
docker push イメージの送信

その他

docker info DockerやOS、カーネル情報の確認
docker version バージョン表示
docker attach 稼動コンテナへの接続
docker network ネットワークを作成。コンテナ間通信で使えたりする

dockerfile

ある程度の処理内容をDockerfileに記述することで、
コンテナからyum installのようなコマンドを一々叩かなくても自動構築できる。

1.使い方
ローカルディレクトリにあるファイルをDockerデーモンに送る。
docker build -t ユーザ名/イメージ名 Dockerファイルのあるディレクトリ
上記によりdockerイメージが生成されるので、後はそのままdocker runでコンテナを実行すると良い。

2.dockerファイルの書き方
FROM イメージ名 ベースとするイメージを定義
RUN 新イメージ作成に必要となる実行コマンドを記載
COPY ローカルファイル コンテナパス ローカルファイルをコンテナパスにコピー
CMD コンテナ起動時に実行するコマンドを記載

■例

コンテナの組み合わせ

コンテナ同士はポートでつなぐことができる。
尚、Docker同士の組み合わせを考える時は、docker-composeやkubernetes等の使い方を参照したい。

■docker-compose

1.docker network create ネットワーク名でネットワーク作成
2.プロセスAでdocker run -network ネットワークに所属
3.プロセスBでdocker run -network ネットワークに所属
4.プロセスAのdocker停止
5.プロセスBのdocker停止
の記述を
1.docker-compose up -d
2.docker-compose stop
にするらしい。

そのためにdocker-compose.ymlを書く。

■kubernetes

kubernetesではkubectlというCLIコマンドとmanifestと呼ばれるどDockerを組み合わせて構築させるかを記述するyamlファイルを使うことで構築を行う。

作成:create/apply
読取:get/describe
実行:exec


独自レジストリを立てる

SSL認証有の場合はこちらのサイトがわかりやすそう。SSL認証無しの場合は以下の感じになる。

■独自レジストリサーバ
1.Dockerのインストール
2.レジストリ用コンテナの入手
docker pull resgistry:バージョン
3.レジストリ用コンテナの起動
docker run -d -p 5000:5000 -v 任意のパス:/var/lib/registry registry:バージョン -e REGISTRY_STORAGE_DELETE_ENABLED=True
※ホスト側の任意のパスの場所で、リポジトリ関連のファイルが管理される。
※REGISTRY_STORAGE_DELETE_ENABLEDは削除できるようにするおまじない。

■クライアント側設定
1.クライアント側もSSL認証無の設定にする。
$ sudo vi /etc/docker/daemon.json
{“insecure-registries”:[“レジストリ用サーバのIPアドレス:5000”]}
2.Dockerデーモン再起動による設定反映。
sudo service docker restart
※上記設定を行わずに、そのまま利用しようとすると「server gave HTTP response to HTTPS client(サーバ側はHTTP通信だけど、クライアントはHTTPSで通信しようとしているの意)」エラーになってしまう、

■利用方法
1.リポジトリ登録用イメージ準備
docker tag メージ名:タグ レジストリのIP:5000/リポジトリ名/イメージ名:タグ
2.pushする
docker push レジストリのIP:5000/リポジトリ名/イメージ名:タグ
最終更新:2022年02月27日 22:25