试着在不使用docker-compose的情况下运行多个容器
首先
为了学习Docker,我尝试创建了一个通过网络连接多个容器的环境。
虽然有很多使用docker-compose的示例,但是这次为了理解网络和卷的概念,我选择了不使用docker-compose来创建。
出来上がり的想象
试试看
网络
$ docker network create wp_network01
45c7e17407c45a01b07e5ae20bc7cebfe4064c787286bc2bd8672408651193da
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
45c7e17407c4 wp_network01 bridge local
音量
$ docker volume create db-data
db-data
$ docker volume create wp-data
wp-data
$ docker volume ls
DRIVER VOLUME NAME
local db-data
local wp-data
$ docker volume inspect db-data
[
{
"CreatedAt": "2022-08-20T00:40:11Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/db-data/_data",
"Name": "db-data",
"Options": {},
"Scope": "local"
}
]
$ docker volume inspect wp-data
[
{
"CreatedAt": "2022-08-20T00:40:18Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/wp-data/_data",
"Name": "wp-data",
"Options": {},
"Scope": "local"
}
]
MySQL容器
$ docker run --restart=always --name mysql01 -dit --net=wp_network01 -v db-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=db -e MYSQL_USER=user -e MYSQL_PASSWORD=pass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
32c1bf40aba1: Pull complete
3ac22f3a638d: Pull complete
~~(省略)~~
857b301f5e480b5eaca2b5f968597ca5d3ca0483153c0473e5d267dc8ae51a74
オプション一覧
オプション
意味合い
設定値
–restart
再起動オプション
always
–net
ネットワーク名(作成したネットワーク名を指定)
wp_network01
-v
ボリューム名(作成したボリューム名:コンテナ内のディレクトリ)
db-data:/var/lib/mysql
–name
MySQLコンテナ名
mysql01
-e MYSQL_ROOT_PASSWORD
MySQLのrootパスワード
root
-e MYSQL_DATABASE
MySQLのデータベース名
db
-e MYSQL_USER
MySQLのユーザ名
user
-e MYSQL_PASSWORD
MySQLのパスワード
pass
引数一覧
引数
設定値
意味合い
–character-set-server
utf8mb4
文字コードをUTF-8にする
–collation-server
utf8mb4_unicode_ci
照合順序をUTF-8にする
–default-authentication-plugin
mysql_native_password
認証方式を旧式にする(WordPressは新方式をサポートしていないため)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
857b301f5e48 mysql "docker-entrypoint.s…" 31 seconds ago Up 30 seconds 3306/tcp, 33060/tcp mysql01
WordPress容器
$ docker run --restart=always --name wordpress01 -dit --net=wp_network01 -v wp-data:/var/www/html -p 8080:80 -e WORDPRESS_DB_HOST=mysql01 -e WORDPRESS_DB_NAME=db -e WORDPRESS_DB_USER=user -e WORDPRESS_DB_PASSWORD=pass wordpress
Unable to find image 'wordpress:latest' locally
latest: Pulling from library/wordpress
1efc276f4ff9: Pull complete
3239fd0772e9: Pull complete
~~(省略)~~
74151d1d4ea6f2c606d65d42a7a40f3e8421a074b00744cf799b8c711d28ad06
オプション一覧
オプション
意味合い
設定値
–restart
再起動オプション
always
–net
ネットワーク名(作成したネットワーク名を指定)
wp_network01
-v
ボリューム名(作成したボリューム名:コンテナ内のディレクトリ)
wp-data:/var/www/html
–name
WordPressコンテナ名
wordpress01
-p
ポート番号
8080:80
-e WORDPRESS_DB_HOST
DBのコンテナ名(作成したMySQLのもの)
mysql01
-e WORDPRESS_DB_NAME
DBの名称(作成したMySQLのもの)
db
-e WORDPRESS_DB_USER
DBのユーザ名(作成したMySQLのもの)
user
-e WORDPRESS_DB_PASSWORD
DBのパスワード(作成したMySQLのもの)
pass
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74151d1d4ea6 wordpress "docker-entrypoint.s…" 4 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp wordpress01
857b301f5e48 mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp mysql01
访问 http://localhost:8080/

试试看
网络
$ docker network create wp_network01
45c7e17407c45a01b07e5ae20bc7cebfe4064c787286bc2bd8672408651193da
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
45c7e17407c4 wp_network01 bridge local
音量
$ docker volume create db-data
db-data
$ docker volume create wp-data
wp-data
$ docker volume ls
DRIVER VOLUME NAME
local db-data
local wp-data
$ docker volume inspect db-data
[
{
"CreatedAt": "2022-08-20T00:40:11Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/db-data/_data",
"Name": "db-data",
"Options": {},
"Scope": "local"
}
]
$ docker volume inspect wp-data
[
{
"CreatedAt": "2022-08-20T00:40:18Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/wp-data/_data",
"Name": "wp-data",
"Options": {},
"Scope": "local"
}
]
MySQL容器
$ docker run --restart=always --name mysql01 -dit --net=wp_network01 -v db-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=db -e MYSQL_USER=user -e MYSQL_PASSWORD=pass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
32c1bf40aba1: Pull complete
3ac22f3a638d: Pull complete
~~(省略)~~
857b301f5e480b5eaca2b5f968597ca5d3ca0483153c0473e5d267dc8ae51a74
オプション一覧
オプション
意味合い
設定値
–restart
再起動オプション
always
–net
ネットワーク名(作成したネットワーク名を指定)
wp_network01
-v
ボリューム名(作成したボリューム名:コンテナ内のディレクトリ)
db-data:/var/lib/mysql
–name
MySQLコンテナ名
mysql01
-e MYSQL_ROOT_PASSWORD
MySQLのrootパスワード
root
-e MYSQL_DATABASE
MySQLのデータベース名
db
-e MYSQL_USER
MySQLのユーザ名
user
-e MYSQL_PASSWORD
MySQLのパスワード
pass
引数一覧
引数
設定値
意味合い
–character-set-server
utf8mb4
文字コードをUTF-8にする
–collation-server
utf8mb4_unicode_ci
照合順序をUTF-8にする
–default-authentication-plugin
mysql_native_password
認証方式を旧式にする(WordPressは新方式をサポートしていないため)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
857b301f5e48 mysql "docker-entrypoint.s…" 31 seconds ago Up 30 seconds 3306/tcp, 33060/tcp mysql01
WordPress容器
$ docker run --restart=always --name wordpress01 -dit --net=wp_network01 -v wp-data:/var/www/html -p 8080:80 -e WORDPRESS_DB_HOST=mysql01 -e WORDPRESS_DB_NAME=db -e WORDPRESS_DB_USER=user -e WORDPRESS_DB_PASSWORD=pass wordpress
Unable to find image 'wordpress:latest' locally
latest: Pulling from library/wordpress
1efc276f4ff9: Pull complete
3239fd0772e9: Pull complete
~~(省略)~~
74151d1d4ea6f2c606d65d42a7a40f3e8421a074b00744cf799b8c711d28ad06
オプション一覧
オプション
意味合い
設定値
–restart
再起動オプション
always
–net
ネットワーク名(作成したネットワーク名を指定)
wp_network01
-v
ボリューム名(作成したボリューム名:コンテナ内のディレクトリ)
wp-data:/var/www/html
–name
WordPressコンテナ名
wordpress01
-p
ポート番号
8080:80
-e WORDPRESS_DB_HOST
DBのコンテナ名(作成したMySQLのもの)
mysql01
-e WORDPRESS_DB_NAME
DBの名称(作成したMySQLのもの)
db
-e WORDPRESS_DB_USER
DBのユーザ名(作成したMySQLのもの)
user
-e WORDPRESS_DB_PASSWORD
DBのパスワード(作成したMySQLのもの)
pass
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74151d1d4ea6 wordpress "docker-entrypoint.s…" 4 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp wordpress01
857b301f5e48 mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp mysql01
访问 http://localhost:8080/
$ docker network create wp_network01
45c7e17407c45a01b07e5ae20bc7cebfe4064c787286bc2bd8672408651193da
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
45c7e17407c4 wp_network01 bridge local
音量
$ docker volume create db-data
db-data
$ docker volume create wp-data
wp-data
$ docker volume ls
DRIVER VOLUME NAME
local db-data
local wp-data
$ docker volume inspect db-data
[
{
"CreatedAt": "2022-08-20T00:40:11Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/db-data/_data",
"Name": "db-data",
"Options": {},
"Scope": "local"
}
]
$ docker volume inspect wp-data
[
{
"CreatedAt": "2022-08-20T00:40:18Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/wp-data/_data",
"Name": "wp-data",
"Options": {},
"Scope": "local"
}
]
MySQL容器
$ docker run --restart=always --name mysql01 -dit --net=wp_network01 -v db-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=db -e MYSQL_USER=user -e MYSQL_PASSWORD=pass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
32c1bf40aba1: Pull complete
3ac22f3a638d: Pull complete
~~(省略)~~
857b301f5e480b5eaca2b5f968597ca5d3ca0483153c0473e5d267dc8ae51a74
オプション一覧
オプション
意味合い
設定値
–restart
再起動オプション
always
–net
ネットワーク名(作成したネットワーク名を指定)
wp_network01
-v
ボリューム名(作成したボリューム名:コンテナ内のディレクトリ)
db-data:/var/lib/mysql
–name
MySQLコンテナ名
mysql01
-e MYSQL_ROOT_PASSWORD
MySQLのrootパスワード
root
-e MYSQL_DATABASE
MySQLのデータベース名
db
-e MYSQL_USER
MySQLのユーザ名
user
-e MYSQL_PASSWORD
MySQLのパスワード
pass
引数一覧
引数
設定値
意味合い
–character-set-server
utf8mb4
文字コードをUTF-8にする
–collation-server
utf8mb4_unicode_ci
照合順序をUTF-8にする
–default-authentication-plugin
mysql_native_password
認証方式を旧式にする(WordPressは新方式をサポートしていないため)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
857b301f5e48 mysql "docker-entrypoint.s…" 31 seconds ago Up 30 seconds 3306/tcp, 33060/tcp mysql01
WordPress容器
$ docker run --restart=always --name wordpress01 -dit --net=wp_network01 -v wp-data:/var/www/html -p 8080:80 -e WORDPRESS_DB_HOST=mysql01 -e WORDPRESS_DB_NAME=db -e WORDPRESS_DB_USER=user -e WORDPRESS_DB_PASSWORD=pass wordpress
Unable to find image 'wordpress:latest' locally
latest: Pulling from library/wordpress
1efc276f4ff9: Pull complete
3239fd0772e9: Pull complete
~~(省略)~~
74151d1d4ea6f2c606d65d42a7a40f3e8421a074b00744cf799b8c711d28ad06
オプション一覧
オプション
意味合い
設定値
–restart
再起動オプション
always
–net
ネットワーク名(作成したネットワーク名を指定)
wp_network01
-v
ボリューム名(作成したボリューム名:コンテナ内のディレクトリ)
wp-data:/var/www/html
–name
WordPressコンテナ名
wordpress01
-p
ポート番号
8080:80
-e WORDPRESS_DB_HOST
DBのコンテナ名(作成したMySQLのもの)
mysql01
-e WORDPRESS_DB_NAME
DBの名称(作成したMySQLのもの)
db
-e WORDPRESS_DB_USER
DBのユーザ名(作成したMySQLのもの)
user
-e WORDPRESS_DB_PASSWORD
DBのパスワード(作成したMySQLのもの)
pass
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74151d1d4ea6 wordpress "docker-entrypoint.s…" 4 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp wordpress01
857b301f5e48 mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp mysql01
访问 http://localhost:8080/
$ docker volume create db-data
db-data
$ docker volume create wp-data
wp-data
$ docker volume ls
DRIVER VOLUME NAME
local db-data
local wp-data
$ docker volume inspect db-data
[
{
"CreatedAt": "2022-08-20T00:40:11Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/db-data/_data",
"Name": "db-data",
"Options": {},
"Scope": "local"
}
]
$ docker volume inspect wp-data
[
{
"CreatedAt": "2022-08-20T00:40:18Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/wp-data/_data",
"Name": "wp-data",
"Options": {},
"Scope": "local"
}
]
$ docker run --restart=always --name mysql01 -dit --net=wp_network01 -v db-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=db -e MYSQL_USER=user -e MYSQL_PASSWORD=pass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
32c1bf40aba1: Pull complete
3ac22f3a638d: Pull complete
~~(省略)~~
857b301f5e480b5eaca2b5f968597ca5d3ca0483153c0473e5d267dc8ae51a74
-
オプション一覧
-
引数一覧
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
857b301f5e48 mysql "docker-entrypoint.s…" 31 seconds ago Up 30 seconds 3306/tcp, 33060/tcp mysql01
WordPress容器
$ docker run --restart=always --name wordpress01 -dit --net=wp_network01 -v wp-data:/var/www/html -p 8080:80 -e WORDPRESS_DB_HOST=mysql01 -e WORDPRESS_DB_NAME=db -e WORDPRESS_DB_USER=user -e WORDPRESS_DB_PASSWORD=pass wordpress
Unable to find image 'wordpress:latest' locally
latest: Pulling from library/wordpress
1efc276f4ff9: Pull complete
3239fd0772e9: Pull complete
~~(省略)~~
74151d1d4ea6f2c606d65d42a7a40f3e8421a074b00744cf799b8c711d28ad06
オプション一覧
オプション
意味合い
設定値
–restart
再起動オプション
always
–net
ネットワーク名(作成したネットワーク名を指定)
wp_network01
-v
ボリューム名(作成したボリューム名:コンテナ内のディレクトリ)
wp-data:/var/www/html
–name
WordPressコンテナ名
wordpress01
-p
ポート番号
8080:80
-e WORDPRESS_DB_HOST
DBのコンテナ名(作成したMySQLのもの)
mysql01
-e WORDPRESS_DB_NAME
DBの名称(作成したMySQLのもの)
db
-e WORDPRESS_DB_USER
DBのユーザ名(作成したMySQLのもの)
user
-e WORDPRESS_DB_PASSWORD
DBのパスワード(作成したMySQLのもの)
pass
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74151d1d4ea6 wordpress "docker-entrypoint.s…" 4 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp wordpress01
857b301f5e48 mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp mysql01
访问 http://localhost:8080/
$ docker run --restart=always --name wordpress01 -dit --net=wp_network01 -v wp-data:/var/www/html -p 8080:80 -e WORDPRESS_DB_HOST=mysql01 -e WORDPRESS_DB_NAME=db -e WORDPRESS_DB_USER=user -e WORDPRESS_DB_PASSWORD=pass wordpress
Unable to find image 'wordpress:latest' locally
latest: Pulling from library/wordpress
1efc276f4ff9: Pull complete
3239fd0772e9: Pull complete
~~(省略)~~
74151d1d4ea6f2c606d65d42a7a40f3e8421a074b00744cf799b8c711d28ad06
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74151d1d4ea6 wordpress "docker-entrypoint.s…" 4 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp wordpress01
857b301f5e48 mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp mysql01
访问 http://localhost:8080/
