提问人:Enrico 提问时间:11/23/2021 更新时间:11/18/2023 访问量:1004
在 Azure 上的 Linux 中启动时启动 Docker 容器Start a Docker container at startup in Linux on Azure
Start a Docker container at startup in Linux on Azure
问:
我在 Azure 上有一个 Linux 虚拟机。在这台机器上,我安装了Docker。在启动时,我想运行一个 Docker 容器。为此,我在包含此内容的文件夹中创建了一个startup_script.sh
tmp
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 容器未运行。
答:
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
如果要在未用户登录的情况下启动虚拟机后启动 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.service
containerd.service
sudo systemctl enable mycontainer.service
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
评论