2015-05-26 17 views
14

Giả sử tôi có một container Docker mà tôi muốn chạy, sau đó tôi có thể gọiLàm cách nào để tạo vùng chứa Docker tự động khởi động khi khởi động hệ thống?

$ docker run ... 

và mọi thứ đều tốt. Có cách tích hợp để chạy một thùng chứa theo cách nó sẽ được khởi động lại tự động, nếu hệ thống bị treo và khởi động lại?

Nếu có, điều này cũng có sẵn trong Soạn thảo Docker không?

+0

Tôi đang bỏ phiếu để đóng câu hỏi này là không có chủ đề vì nó đã có trên ServerFault tại http: // serverfa ult.com/questions/633067/how-do-i-auto-start-docker-containers-at-system-boot –

+2

@DanDascalescu câu hỏi này nên ở lại đây: "nếu câu hỏi của bạn thường bao gồm ... các công cụ phần mềm thường được sử dụng bởi các lập trình viên ... thì bạn đang ở đúng nơi để đặt câu hỏi của bạn! " có khuynh hướng nhấp vào liên kết ngăn xếp nhiều hơn trên serverfault với tư cách là lập trình viên –

Trả lời

27

Có, docker có restart policies chẳng hạn như docker run --restart=always sẽ xử lý việc này. Điều này cũng có sẵn trong compose.yml config filerestart: always.

+2

Đây là câu trả lời đầu tiên và được chấp nhận, tuy nhiên có thể hầu hết mọi người tìm kiếm tính năng đó thực sự muốn chạy vùng chứa của họ dưới dạng dịch vụ. Câu trả lời của [@kon bằng cách sử dụng 'Systemd' làm người quản lý dịch vụ] (http://stackoverflow.com/a/39493500/3197383) là một trong những giải pháp tốt nhất cho mục đích đó và cần nhiều upvotes hơn. –

+1

Điều này không làm việc cho tôi. Tôi có một container gọi là "crmpicco-mysql" và tôi chạy 'docker run --restart = luôn luôn crmpicco-mysql' và tôi đã nhận được lỗi:' Không thể tìm thấy hình ảnh 'crmpicco-mysql: mới nhất' cục bộ'. – crmpicco

+0

Lỗi của bạn không liên quan. Bạn có thể muốn đăng câu hỏi riêng nhưng có vẻ như bạn đang nhầm lẫn tên hình ảnh bến tàu và tên vùng chứa docker. Lệnh 'docker run' hy vọng tên của một ảnh mà bạn có thể liệt kê thông qua' docker images'. –

20

Tôi muốn vùng chứa được bắt đầu ngay cả khi người dùng không thực hiện đăng nhập (như VirtualBox VM mà tôi chỉ khởi động và không muốn đăng nhập mỗi lần). Dưới đây là các bước tôi đã thực hiện cho Ubuntu 16.04 LTS. Như một ví dụ, tôi đã cài đặt một container oracle db:

$ docker pull alexeiled/docker-oracle-xe-11g 
$ docker run -d --name=MYPROJECT_oracle_db --shm-size=2g -p 1521:1521 -p 8080:8080 alexeiled/docker-oracle-xe-11g 
$ vim /etc/systemd/system/docker-MYPROJECT-oracle_db.service 

và thêm các nội dung sau đây:

[Unit] 
Description=Redis container 
Requires=docker.service 
After=docker.service 

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

[Install] 
WantedBy=default.target 

và kích hoạt dịch vụ lúc khởi động

sudo systemctl enable docker-MYPROJECT-oracle_db.service 

Để biết thêm thông tin https://docs.docker.com/engine/admin/host_integration/

Các vấn đề liên quan