導入方法
主なDockerコマンド
リポジトリとローカルのイメージとコンテナとかにコマンドの位置づけを分けて考えると
全体像を捉えやすいかもしれない。
事前準備(用語整理)
リポジトリ |
DockerHub |
イメージ |
DockerEngine:/var/lib/docker/image |
リポジトリ=>イメージ関連のコマンド
docker search |
検索 |
docker pull |
イメージの取得 |
イメージ関連のコマンド
docker images |
イメージの一覧 |
docker rmi |
コンテナイメージの削除 |
イメージ=>コンテナ関連のコマンド
コンテナ関連のコマンド
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