2022/10/02 Updated by

Docker

基本操作


[Up] Japanese English

Docker イメージの操作

イメージの取得

  $ docker pull イメージ名
or
  $ docker pull イメージ名:タグ
or
  $ docker pull イメージID

ダウンロードしたイメージの確認

  $ docker image ls

ダウンロードしたイメージの破棄

  $ docker image rm イメージ名
or
  $ docker image rm イメージID

Docker コンテナの操作

コンテナの作成

  $ docker create  オプション  イメージ名  実行コマンド
or
  $ docker create  オプション  イメージID  実行コマンド

[オプション]
  --name  名前をつける
  --publish, -p : port mapping を指定する (ホストのポート番号:コンテナのポート番号)
  --volume, -v : ボリュームをマウントする (ホストのディレクトリ:コンテナのディレクトリ)

コンテナの開始

  $ docker start コンテナ名
or
  $ docker start コンテナID
[オプション]
    -d   detached (backgroundで実行する)
    -i   interactive モード
    -t   コンテナのプロセスに対して tty を割り当てる。

コンテナの停止

  $ docker stop コンテナ名
or
  $ docker stop コンテナID

コンテナの状態を確認する

  $ docker ps -a

コンテナの状態を破棄する

  $ docker rm コンテナ名

run = ( pull + ) create + start

  $ docker run -dit --name 名前 -p host_port:container_port -v "host_dir:container_dir" イメージ名

コンテナをメインテナンスする

動作中のコンテナで別シェルを起動する

  $ docker exec -it  コンテナ名  /bin/bash

停止中のコンテナでシェルを起動する

  $ docker run --name コンテナ名 -it イメージ名 /bin/bash

コンテナの中と外を行き来する

[detach する]
    Ctr + P
or 
    Ctr + Q

[attachする]
  $ docker attach  コンテナ名

1回だけ動かすコンテナ

「便利なツールがDockerイメージに入っているので、1度だけ動作させてホストのファイルを処理したい」という場合がある。

  1. Go言語のマニュアル
  2. https://go.dev/
  3. Go言語で記述したソースコードを用意する。
  4. ここでは sample/hello.go ファイルを作成した。
    sample/hello.go
    package main
    
    import "fmt"
    
    func main() {
      fmt.Printf("Hello World\n")
    }
    
    [オプション]
      --rm  実効が完了したとき、このコンテナを破棄する
      -v  "$PWD":/usr/src/myapp  ホストの${PWD} をコンテナの /usr/src/myapp としてマウントする。
      -w  /usr/src/myapp    コンテナ内のプログラム "go build -v" を実行するときの作業ディレクトリを指定する。
          ここでは -v オプションでマウントしたフォルダを指定している。
    
  5. ビルドする。
  6. hello.goのビルド
    ubuntu@ip-172-30-2-68:~$ cd sample 
    ubuntu@ip-172-30-2-68:~/sample$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.13 go build -v
    Unable to find image 'golang:1.13' locally
    1.13: Pulling from library/golang
    d6ff36c9ec48: Pull complete
    ...(略)
    16b5038bccc8: Pull complete
    Digest: sha256:8ebb6d5a48deef738381b56b1d4cd33d99a5d608e0d03c5fe8dfa3f68d41a1f8
    Status: Downloaded newer image for golang:1.13
    _/usr/src/myapp
    
  7. 実行ファイルが作成されていることを確認する。
  8. 作成されたファイルの確認
    ubuntu@ip-172-30-2-68:~/sample$ ls
    hello.go  myapp
    
  9. 実行する。
  10. hello.goの実行例
    ubuntu@ip-172-30-2-68:~/sample$ ./myapp
    Hello World