新たなコンテナ起動

記事の内容

概要

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

このオプションは、コンテナを対話的なモードで実行するためのオプションです。
※ユーザーはコンテナ内のシェルなどのプロセスに対話的にアクセスすることがでる

-i : コンテナの標準入力に接続する
-t : 擬似ターミナルを割り当てる

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
記事の内容
閉じる