50
51

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 3 years have passed since last update.

dockerコンテナをsystemdで管理させる

Last updated at Posted at 2015-08-08

dockerコンテナをサービス化しようと思って、systemdで自動起動するようにsystemdのサービスを書いた。

方法自体は、公式にも書いてある。

Docker Docs Automatically start containers

要約すると、コンテナをdocker runして作って、そのコンテナをdocker startdocker stopするサービスを作ってねという。

じゃあ、docker pullからしようと思うとどうすんねんというあたりは、以下のブログに、詳しく書かれていた。

Running Docker Containers with Systemd - Container Solutions

試しに、registryを起動するのを以下のとおり作った。

/usr/lib/systemd/system/docker-registry.service
[Unit]
Description=Docker Registry
Documentation=https://github.com/74th/systemd-docker-registry
Requires=docker.service
After=docker.service

[Service]
Type=simple
ExecStartPre=-/usr/bin/docker stop registry
ExecStartPre=-/usr/bin/docker rm registry
ExecStartPre=/usr/bin/docker pull registry
ExecStart=/usr/bin/docker run --name registry -p 5000:5000 library/registry

[Install]
WantedBy=multi-user.target
  • docker.serviceが起動後に実行するようにする。After=docker.serviceとする。
  • サービスのTypeは、コマンドが動いている間を起動していると判定する、Type=simpleを使う。そのため、コンテナの起動自体は、docker run -dではなく、ただのdocker runで良い。
  • 起動時実行時コマンドである、ExecStartdocker runをやらせる。
  • その前に、docker pullとか停止とか削除とかをExecStartPreでやらせる。

このファイルを作成して、以下のとおり有効化する。

sudo systemctl daemon-reload
sudo systemctl enable docker
sudo systemctl enable docker-registry

これで再起動させたところ、自動起動されていた。

一つはまったのは、このdocker-registry.serviceのファイルをgitで管理しようと、/usr/lib/systemd/system/内にはシンボリックリンクで格納していた。すると、上記コマンドを入れても、Failed to issue method call: No such file or directoryと言われてしまった。/usr/lib/systemd/system/内には、実ファイルを置かなければならないらしい。

ワンライナーでできるのを、githubにあげておきました。

50
51
2

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
50
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?