LoginSignup
1
1

More than 3 years have passed since last update.

Dockerコンテナを作成してコンテナ内をうろうろして削除する

Posted at

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によるアプリケーション実行環境構築

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1