试着在不使用docker-compose的情况下运行多个容器

首先

为了学习Docker,我尝试创建了一个通过网络连接多个容器的环境。
虽然有很多使用docker-compose的示例,但是这次为了理解网络和卷的概念,我选择了不使用docker-compose来创建。

出来上がり的想象

wordpress.png

试试看

网络

$ 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/

undefined

bannerAds