docker 是目前最流行的容器化軟件之一,它可以幫助開發者更加方便地創建和運行應用程序。但有時候,你可能會遇到一個問題:當你啟動了電腦后,docker 就不會自動啟動了。如果你希望 docker 能夠自動啟動,接下來就讓我們來看看如何進行設置。
- 先決條件
在進行設置之前,首先需要確認你的 Docker 是否已經安裝了 systemd 和 daemon.json 文件。這兩個文件都是必須的,因為它們將幫助 Docker 在開機時自動啟動。
如果你的系統上沒有安裝它們,可以使用以下命令來進行安裝:
sudo apt-get update sudo apt-get install systemd
- 編輯 daemon.json 文件
在啟用 Docker 的系統上,你需要編輯 /etc/docker/daemon.json 文件。如果該文件不存在,則可以使用以下命令來創建它:
sudo nano /etc/docker/daemon.json
然后,將以下代碼添加到文件中:
{ "default-address-pools": [ {"base":"172.0.0.0/8","size":16}, {"base":"192.168.0.0/16","size":24} ], "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }
這個代碼片段包含了一些 Docker 配置信息。其中也包含了一個默認的地址池,該池將用于為 Docker 容器分配 IP 地址。你可以根據需要進行修改。
- 添加 systemd 文件
接下來,你需要創建一個名為 docker.service 的 systemd 文件,并將其添加到 /etc/systemd/system/ 目錄中。
使用以下命令創建新文件:
sudo nano /etc/systemd/system/docker.service
添加以下代碼到文件中:
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target sshd.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID EnvironmentFile=-/run/flannel/docker Restart=always RestartSec=3 LimitNOFILE=1048576 LimitNPROC=infinity LimitCORE=infinity [Install] WantedBy=multi-user.target
這個文件將告訴 systemd 如何啟動 Docker,并配置一些選項,如下:
- Description:服務的名稱
- Documentation:Docker 官方文檔的鏈接
- After:服務啟動時需要啟動的其他服務的列表
- Wants:一些被列出的服務加載完成之后,會延遲一段時間后啟動該服務
- Type:服務類型
- ExecStart:服務啟動命令
- ExecReload:服務重新加載命令
- EnvironmentFile:環境變量文件加載路徑
- Restart:重啟服務的方式
- RestartSec:重啟服務的間隔時間
- LimitNOFILE:進程可以打開的文件描述符數量上限
- LimitNPROC:進程可以創建的線程數上限
- LimitCORE:進程可以使用的最大內存限制
- 重新加載 systemd
在將 systemd 文件添加到 /etc/systemd/system/ 目錄后,你需要重新加載 systemd 進程以使配置生效。你可以使用以下命令來重新加載 systemd。
sudo systemctl daemon-reload
- 啟用 systemd
下一步是啟用 Docker 服務自動啟動。你可以使用以下命令啟用 systemd。
sudo systemctl enable docker.service
這個命令將會在開機時自動啟動 Docker。
最后
現在,你已經學會如何在系統啟動時自動啟動 Docker 服務。如果你遇到其他的 Docker 問題,你可以參考 Docker 官方文檔或在社區中尋求幫助。