手帳

  • 2023-04-29
  • IT系

Dockerが何であるのかは以前軽く目を通した。いまさらDocker on Windows~Dockerを使ってみる前にdocker-compose.ymlとDockerfile – My Note

要は、

  • image:サービスのイメージディスク
  • container:イメージに環境変数?を与えて実際に立ち上げたサービス
  • volume:containerを保存しておく場所
  • network:container同士をネットワークの中に入れて接続させるとcontainer同士でやり取りができる
  • imageを作るに手っ取り早いのはDocker Hubに存在するimageを検索して取ってくることである。
docker pull hogehoge
  • 慣れてくると1つ1つのimageをとってきてcontainerを作ってnetworkに入れてつなげて~とするのでははく、Docker Composeを利用してサービスごとにまとめて準備する。

こんな感じでしょうか。これを意識して、WordPressをいくつかの手順で立ち上げてみる。

1. コマンドラインから複数のcontainerを1つのnetwork内で立ち上げる

手順

  1. WordPressの最新バージョンのimageをDocker Hubで検索して取得
  2. MySQLの最新バージョンのimageをDocker Hubで検索して取得
  3. networkを作成
  4. WordPress, MySQLのイメージにオプション(アカウントやnetwork、バックグラウンドで動かすなどの指定)を与えてを与えてcontainerを作成
docker pull wordpress:latest
docker pull mysql:latest
docker create network test_wp_network
docker run --network test_wp_network --name wordpress_test -d -p 8080:80 wordpress:latest
docker run --network test_wp_network --name mysql_test -d -e MYSQL_DATABASE=wordpress -e MYSQL_ROOT_PASSWORD=test mysql:latest

docker runのオプションは以下の通りです。

// --network:containerをつなげるnetwork
// --name:containerの名前
// -d:バックグラウンドで稼働
// -p:external_port:internal_portをいう形式で外部ポートとcontainerのportを接続させるときに使う。
// 今回の例ではこのおかげでwordpressにはhttp://IPアドレス:8080でアクセスできる
// -e:環境変数を指定

2. DockerをGUIで管理する

Dockerにはportainer.ioというDockerを管理するGUIが存在しているのでそれを使ってみる。

手順

  1. portainer用のvolumeを用意
  2. docker runを用いてportainer imageをとってきて起動させる
    ※docker runを用いた時、手元にimageがない時は公開されているimageをダウンロードしてコマンドを実行してくれる。
create volume portainer_volume
docker run -d -p 9000:9000 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_volume:/data portainer/portainer

docker runのオプションは以下の通りです。

// -v: A:B と書くと、(サーバー・dockerで作った)A volumeをcontainer側のB volumeと紐づけるという意味になります。

これでhttp://IPアドレス:9000でPotainerにアクセスできるようになります!