windows下docker环境搭建与运行实战
背景
学习docker使用,需要环境,今天主要的目标是在windows环境下安装docker环境。
为什么要这么搞,主要是企业内部服务器,都是跟公网隔离的,没有访问公网权限,所以镜像什么的,从公网拉取完全没戏,在测试验证环节,通过公网下载各种镜像再传到服务器这种模式,效率低下。
以前做过这样的尝试,详见https://blog.csdn.net/seawaving/article/details/123529906,最后的效果并不好,只能执行有限的docker命令,因无法访问公网,从而也无法方便地从公网拉取各种镜像。
而个人办公电脑安装的操作系统都是windows,虽然可以再装个vmware,安装linux操作系统,然后再在上面搞docker环境,理论上可行,一方面,vmware是需要商业授权的,不能随便装;另一方面,会占用较大的系统资源。
既然官方提供了windows安装程序,那么就在windows环境下做吧,网上搜索到的资料大多是基于linux环境的,window下如何安装配置非常少,自行整理分享出来,让后来人少走弯路。
下载
官网下载地址https://docs.docker.com/desktop/install/windows-install/
根据自己的操作系统选择合适的安装包,我使用的win10安装包地址https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
没找到国内镜像,下载速度很慢,最终使用的迅雷会员才搞定。
环境需求
虚拟化有两种模式,一是基于Hyper-V,二是基于WSL2。后者是新技术,作为前者的替代。但是我采用后者模式,docker桌面报错,然后翻了大量资料去尝试修复无果,干脆卸载后重新选择的Hyper-V模式,顺利运行。
采用Hyper-V模式,需要把windows系统默认未开启或安装的功能打开,如下图两处红框,该操作需要先于容器桌面安装执行。
安装
双击运行即可,没什么可说的。
登录
启动后会提示登录,我原来的账号密码忘记了,选了忘记密码,126邮箱收不到邮件。点击重新注册,页面无法打开,最终放弃。实际发现好像不登录也没啥影响,镜像、容器等功能都能使用,所以该步应该能是非必须,可跳过。
基本验证
需要注意的是,拉取镜像并不是在容器桌面上,而是直接在操作系统的PowerShell中打开并执行。例如,以下是拉取hello-world镜像来验证
docker run hello-world
可以看到执行过程是先在本地查找是否存在镜像,如不存在,则去远程拉取。
更改国内镜像
上面这个镜像个头很小,实际用到的镜像可能很大,比如nacos,得800M+,从默认的国外服务器拉取,那下载速度和稳定性得疯掉,因此需要更改为国内镜像地址,这块没查到具体资料,自行摸索结果是修改如下配置文件:
路径:C:\Program Files\Docker\Docker\resources\windows-daemon-options.json
将
“registry-mirrors”: [“registry|redacted”],
修改为
“registry-mirrors”: [“https://registry.docker-cn.com”,“registry|redacted”]
这里我只加了一个镜像源,完全可以用同样的方式添加多个国内镜像源,如下:
"registry-mirrors": ["https://registry.docker-cn.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","registry|redacted"],
查看和管理容器
容器桌面则可以查看和管理容器实例,如下图所示:
查看和管理镜像
如下图所示:
通过名称链接点进去,可以方便地看到镜像分层和包
通过镜像创建容器
如下图所示,进入镜像列表,点击对应的按钮,弹出框中,可以设置容器的名字、指定端口、挂载卷和环境变量,一定程度上替代命令行的方式,其本质还是调用了docker的api,只是进行了图形化封装而已。
需要注意的是,这里的端口映射不能自由添加,在docker构建过程中使用expose命令暴漏了几个端口,就会自动显示几行。
查看和管理数据卷
需要注意的是,这里点右上角的添加,只会创建一个名字,并不能设置卷的本地位置和映射位置
通过docker run命令挂载的卷,或在容器桌面通过镜像创建容器的可视化界面挂载的卷会自动在此处显示
查看容器日志
在容器列表中通过名称连接点进去,可以方便地查看控制台输出日志
进入控制台
需注意的是进入的sh,不是bash,部分指令有差异,如ls可用,而ll不可用。
查看容器内目录与文件
选中某个文件,可以进一步编辑、删除、下载或导入。