安装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表示基于的镜像名称。

 

posted @ 2021-07-24 18:22  青兰柳  阅读(385)  评论(0编辑  收藏  举报