2016-03-23 12 views
0

で起動しません、私はちょうどドッカーコンテナがsystemctl

をcoreosをチェックアウトし始めている私は少し正常終了時と、セットアップRedisのとMySQLのドッキングウィンドウのインスタンスに試してみました。

私は当初、スタートアップ時にすべての作業を開始することを期待していましたが、それは当てはまりませんでした。

のでcoreosサイト上でこのdocumentation on systemdに基づいて、私は、これは動作しませんでした

cd /etc/systemd/system 

sudo systemctl enable redis.service 
$ sudo systemctl start redis.service 

instace私のドッキングウィンドウを起動するために、これを試してみることにしました。

私はここ..私は私はおそらく逃していますかわからないですその初期

docker event & 

を追跡するために

をドッキングウィンドウイベントを使用し、私のクラウドの設定ファイルである

あなたが必要
#cloud-config 
hostname: user1 
# include one or more SSH public keys 
ssh_authorized_keys: 
    - ssh-rsa.... 
users: 
    - name: user2 
    passwd: temp123 
    groups: 
     - sudo 
     - docker 
    ssh-authorized-keys: 
     - ssh-rsa.... 
coreos: 
    etcd2: 
    #generate a new token for each unique cluster from https://discovery.etcd.io/new?size=#{number_instances} 
    discovery: https://discovery.etcd.io/fdadfadjskd546887878kfksdjfds 
    # multi-region and multi-cloud deployments need to use 1.1.1.1 
    advertise-client-urls: http://1.1.1.1:2379 
    initial-advertise-peer-urls: http://2.2.2.2:2380 
    # listen on both the official ports and the legacy ports 
    # legacy ports can be omitted if your application doesn't depend on them 
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001 
    listen-peer-urls: http://2.2.2.2:2380,http://2.2.2.2:7001 
    fleet: 
    public-ip: 1.1.1.1 
    flannel: 
    interface: 3.3.3.51/23 
    units: 
    - name: systemd-networkd 
     command: stop 
    - name: 00-static.network 
     runtime: true 
     content: "[Match]\n\ 
     Name=ens19\n\ 
     [Network]\n\ 
     Address=3.3.3.3/23\n\ 
     Gateway=3.3.3.255\n\ 
     DNS=8.8.8.8\n\ 
     DNS=8.8.4.4 \n" 
    - name: systemd-networkd 
     command: start 
    - name: etcd2.service 
     command: start 
    - name: fleet.service 
     command: start 
    - name: redis.service 
     command: start 
     enable: true 
     content: "[Unit]\n\ 
     Description=Redis Server Docker Container\n\ 
     After=docker.service\n\ 
     Requires=docker.service\n\ 
     [Service]\n\ 
     TimeoutStartSec=0 \n\ 
     EnvironmentFile=/etc/environment\n\ 
     ExecStartPre=-/usr/bin/docker kill %p\n\ 
     ExecStartPre=-/usr/bin/docker rm %p\n\ 
     ExecStartPre=/usr/bin/docker pull redis:latest \n\ 
     ExecStart=/usr/bin/docker run --name=redis --detach=true --publish=6379:6379 redis \n\ 
     ExecStop=/usr/bin/docker stop redis \n\ 
     [Install] \n\ 
     WantedBy=multi-user.target \n" 
    - name: mysql.service 
     command: start 
     enable: true 
     content: "[Unit]\n\ 
     Description=MySQL Server Docker Container\n\ 
     After=docker.service\n\ 
     Requires=docker.service\n\ 
     [Service]\n\ 
     TimeoutStartSec=0 \n\ 
     EnvironmentFile=/etc/environment\n\ 
     ExecStartPre=-/usr/bin/docker kill %p\n\ 
     ExecStartPre=-/usr/bin/docker rm %p\n\ 
     ExecStartPre=/usr/bin/docker pull mysql:latest \n\ 
     ExecStart=/usr/bin/docker run --name=mysql --env MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --env MYSQL_USER=${MYSQL_USER} --env MYSQL_PASSWORD=${MYSQL_PASSWORD} --env MYSQL_DATABASE=${MYSQL_DATABASE} --detach --publish 3306:3306 --volume=/path/to/dumps/:/dumps/ mysql\n\ 
     ExecStop=/usr/bin/docker stop mysql\n\ 
     [Install] \n\ 
     WantedBy=multi-user.target \n" 
write_files: 
    - path: /etc/environment 
    permissions: 0644 
    content: "\nMYSQL_USER='user1'\n\ 
     MYSQL_DATABASE='db1'\n\ 
     MYSQL_CONTAINER_NAME='mysql'\n\ 
     MYSQL_ROOT_PASSWORD=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 32 | sed 1q) \n" 

答えて

1

サービスのシステムログを見る(または投稿する)。 Redisのは正しく起動されていない場合は、ログに表示されます。また

journalctl -u redis.service

、ドッキングウィンドウのイベント情報を共有しています。

1

ドッキングモードでredisコンテナを実行しているため、dockerユーティリティがコンテナを起動して終了します。 systemdの観点からは、制御されたプロセスが終了したように見えるので、systemdはExecStopスクリプトを実行します。

systemdがコンテナを停止または再起動しようとしないようにプロセスを実行し続ける必要があります。これを達成する1つの方法は、--detachフラグを削除することです。 KillMode=noneを使うこともできるので、systemdはdockerユーティリティにSIGTERMを送信しませんが、代わりにExecStopしか実行しません。

[Unit] 
Requires=docker.service 
After=docker.service 

[Service] 
TimeoutStartSec=0 
KillMode=none 
Restart=always 
RestartSec=5s 


ExecStartPre=-/usr/bin/docker kill %p 
ExecStartPre=-/usr/bin/docker rm -v %p 

ExecStart=/usr/bin/docker --name=redis --publish=6379:6379 redis 

ExecStop=/usr/bin/docker stop %p 
ExecStopPost=-/usr/bin/docker stop %p 
関連する問題