使用场景1 本地用windows系统,安装windows docker,启动windows docker服务后,就可以在DOS里或者GitBash里使用docker命令来操作。
这个图标意味着docker服务已经启动:
打开GitBash,开始使用docker命令:
image.png
在windows中使用docker会有很多限制,比如以下是我遇到的:
-
在做宿主机和容器之间的挂载时,需要设置windows盘符共享:
image.png
右击windows docker 鲸鱼图标,选择setting,在下面页面中勾选要共享的盘符。
但不幸的是,这并没有解决问题,接下来你可能会看到防火墙问题
image.png
但是我查看了防火墙设置并没有拦住docker, 万不得已,暂时关闭了所有防火墙,就可以了。
image.png
image.png
image.png
网络上有人找到了具体解决的办法,看起来跟防火墙没有关系,但是毕竟解决了,我用他的方法,没办法卸载他说的那个服务。当你可以试试看。
https://blog.olandese.nl/2017/05/03/solve-docker-for-windows-error-a-firewall-is-blocking-file-sharing-between-windows-and-the-containers/#comment-99 -
如果要启动-t(tty)服务。比如docker exec -it $containerId /bin/bash,那么命令钱要加winpty, 否则你会收到这样的错误:the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
-
无法完美的做docker cp, 因为windows无法做软连接。也是因为这个原因,我转投到一台远程的Linux测试机上。
$ docker container cp mynginx:/etc/nginx .
使用场景2 远程Linux物理机
因为这台物理机和我的笔记本在同一个局域网,其实就在同一个办公室的机房里,所以我用GitBash, ssh+key的方式登录(也可以用secureCRT, secureCRT的目标是linux服务器,非windows)
在linux上一切顺利,除了下面这个问题:
当我启动127.0.0.1(或者127.0.0.2)8071端口用于映射docker container的80端口的时候,服务正常启动,但是当我想用本地windows来测试部署在这个ip上的nginx是否工作的时候却不行了。
$ docker container run \
--rm \
--name mynginx \
--volume "$PWD/html":/usr/share/nginx/html \
--volume "$PWD/conf":/etc/nginx \
-p 127.0.0.2:8071:80 \
-d \
nginx
telnet不通, 说明这个端口无法在internet上工作,意味着这个服务器的8071端口么有被开放。
image.png
原因是网卡问题:因为我再命令的启动的端口是127.0.0.2这个是本地轮询的端口,而我在网页上访问的是http://192.168.x.x:8071, 所以启动container的时候,我用的端口应该是192.168.x.x:8071:80要么是0.0.0.0:8071:80, 后者匹配那台linux物理机的所有的IP。
网友评论