導入方法
主な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