Docker设置开机启动

Docker 是一个开源的容器化平台,通过使用 Docker,开发者可以快速构建、部署和运行应用程序。在一些场景下,我们可能需要将 Docker 设置为开机启动,以确保在服务器重启后,Docker 守护进程也能自动启动。

本文将介绍如何在不同操作系统上配置 Docker 开机启动,并提供相应的代码示例。

1. Ubuntu / Debian

在 Ubuntu 或 Debian 系统上,可以通过 systemd 来启用 Docker 开机启动。

首先,创建一个名为 docker.service 的文件,文件路径为 /etc/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=
After=network.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

然后,执行以下命令以重新加载 systemd 配置:

$ sudo systemctl daemon-reload

最后,启用 Docker 开机启动:

$ sudo systemctl enable docker

现在,Docker 将在服务器重启后自动启动。

2. CentOS / Red Hat

在 CentOS 或 Red Hat 系统上,可以使用 chkconfig 命令来启用 Docker 开机启动。

首先,创建一个名为 docker 的文件,文件路径为 /etc/init.d/docker

#!/bin/sh
#
# /etc/init.d/docker
#
# Docker daemon
#
# chkconfig:   2345 99 01
# description: Docker daemon

### BEGIN INIT INFO
# Provides:       docker
# Required-Start: $local_fs $network $named $time
# Required-Stop:  $local_fs $network $named $time
# Should-Start:   $syslog $remote_fs
# Should-Stop:    $syslog
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
### END INIT INFO

# Source function library
. /etc/rc.d/init.d/functions

# Path to the docker binary
DOCKER=/usr/bin/docker

# Options for the docker daemon
DOCKER_OPTS="-d"

# Check for missing binaries
test -x $DOCKER || exit 0

start() {
        echo -n $"Starting docker: "
        daemon $DOCKER $DOCKER_OPTS
        retval=$?
        echo
        return $retval
}

stop() {
        echo -n $"Stopping docker: "
        killproc $DOCKER
        retval=$?
        echo
        return $retval
}

restart() {
        stop
        start
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|force-reload)
        restart
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|force-reload}"
        exit 2
esac

然后,将文件权限设置为可执行:

$ sudo chmod +x /etc/init.d/docker

最后,使用以下命令启用 Docker 开机启动:

$ sudo chkconfig --add docker

现在,Docker 将在服务器重启后自动启动。

3. macOS

在 macOS 上,可以使用 launchctl 命令来启用 Docker 开机启动。

首先,创建一个名为 docker.startup.plist 的文件,文件路径为 ~/Library/LaunchAgents/docker.startup.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>docker.startup</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/dockerd</string>
      <string>-H</string>
      <string>fd://</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

然后,使用以下命令启用 Docker 开机启动:

$ launchctl load -w ~/Library/LaunchAgents/docker.startup.plist

现在,Docker 将在 macOS 重启后自动启动。

以上