TL;DR
- 記事内で書いていること
- dockerでコンテナ作って壊すコマンド
- container内での操作
- docker networkのつなぎ方
- 記事内で触れてない事
- docker compose
- Kubernetes
起動〜削除
- 起動中のコンテナの情報を表示する
docker ps
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1248ef1b72c5 ubuntu "/bin/bash" 4 seconds ago Up 2 seconds test
-
コンテナ作成(既存ベースから名前をつけて)
docker run -itd --name 名前 ベースイメージ
test
という名前のubuntuベースのコンテナを作る
❯ docker run -itd --name test ubuntu
1248ef1b72c53ba0ab0ff80d68a8787a52076b93e33da2727da1ec31c3a6bc5e
~/applications/docker_practice_qiita/getting-started/app master*
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1248ef1b72c5 ubuntu "/bin/bash" 4 seconds ago Up 2 seconds test
15e29811168f node:12-alpine "docker-entrypoint.s…" 3 hours ago Up 3 hours 0.0.0.0:3000->3000/tcp app_app_1
```
- コンテナ作成(dockerfileから作成)
docker build -t コンテナ名 .
-t
= コンテナに名前をつける - コンテナ起動
docker run -dp 3000:3000 コンテナ名 .
-d
= デタッチモード(裏で起動)
-p 3000:3000
= ポート3000番にマッピングする
-e MYSQL_ROOT_PASSWORD=secret
= 環境変数をコンテナに渡す、環境変数名:MYSQL_ROOT_PASSWORD
、値:secret
- コンテナ停止&削除
docker rm -f <the-container-id>
- 未使用のイメージ、コンテナ、ボリューム、ネットワークの全削除
docker system prune -af
イメージ操作
- 未使用のdocker imgaeを削除する
docker image prune -af
コンテナ操作
- ログを確認する
docker logs -f コンテナ名
- コンテナに入る
docker attach コンテナ名
- コンテナ内でbashを立ち上げる
docker exec -it コンテナ名 bash
- コンテナ内で直接コマンドを実行する
docker exec -it コンテナ名 /bin/echo "hi"
> hi
実行できるコマンドの調べ方
```
❯ ls /bin
[ cp dd expr launchctl mkdir pwd sleep test
bash csh df hostname link mv rm stty unlink
cat dash echo kill ln pax rmdir sync wait4path
chmod date ed ksh ls ps sh tcsh zsh
```
-
コンテナのポート転送確認
docker containter port コンテナ名
-
コンテナのリネーム
docker container rename 古い名前 新しい名前
-
コンテナ内のファイルコピー
docker container cp コンテナ名:ファイルパス(コピー元) ホストのパス(コピー先)
e.g.aggregatorのファイルをローカルにもってくる
docker container cp test_container:/var/app/foobar ~/Desktop/copied
dockerネットワーク
dockerコンテナ同士が通信するときはDockerネットワークを用いている
- ネットワークの一覧表示
docker network ls
docker networkは指定しない場合、bridge
に接続される
-
コンテナのネットワーク確認
docker container inspect コンテナ名
-
ネットワークの作成
docker network create ネットワーク名
-
ネットワークへの接続(後付け)
docker network connct ネットワーク名 コンテナ名
コンテナ名の指定はIPアドレス、コンテナIDでもOK
inspectするとNetworksに追加されている事がわかる❯ docker container inspect test "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, ========中略======== "DriverOpts": null } }
❯ docker network connect todo-app test ❯ docker container inspect test "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, ========中略======== "DriverOpts": null }, "todo-app": { "IPAMConfig": {}, "Links": null, "Aliases": [ "1248ef1b72c5" ], ========中略======== "DriverOpts": {} } ```
-
ネットワークへの接続(作成時に設定)
docker run -itd --name=名前 --net=ネットワーク名 ベースイメージ
-
ネットワークからの切断
docker network disconnect ネットワーク名 コンテナ名
-
ネットワークの詳細確認
docker network inspect ネットワーク名
ネットワークのIPなどが確認できる -
ネットワークからの削除
docker network rm ネットワーク名
参考にさせて頂いた動画
Udemy様の動画を参考に学ばせて頂きました。
所感ですが、初めて学ぶものは書籍より動画とハンズオンで手を動かしていくほうが良いですね。
ゼロからはじめる Dockerによるアプリケーション実行環境構築