0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

docker-composeを使わずに複数コンテナを動作させてみる

Posted at

はじめに

Dockerの勉強がてら、複数のコンテナをネットワークで接続する環境を作ってみました。
docker-composeを使ったサンプルは多くありますが、今回はnetoworkとvolumeの理解のために、docker-composeを使わずに作ってみました。

出来上がりイメージ

こんな感じにMySQLとWordPressのコンテナを作って、ネットワークで接続します
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コンテナ

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は新方式をサポートしていないため)
MySQLコンテナの起動確認
$ 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コンテナ

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
WordPressコンテナの起動確認
$ 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/ へアクセス

無事立ち上がりました!
あまり身についた感はないので、別途色々と試してみようと思います

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?