在 Azure 上的 Linux 中启动时启动 Docker 容器Start a Docker container at startup in Linux on Azure

Start a Docker container at startup in Linux on Azure

提问人:Enrico 提问时间:11/23/2021 更新时间:11/18/2023 访问量:1004

问:

我在 Azure 上有一个 Linux 虚拟机。在这台机器上,我安装了Docker。在启动时,我想运行一个 Docker 容器。为此,我在包含此内容的文件夹中创建了一个startup_script.shtmp

sudo docker run -d -p 8787:8787 -e USER=rstudio 
     -e PASSWORD=mypassword myacr.azurecr.io/mycontainer

然后我运行这个命令

chmod u+x /tmp/startup_script.sh

然后,在我创建了一个服务etc/systemd/system

[Unit]
Description=Run script at startup after network becomes reachable
After=default.target

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/tmp/startup_script.sh
TimeoutStartSec=0

[Install]
WantedBy=default.target

然后,运行

systemctl daemon-reload
systemctl enable run-at-startup.service

重新启动计算机时,Docker 容器未运行。

Linux Azure Docker

评论


答:

2赞 aduverger 5/20/2022 #1

Docker 建议您使用其重启策略,并避免使用 systemctl 等进程管理器来启动容器 (https://docs.docker.com/config/containers/start-containers-automatically/)。

首先,您需要确保 Docker 守护程序(即 Docker 服务)在启动时启动。 在 Debian 和 Ubuntu 上,Docker 服务配置为默认在启动时启动。要在启动时自动启动其他发行版的 Docker 和 Containerd,请使用以下命令:

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

如果您使用的是 Windows,请确保勾选了 Docker 桌面设置。Start Docker Desktop when you log in

然后,对于要在启动时启动的每个容器,您需要在运行容器时使用该标志,例如:--restart

sudo docker run --restart always -d -p 8787:8787 -e USER=rstudio 
      -e PASSWORD=mypassword myacr.azurecr.io/mycontainer
0赞 almaceleste 11/18/2023 #2

如果要在未用户登录的情况下启动虚拟机后启动 Docker 容器,则文件应如下所示:.service

[Unit]
Description=My Docker container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start my_container_name
ExecStop=/usr/bin/docker stop my_container_name

[Install]
WantedBy=default.target

此文件(例如名为 )应放在 中。
您需要拉取映像,并使用您的首选参数运行它,以便创建容器。
您必须启用您的新服务,以及 和 :
mycontainer.service/etc/systemd/system/docker.servicecontainerd.service

sudo systemctl enable mycontainer.service
sudo systemctl enable docker.service
sudo systemctl enable containerd.service