2022/10/02 Updated by
Docker
基本操作
[Up]
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度だけ動作させてホストのファイルを処理したい」という場合がある。
- Go言語のマニュアル
https://go.dev/
- Go言語で記述したソースコードを用意する。
ここでは 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 オプションでマウントしたフォルダを指定している。
- ビルドする。
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
|
- 実行ファイルが作成されていることを確認する。
作成されたファイルの確認 |
ubuntu@ip-172-30-2-68:~/sample$ ls
hello.go myapp
|
- 実行する。
hello.goの実行例 |
ubuntu@ip-172-30-2-68:~/sample$ ./myapp
Hello World
|