如何从Windows 10主机远程在CentOS主机运行Docker命令创建容器?
实现方案:从Windows主机远程控制CentOS主机Docker并使用本地Dockerfile
当然可以实现!完全不用纠结docker-machine,Docker原生就提供了完美的解决方案,我给你一步步拆解操作:
第一步:给CentOS主机(主机B)的Docker开远程访问权限
首先得让主机B的Docker服务允许远程连接,操作如下:
- 编辑Docker的守护进程配置文件
/etc/docker/daemon.json(如果文件不存在就新建一个),写入以下内容:{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }注意:如果是生产环境,强烈建议开启TLS加密(改用2376端口并配置证书),避免被未授权访问。上面的配置是测试用的非加密方式,方便快速验证。
- 重启Docker服务让配置生效:
sudo systemctl daemon-reload sudo systemctl restart docker - 如果主机B开了防火墙,记得开放2375端口:
sudo firewall-cmd --add-port=2375/tcp --permanent sudo firewall-cmd --reload
第二步:在Windows主机(主机A)上配置远程Docker连接
有两种方式让你的PowerShell里的Docker命令指向主机B,选一种适合你的就行:
方式一:临时切换(适合单次操作)
打开PowerShell,设置环境变量:
$env:DOCKER_HOST = "tcp://<主机B的IP地址>:2375"
设置完后,当前PowerShell窗口里的所有Docker命令都会直接作用于主机B的Docker服务,关闭窗口后就恢复默认本地Docker。
方式二:持久化配置(适合长期使用)
用docker context创建一个专属的远程上下文,以后切换起来更方便:
- 创建指向主机B的上下文:
docker context create centos-docker --docker "host=tcp://<主机B的IP地址>:2375" - 切换到这个上下文:
之后所有Docker命令都会默认操作主机B的Docker,想切回本地Windows的Docker,执行docker context use centos-dockerdocker context use default就可以了。
第三步:用主机A本地的Dockerfile在主机B创建容器
现在就可以直接在主机A上操作了!打开PowerShell,进入你的Dockerfile所在的目录,执行以下命令:
- 先构建镜像(镜像会直接生成在主机B的Docker里):
docker build -t my-custom-image . - 然后运行容器:
这里的docker run -d --name my-remote-container my-custom-image.就是你主机A本地的Dockerfile所在目录,Docker会自动把当前目录的所有相关文件打包发送到主机B的Docker服务进行构建,完全不用把Dockerfile复制到主机B上。
小技巧:如果你的构建目录里有很多无关文件,可以新建一个
.dockerignore文件,把不需要的文件/目录写进去,这样能减少传输的体积和时间。
内容的提问来源于stack exchange,提问作者Tanmay Bhattacharya
相关产品推荐
相关产品推荐

