windows11 用wsl2安装的Docker Desktop 想写个脚本自动启动Docker Desktop和容器 但是没有查到启动Docker Desktop的命令行
开始菜单直接搜索 Docker Desktop 打开,然后在主界面上点Settings,进入设置页面。你找找“General”标签页,里面有个“Expose daemon on tcp://localhost:xxxx without TLS”(xxxx是端口号)的选项。勾选保存,就命令行中使用docker run试试
在 Windows 11 上,Docker Desktop 使用 WSL 2 作为后端运行。这意味着您可以直接通过 WSL 2 启动 Docker 守护进程,而无需单独启动 Docker Desktop 应用程序。当您安装了 Docker Desktop 时,Docker 实际上已经在 WSL 2 发行版中安装好了。
要启动 Docker 守护进程,您可以打开一个 PowerShell 或命令提示符窗口,并运行以下命令:
wsl -d docker-desktop
然后,您可以使用 docker 命令来管理和操作 Docker 容器。例如,要启动一个名为 my-container 的容器,您可以运行:
docker start my-container
要创建一个启动脚本,您可以将这些命令放在一个批处理文件(.bat)或 PowerShell 脚本(.ps1)中。例如,创建一个名为 start-docker.ps1 的 PowerShell 脚本,内容如下:
wsl -d docker-desktop
docker start my-container
然后,您可以双击该脚本文件或在 PowerShell 窗口中运行它,以启动 Docker 守护进程和容器。请注意,您可能需要以管理员身份运行 PowerShell,以确保具有足够的权限来启动 Docker 守护进程。
```shell
#!/bin/bash
# Start Docker Desktop
echo "Starting Docker Desktop..."
nohup /mnt/c/Program\ Files/Docker/Docker/Docker\ Desktop.exe >/dev/null 2>&1 &
# Wait for Docker Desktop to start
echo "Waiting for Docker Desktop to start..."
while ! docker info &>/dev/null; do sleep 1; done
# Run a sample container
echo "Running hello-world container..."
docker run --rm hello-world
```
根据需要自己做下修改
我可以提供以下解决方案: 1. 安装Docker Desktop
根据参考资料中的步骤进行安装,注意使用WSL2安装Docker Desktop。
创建一个systemd脚本用于启动Docker Desktop。
# 创建systemd文件
sudo touch /etc/systemd/system/docker.service
# 编辑systemd文件
sudo vim /etc/systemd/system/docker.service
将以下内容复制粘贴到docker.service文件中:
[Unit]
Description=Docker Service
Requires=docker.socket
After=network.target
[Service]
ExecStart=/mnt/c/Program\ Files/Docker/Docker/Docker Desktop.exe --run-service --start --experimental-vm
Restart=on-failure
TimeoutSec=90s
[Install]
WantedBy=default.target
保存退出,执行以下命令:
# 启用 Docker 服务
sudo systemctl enable docker.service
# 启动 Docker 服务
sudo systemctl start docker.service
# 检查 Docker 服务状态
sudo systemctl status docker.service
如果状态显示为 active (running) 则说明启动成功。
创建一个systemd脚本用于自动启动容器。
# 创建systemd文件
sudo touch /etc/systemd/system/my_container.service
# 编辑systemd文件
sudo vim /etc/systemd/system/my_container.service
将以下内容复制粘贴到my_container.service文件中:
[Unit]
Description=My Container Service
Requires=docker.service
After=docker.service
[Service]
Restart=on-failure
TimeoutStartSec=0
WorkingDirectory=/home/myuser/mycontainer
ExecStartPre=/usr/bin/docker stop my_container
ExecStartPre=/usr/bin/docker rm my_container
ExecStart=/usr/bin/docker run --name my_container my_image
ExecStop=/usr/bin/docker stop my_container
ExecStopPost=/usr/bin/docker rm my_container
ExecReload=/usr/bin/docker restart my_container
[Install]
WantedBy=multi-user.target
其中,my_container是容器的名称,my_image是容器的镜像名称。
保存退出,执行以下命令:
# 启用容器服务
sudo systemctl enable my_container.service
# 启动容器服务
sudo systemctl start my_container.service
# 检查容器服务状态
sudo systemctl status my_container.service
如果状态显示为 active (running) 则说明启动成功。
这样就完成了自动启动Docker Desktop和其内部的容器的设置。