ฉันจะเริ่มระบบคอนเทนเนอร์นักเทียบท่าอัตโนมัติเมื่อรีบูตระบบได้อย่างไร


46

เมื่อฉันโฮสต์ไซต์ WordPress ในคอนเทนเนอร์นักเทียบท่าและฉันต้องการให้คอนเทนเนอร์เหล่านี้เริ่มต้นในเวลาบูตเสมอดังนั้นต้องทำด้วยตนเอง


คุณใช้ Ubuntu รุ่นใด
Maythux

ใช้เซิร์ฟเวอร์อูบุนตู 14.04
nayan tiwari

นี้ได้รับการถามใน ServerFault
Dan Dascalescu

Crossposted โปรดเลือกหนึ่งไซต์ไม่มากสำหรับโพสต์สิ่งต่างๆ
โธมัสวอร์ด

คำตอบ:


34

จนถึงตอนนี้ฉันไม่คิดว่าจะมีวิธีการทำเช่นนั้นตามปกติ ทางออกที่ยุ่งยากคือการใช้นโยบายการเริ่มต้นใหม่

sudo docker run --restart=always -d your_image

ซึ่งหมายความว่าเมื่อใดก็ตามที่คุณปิดระบบจะออกจากคอนเทนเนอร์ของคุณเพื่อเริ่มโฮสต์จากนั้นจึงนำไปสู่การรีสตาร์ทตัวเชื่อมต่อ


ในขณะที่ฉันค้นหาเกี่ยวกับมันมีเครื่องมืออัตโนมัติบางอย่างเช่นพ่อครัว แต่ไม่ทราบวิธีการใช้
nayan tiwari

มันยังคงทดลองสำหรับ Ubuntu github.com/bflad/chef-docker/blob/master/README.md
Maythux

2
ทำไมไม่ใช้ความเป็นไปได้ของระบบสำหรับสิ่งนี้? ทั้งคนธรรมดาและ systemd สามารถจัดการกับสิ่งนี้ได้อย่างสมบูรณ์แบบ
Reishin

29

มันเป็นกรณีการใช้งานทั่วไปมากที่จะเพิ่มนโยบายการเริ่มต้นใหม่ในภาชนะที่มีอยู่

สิ่งนี้สามารถทำได้ด้วยคำสั่งต่อไปนี้: docker update --restart {no,on-failure,unless-stopped,always} container_name

รายละเอียดเพิ่มเติม: นักเทียบท่า - เริ่มต้นคอนเทนเนอร์โดยอัตโนมัติ


2
สิ่งนี้แก้ไขปัญหาของฉันได้อย่างสมบูรณ์แบบ! ฉันมีคอนเทนเนอร์พร้อมฐานข้อมูลของฉันและต้องการให้มันเริ่มต้นเมื่อ Mac ของฉันเริ่มทำงาน ด้วยการระบุว่ารูปภาพของมันถูกรีสตาร์ทเสมอ (เว้นแต่จะหยุด) นี่เป็นการหลอกลวง!
โคลิน

21

ในขณะนี้ ubuntu 15 รองรับ systemd, ตัวอย่างสำหรับผู้จัดการรายนี้:

someservicename.service

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

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a container_name
ExecStop=/usr/bin/docker stop -t 2 container_name

[Install]
WantedBy=multi-user.target

พร้อมใช้งานเพิ่มเติมบนไซต์ของนักเทียบท่า

PS Pretty น่ารัก config :)


4

สิ่งที่ฉันทำคือการใช้ไฟล์พุ่งพรวด

คุณสามารถค้นหาตัวอย่างบางส่วนและการแก้ปัญหาอื่น ๆ ในเว็บไซต์เทียบท่า

สร้างไฟล์เช่นนั้นใน / etc / init:

Description "My container"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
   /usr/bin/docker start -a mycontainer
end script
pre-stop script
  /usr/bin/docker stop mycontainer
end script

หมายเหตุจาก Docker 1.2 มีนโยบายการรีสตาร์ทซึ่งอาจช่วยในการรีสตาร์ทคอนเทนเนอร์โดยอัตโนมัติเมื่อมีการเรียกใช้บริการนักเทียบท่า (หลังจากบูตเป็นต้น)

โดยส่วนตัวแล้วฉันใช้หุ่นเชิดเพื่อเตรียมเวิร์กสเตชันของฉันและใช้โมดูล Dockerนี้เพื่อสร้างสคริปต์เริ่มต้นโดยอัตโนมัติซึ่งสมบูรณ์มากขึ้น (เริ่มหยุดหยุดรีสตาร์ทตัวเลือกใหม่ทั้งหมด ... )


1
พุ่งพรวดตาย ใช้ systemd
AmirHossein
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.