記事の内容
概要
runコマンドは、Dockerコンテナを起動するために使用される主要なコマンドの1つです。
run
記述
docker container run イメージ
【nginxコンテナ作成】
$ docker container run nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/05/05 06:50:22 [notice] 1#1: using the "epoll" event method
2024/05/05 06:50:22 [notice] 1#1: nginx/1.25.5
2024/05/05 06:50:22 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
2024/05/05 06:50:22 [notice] 1#1: OS: Linux 5.15.49-linuxkit
2024/05/05 06:50:22 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/05/05 06:50:22 [notice] 1#1: start worker processes
2024/05/05 06:50:22 [notice] 1#1: start worker process 29
2024/05/05 06:50:22 [notice] 1#1: start worker process 30
2024/05/05 06:50:22 [notice] 1#1: start worker process 31
2024/05/05 06:50:22 [notice] 1#1: start worker process 32
【別タブでコンテナ確認】
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d063a9f3aa9e nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 80/tcp magical_ritchie
オプション一覧
オプション | 説明 |
---|---|
-d | コンテナをバックグラウンドで実行 |
-p | ホストとコンテナの間のポートマッピングを設定 |
-e | 環境変数を設定 |
-it | 対話的なモードでコンテナを実行 |
–name | コンテナに名前を付ける |
-d
このオプションを使用すると、コンテナがバックグラウンドで実行され、現在のシェルの制御を返します。
※同一シェルで作業が可能
run -d
記述
docker container run -d イメージ
$ docker container run -d nginx
84082cbaf29c63eeb5dd1c0628c155cfad2bcc361adfcb336c8b3c5690991415
【name指定がない場合はdockerが自動で確定】
$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
84082cbaf29c nginx "/docker-entrypoint.…" 18seconds ago Up 17 seconds 80/tcp quirky_pike
-p
このオプションは、ポートマッピングの設定に関するオプションです。
run -p
記述
docker container run -d ポートマッピング イメージ
【ポート指定とバックグラウンド作成】
$ docker container run -p 8080:80 -d nginx
000bcce500736176775de3cf14634a96c7062ac56a878375fda21a74f8de94f3
$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
000bcce50073 nginx "/docker-entrypoint.…" 5 seconds ago Up 5 seconds 0.0.0.0:8080->80/tcp exciting_visvesvaraya
ポート番号80をホストのポート8080にマッピングしてnginxコンテナを起動
※10moji-blog.com:8080で接続可能
-e
このオプションは、コンテナ内で実行されるプロセスに環境変数を渡すことができます。
run -e
記述
docker container run -e 環境変数指定
【変数指定(パスワード)】
$ docker container run -e MYSQL_ROOT_PASSWORD=12345 -d mysql
6b0a98083b47c91a439c4ae7c377b1d19b0aa9ab05ba838d9ea7f0a71d69e6ed
【mysqlのコンテナID確認】
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b0a98083b47 mysql "docker-entrypoint.s…" 16 seconds ago Up 16 seconds 3306/tcp, 33060/tcp nostalgic_bose
【コンテナ接続からのDB接続】
$ docker exec -it 6b0a98083b47 bash
bash-4.4# mysql -u root -p12345
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.4.0 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
【DB確認】
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
-it
このオプションは、コンテナを対話的なモードで実行するためのオプションです。
※ユーザーはコンテナ内のシェルなどのプロセスに対話的にアクセスすることがでる
run -it
記述
docker container run -it イメージ
【ubuntuコンテナ接続】
$ docker container run -it ubuntu
root@5196b99d256c:/# ll
total 56
drwxr-xr-x 1 root root 4096 May 4 08:24 ./
drwxr-xr-x 1 root root 4096 May 4 08:24 ../
-rwxr-xr-x 1 root root 0 May 4 08:24 .dockerenv*
lrwxrwxrwx 1 root root 7 Apr 22 13:08 bin -> usr/bin/
drwxr-xr-x 2 root root 4096 Apr 22 13:08 boot/
drwxr-xr-x 5 root root 360 May 4 08:24 dev/
drwxr-xr-x 1 root root 4096 May 4 08:24 etc/
drwxr-xr-x 3 root root 4096 Apr 23 15:35 home/
lrwxrwxrwx 1 root root 7 Apr 22 13:08 lib -> usr/lib/
drwxr-xr-x 2 root root 4096 Apr 23 15:30 media/
drwxr-xr-x 2 root root 4096 Apr 23 15:30 mnt/
drwxr-xr-x 2 root root 4096 Apr 23 15:30 opt/
dr-xr-xr-x 205 root root 0 May 4 08:24 proc/
drwx------ 2 root root 4096 Apr 23 15:35 root/
drwxr-xr-x 4 root root 4096 Apr 23 15:35 run/
lrwxrwxrwx 1 root root 8 Apr 22 13:08 sbin -> usr/sbin/
drwxr-xr-x 2 root root 4096 Apr 23 15:30 srv/
dr-xr-xr-x 13 root root 0 Apr 28 04:39 sys/
drwxrwxrwt 2 root root 4096 Apr 23 15:35 tmp/
drwxr-xr-x 11 root root 4096 Apr 23 15:30 usr/
drwxr-xr-x 11 root root 4096 Apr 23 15:35 var/
name
このオプションは、コンテナに名前を明示的に付けるためのオプションです。
※名前をつけないとランダムネームがつけられる
run –name
記述
docker container run –name コンテナ名 イメージ
【コンテナ名を指定】
$ docker container run --name hello hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
【コンテナ名を確認】
docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
717ad1b6c5c8 hello-world "/hello" 1 seconds ago Exited (0) 8 seconds ago hello