LoginSignup
18
20

More than 5 years have passed since last update.

CentOS7でDockerコンテナの自動起動

Last updated at Posted at 2016-01-12

こちらの記事でSupervisordで自動起動する方法を書いてましたが、CentOS7のServiceだとこう書くのかなっというのがあったので再考してみます。

Dockerのコンテナ間でMySQL通信する方法(と、自動起動設定)

参考はこちら

再起動後もコンテナを自動起動する
AWS+CoreOS+Dockerでコンテナの自動起動 1

構成と構想

  • DB用コンテナ+NginxProxyコンテナ+サービス用コンテナ(複数)の構成
  • 指定した順番通りに起動したい
  • サービス用コンテナは日々増減するので、その都度修正が必要ないようにしておきたい
  • サービス用コンテナはDeployed-で始まるnameを持っている
  • それら以外のコンテナはビルド用だったりするので、自動起動に含めたくない

設定する

$ sudo sh -c 'cat << EOF > /usr/lib/systemd/system/docker_autostart.service
[Unit]
Description=auto start of docker containers
After=docker.service
Requires=docker.service

[Service]
ExecStart=/bin/bash -c "/usr/bin/docker start mysql nginx-proxy \$(docker ps -aq --filter='"'"'name=deployed-'"'"')"

[Install]
WantedBy=multi-user.target
EOF'
$ sudo systemctl enable docker_autostart.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker_autostart.service to /usr/lib/systemd/system/docker_autostart.service.

これで、serviceにdocker_autostartというサービス(unitっていうのかも?)が登録されるみたいです。
こうしておくと、再起動後にも(Dockerの起動完了を待って)コンテナが順番通りに起動します。

確認

$ sudo systemctl start docker_autostart
$ sudo systemctl status docker_autostart.service
● docker_autostart.service - auto start of docker containers
   Loaded: loaded (/usr/lib/systemd/system/docker_autostart.service; enabled; vendor preset: disabled)
   Active: deactivating (stop) since Tue 2016-01-12 15:42:47 JST; 9s ago
  Process: 4606 ExecStart=/bin/bash -c /usr/bin/docker start mysql nginx-proxy $(docker ps -aq --filter='name=deployed-') (code=exited, status=0/SUCCESS)
 Main PID: 4606 (code=exited, status=0/SUCCESS);         : 4764 (docker)
   Memory: 1.6M
   CGroup: /system.slice/docker_autostart.service
           └─control
             └─4764 /usr/bin/docker stop mysql nginx-proxy 79999cd8360a

Jan 12 15:42:46 localhost.localdomain systemd[1]: Started auto start of docker containers.
Jan 12 15:42:46 localhost.localdomain systemd[1]: Starting auto start of docker containers...
Jan 12 15:42:47 localhost.localdomain bash[4606]: mysql
Jan 12 15:42:47 localhost.localdomain bash[4606]: nginx-proxy
Jan 12 15:42:47 localhost.localdomain bash[4606]: 79999cd8360a
$ docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                         NAMES
79999cd8360a        my/stg_php            "/home/projects/servi"   4 days ago          Up 3 minutes        22/tcp, 80/tcp                deployed-www
67eda42c8aab        docker.io/mysql:5.6   "/entrypoint.sh mysql"   4 days ago          Up 3 minutes        0.0.0.0:33061->3306/tcp       mysql
fe44df169237        jwilder/nginx-proxy   "/app/docker-entrypoi"   2 weeks ago         Up 3 minutes        0.0.0.0:80->80/tcp, 443/tcp   nginx-proxy

おわり

ファイル1つ作ってコマンド1つ送るだけで出来たのでお手軽でした。
めでたしめでたし。

18
20
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
18
20