2016-03-23 6 views
0

ile başlamaz.Docker Konteyner Sadece coreos</p> <p>Ben kurulum REDIS ve MySQL liman işçisi örnekleri çalıştı, ancak çok az succcess ile gelmiş kontrol başladık systemctl

Başlangıçta her şeyin kutudan çıkışta çalışmasını bekledim, ancak durum böyle olmadı.

Yani coreos sitede bu documentation on systemd dayanarak, ben

cd /etc/systemd/system 

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

Bu işe yaramadı instace benim liman işçisi başlatmak için bu denemeye karar verdi.

ben .. Herhalde kaçırmış ben ne emin değilim onun başlatma

docker event & 

izlemek için liman işçisi olaylarını kullanılan İşte

İhtiyacınız

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

cevap

1

benim bulut yapılandırma dosyasıdır hizmet için sistemd günlüklerine bakmak (veya göndermek). , Ayrıca

journalctl -u redis.service

liman işçisi olaylar bilgi paylaşmak: Redis doğru başlayan değilse, o günlüklerde gösterecektir.

1

Dolap yardımcı programı kapsayıcıyı başlatır ve sonra çıkarsa, redis konteynerini bağımsız modda çalıştırıyorsunuz. Systemd bakış açısıyla, sistemd çıkmış kontrollü bir süreç gibi görünüyor, bu yüzden sisteminiz ExecStop komut dosyasını yürütüyor.

Çalışmayı devam ettirmeniz gerekir; böylece sistem hatası, kapsayıcınızı durdurmayı veya yeniden başlatmayı denemez. Bunu başarmanın bir yolu, --detach bayrağını kaldırmaktır. KillMode=none'u da kullanabilirsiniz, böylece systemd, SIGTERM'i docker yardımcı programına göndermez, ancak bunun yerine yalnızca ExecStop'u çalıştırır.

[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 
İlgili konular