安装docker的事项,以及使用情况
下载dockers desktop
提示
WSL 2 installation is incomplete.
解决下载最新的
https://link.csdn.net/?target=https%3A%2F%2Fwslstorestorage.blob.core.windows.net%2Fwslblob%2Fwsl_update_x64.msi
重启电脑的时候,可能报错
执行命令(cmd窗口)
cd "C:\Program Files\Docker\Docker"
DockerCli.exe -SwitchDaemon
删除 docker system prune -a
第一个坑,因为我的是win10 家庭版,然后安装dockers desktop 安装很顺利,然后执行docker build命令时,总是提示
open /var/lib/docker/overlay2/cb7414af6f42ab54e1d3691e516e93a66209d9fa1ab64ebe063e3ec040a05f1c/committed: no such file or directory
重装好几次docker都是一样,后面查到Hyper-V 这个要开启,然后百度开启的方法,还是同样的错误,电脑也开启了虚拟化,还是没什么用,后面查到不能直接装,但是我的为什么可以直接装,想不明白
然后卸载dockers desktop,安装DockerToolbox,运行报错(前面安装Hype-v的锅)
Running pre-create checks... Error with pre-create check: "Hyper-V is installed. VirtualBox won't boot a 64bits VM when Hyper-V is activated. If it's installed but deactivated, you can use --virtualbox-no-vtx-check to try anyways" Looks like something went wrong in step ´Checking if machine default exists´
然后在控制面板-》控制程序开启和关闭 hype-v取消,重启,没有什么用,解决方案
文件(根据你安装的位置):C:\Program Files\Docker Toolbox\Start.sh
新增 --virtualbox-no-vtx-check部分(倒数第二行)
STEP="Checking if machine $VM exists" if [ $VM_EXISTS_CODE -eq 1 ]; then "${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || : rm -rf ~/.docker/machine/machines/"${VM}" #set proxy variables if they exists if [ "${HTTP_PROXY}" ]; then PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY" fi if [ "${HTTPS_PROXY}" ]; then PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY" fi if [ "${NO_PROXY}" ]; then PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY" fi "${DOCKER_MACHINE}" create -d virtualbox --virtualbox-no-vtx-check $PROXY_ENV "${VM}" fi
第二个问题
再次运行报
Error creating machine: Error in driver during machine creation: Unable to start the VM: exit status 1
发现是docker quick start安装时自带的virtualbox不是最新版本,解决办法就是安装最新的版本,搞定
然后,我再biu一下,心想应该没什么问题了,啪,很快啊,
image operating system "windows" cannot be used on this platform
然后vs新建docker把windows改成linux
好像离成功越来越近了,再次运行bulid 命令,运行到step 8/17 时,又来一个error,血压已经上来了,
COPY failed: stat /var/lib/docker/tmp/docker-builder268095359/xxxxxxx.csproj no such file or directory.
原因微软生成的Dockerfile是要跟xxx.sln放在同级目录的, 不是跟xxxxx.csproj放一个目录的, 还一直纳闷, 为什么微软生成的东西, 还不能直接用了, 不科学啊.
然后再一次build,终于成功
运行成功之后要记住一个ip:docker is configured to use the default machine with IP 192.168.99.100 后面访问的时候需要用到。并不是localhost或者127.0.0.1。
总结:我在公司win10专业版,一键安装,什么问题都没有遇到,然后这个家庭版,花了我一天的时间才搞出来,坑太多,不过最后还是解决了
重启docker ,一直报Docker failed to initialize
将 C:\Users\Administrator\AppData\Roaming 目录下Docker目录改名为Docker_backup(实际上就是删除并备份),启动 Docker for windows.exe,提示docker没有启动,点击启动docker一切恢复如初,原来的容器和镜像都在
一个解决方案中有多个项目时,必须在这个项目的根目录进行build dockerfile操作,才能找到其他文件,如果是同级别的是找不到文件会报错,同时,如果自动生成的copy信息可能不一样,需要重新修改
build镜像:docker build -t xxxapi-f ./xxx/Dockerfile .
运行容器:docker run -d -p 9060:程序中的端口 --name xxxservice xxxapi
将docker的镜像push到本地服务,然后拉取下来,运行
先更换存储仓库
镜像加速:settings -> docker engine -> 用如下配置,并在cmd中输入: docker info 看是否存在registry-mirrors;
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ], "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": true, "features": { "buildkit": true } }
如果报错误
denied: requested access to the resource is denied
可能的原因 1 在build自己的镜像的时候添加tag时必须在前面加上自己的dockerhub的username,2可能未登录(可以自己去)
docker tag 6d5541c623fd(imageid) dockershanks/v1.0
然后push 远程仓库 docker push dockershanks/v1.0
然后pull docker pull dockershanks/v1.0
docker run -d -p 3060:8086--name vueApp test-docker:1.0.0
(1)-p 3060:8086表示端口映射,将宿主的3060端口映射到容器的8086端口(此端口为nginx所配置端口)。
(2 )-d 表示后台运行容器,并返回容器ID。
(3)--name vueApp表示容器名称。
(4)test-docker:1.0.0表示基于的镜像名称。