2016-03-23 11 views
0

Ich habe gerade erst begonnen coreos Check-outDocker Container nicht mit systemctl starten

Ich habe versucht, die Einrichtung redis und mysql Docker Instanzen, aber mit wenig Succcess.

Ich erwartete ursprünglich, dass alles am Start out of the box arbeiten würde, aber es schien nicht der Fall zu sein.

auf dieser documentation on systemd auf der coreos Website So basiert, habe ich mich entschlossen, dies zu versuchen, meine Docker instace

cd /etc/systemd/system 

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

Dies hat nicht zu starten.

verwendete ich Docker Ereignisse seiner Initialisierung

docker event & 

Ich bin nicht sicher, was ich wahrscheinlich ..

ist Datei meiner Wolke Config

#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" 

Antwort

1

Sie befinden sich hier verpasst bin zu verfolgen brauchen um die System-Logs für den Service zu betrachten (oder zu posten). Wenn redis nicht richtig startet, wird es in den Protokollen zeigen:

journalctl -u redis.service

Zusätzlich die Docker Veranstaltungen Informationen teilen.

1

Sie führen den redis-Container im getrennten Modus aus, sodass das docker-Dienstprogramm den Container startet und dann beendet wird. Aus Sicht von Systemd sieht dies wie gesteuerter Prozess aus, so dass Systemd ExecStop Skript ausführt, das in Ihrem Fall den Redis Container stoppt.

Sie müssen den Prozess laufen lassen, damit Systemd nicht versucht, Ihren Container zu stoppen oder neu zu starten. Eine Möglichkeit, dies zu erreichen, besteht darin, die Flagge --detach zu entfernen. Sie können auch KillMode=none verwenden, damit systemd SIGTERM nicht an das Dienstprogramm docker sendet, sondern stattdessen nur ExecStop ausführt.

[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 
Verwandte Themen