背景
Dockerイメージからコンテナを立ち上げる方法が毎回「どうやるんだっけ」となっているので、メモしておく。
ちゃんと検証してないので、間違っていたらすみません!自分用のメモです!
結論
foo@gpu:~$ docker run -it --name container_name -d -p 5060:5000 \
-e SOME_ENV=foobar -v /home/foo/bar:/var/bar --restart=unless-stopped \
image_name python /var/bar/baz.py
オプション(or上での文字列) | 何をしているのか |
---|---|
-i |
コンテナの標準入力を開きます。 |
-t |
ttyをつなげます。 |
--name |
コンテナ名を指定します。 |
-d |
コンテナをバックグラウンドで実行します。 |
-p |
ホストとコンテナのポートをつなぎます。(例ではホストの5060とコンテナの5000をつなぐ。) |
-e |
コンテナ内の環境変数を設定します。 |
-v |
マウントします。(例ではホストの/home/foo/bar ディレクトリとコンテナの/var/bar ディレクトリ) |
--restart |
停止した場合に自動再起動するかどうかのオプション(no/on_failure/on_failure:回数n/always/unless-stopped) |
(image_name ) |
利用するDockerイメージ名を指定します。 |
(python /var/bar/baz.py ) |
コンテナで実行するコマンド |
※オプションは他にもありますが、基本的なものを列挙してます。
作ったコンテナに入るのは、以下。
foo@gpu:~$ docker exec -it container_name /bin/bash
補足
docker-compose
で同じことをする場合は、以下のdocker-compose.yml
があるのと同じディレクトリでdocker-compose up -d
を実行します。
docker-compose.yml
version: '3.8'
services:
container_name:
image: image_name
container_name: container_name
stdin_open: true
tty: true
ports:
- 5060:5000
environment:
- SOME_ENV=foobar
volumes:
- /home/foo/bar:/var/bar
restart: unless-stopped
command: python /var/bar/baz.py