Windows 10 家庭中文版 Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows

windows10下安装docker报错:error during connect

cd "C:\Program Files\Docker\Docker"
./DockerCli.exe -SwitchDaemon

报错WSL 2 installation is incomplet

我们安装Docker Desktop的时候,他会问我们是否需要使用WSL2(基于Windows的Linux子系统),如果我们不适用,就会使用Hyper-v虚拟机运行,不过相比于虚拟机,子系统在性能方面更加出色。在我们选择使用WSL2之后,并且我们也确定打开了如下图所示的Windows功能(如果没有打开,请先百度如何打开wsl。)

使用VNC可视化docker docker wine vnc_容器

还是会出现一个下图所示的报错。

使用VNC可视化docker docker wine vnc_Docker_02

解决报错

更加报错提示,猜测可能是我们使用的wsl2版本老了,需要我们自己手动更新一下,我们根据提示去微软官网下载最新版的wsl2安装后即可正常打开。

更新包下载

WSL 2 is not installed解决报错

使用VNC可视化docker docker wine vnc_Docker_03

尝试解决方法
cmd 中运行 systeminfo 查看是否启用 Hyper-V

【控制面板】–【程序】–【启用或关闭 Windows 功能】,勾选添加 Hyper-V 全部选项,确定

使用VNC可视化docker docker wine vnc_使用VNC可视化docker_04

Win 10 没有 Hyper-V 解决方案

1.首先新建一个记事本文件。

2.在记事本中写入。

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

3.将记事本文件保存为bat格式,例如:Hyper-V.bat。

使用VNC可视化docker docker wine vnc_Docker_05

 4.以管理员身份执行 Hyper-V.bat 文件。

此时小伙伴们就可以在 "启动或关闭 Windows 功能" 中看到 Hyper-V 啦~

docker build --rm -t [image name] .   打包命令 

其中 -t 标记来添加 tag,指定新的镜像的用户信息。“.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。

语法:docker build -t  父镜像名:镜像的tag    Dockerfile  文件所在的路径

-t:表示tage,镜像名

4.编辑dockerfile

Dockerfile 用来创建一个自定义的image,包含了用户指定的软件依赖等。

Dockerfile 写入的内容:

FROM docker.io/centos:latest               #我是基于那个镜像来做的 
MAINTAINER    <mk@xuegod.cn>             #作者是谁<镜像创建者>
RUN yum  -y  install httpd    #做什么《拿这个镜像docker.io/centos:latest运行实例,然后执行yum命令,进行安装》

ADD   start.sh  /usr/local/bin/start.sh            #把start.sh这个启动脚本添加到/usr/local/bin这个文件下

ADD    index.html    /var/www/html/index.html         #把index.html这个启动脚本添加到/var/www/html这个文件下

CMD   echo   hello word  #container 启动时执行的命令或启动的服务,但是一个dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD

注意:ADD 将文件<src>拷贝到新产生的镜像的文件系统对应的路径<dest>,所有拷贝到新镜像重的文件和文件夹权限为0755,uld和gld为0

例如:dockerfile1 中的内容如下:

{{
FROM Ubuntu
MAINTAINER  XXX
RUN echo hello 1 > test1.txt
RUN echo hello2 > /test2.txt
EXPOSE 80
EXPOSE 81
CMD ["/bin/bash"]
}}

docker 镜像的制作方法

方法1:docker commit # 保持 container 的当前状态到image后,然后生成对应的 image

方法2:docker build # 使用dockerfile 文件自动化制作 image

docker images 查询imageid

Docker镜像保存为文件及从文件导入镜像的方法

1、概述

我们制作好镜像后,有时需要将镜像复制到另一台服务器使用。

能达到以上目的有两种方式,一种是上传镜像到仓库中(本地或公共仓库),但是另一台服务器很肯能只是与当前服务器局域网想通而没有公网的,所以如果使用仓库的方式,只能自己搭建私有仓库。

docker login --username=username****  登录镜像服务器 primeunion 密码123456

用户名和密码修改为自己的username****,123456

上传镜像

docker tag [ImageId] 镜像地址:[镜像版本号]
docker push 镜像地址:[镜像版本号]

获取镜像

docker pull [你需要的镜像]

如果我们仅仅是要复制到另外少数的服务器,搭建私有仓库显然没有这个必要,而将镜像保存为文件上传到其他服务器再从文件中载入镜像也是一个不错的选择。

可以使用Docker save和Docker load命令来存储和载入镜像。

2、保存镜像为文件

如果要讲镜像保存为本地文件,可以使用Docker save命令。

命令格式:

1

docker save -o 要保存的文件名  要保存的镜像

首先查看当前的镜像列表:

1

docker images

比如这里,我们将java8的镜像保存为文件:

使用VNC可视化docker docker wine vnc_使用VNC可视化docker_06

docker save -o /datadisk/8-jre-alpine.tar openjdk:8-jre-alpine

完成后通过 ls 命令即可看到文件。 

3、从文件载入镜像

从文件载入镜像可以使用Docker load命令。

命令格式:

1

docker load --input 文件

或者

1

docker load < 文件名

使用VNC可视化docker docker wine vnc_容器_07

 

此时会导入镜像以及相关的元数据信息等。

首先使用SSH工具将文件上传到另一台服务器。

然后通过命令载入镜像:

1

docker load < java8.tar

导入后可以使用docker images命令查看:

docker stop rm rmi 命令

  • 删除镜像的时候要确保没有容器引用该镜像
  • 如果有容器引用的镜像先删除容器后删除镜像
  • 删除容器的时候如果正常运行请先停止容器运行

使用VNC可视化docker docker wine vnc_Docker_08

1.停止容器docker stop

Usage:	docker stop [OPTIONS] CONTAINER [CONTAINER...]

Stop one or more running containers
停止一个或者多个正在运行的容器
Options:
  -t, --time int   Seconds to wait for stop before killing it (default 10)
  可添加参数-t, --time 15     等待15秒去停止容器,只写-t默认10s
  • 停止容器,可以同时一个或多个
docker stop 1fa2822325ff
docker stop -t 1fa2822325ff
docker stop -t 15 1fa2822325ff

     docker stop 1fa2822325ff 00b05cfc2055

  • 停止所有容器运行
docker stop $(docker ps -qa)

2.删除容器docker rm

Usage:	docker rm [OPTIONS] CONTAINER [CONTAINER...]

Remove one or more containers
删除一个或多个容器
Options:
  -f, --force     Force the removal of a running container (uses SIGKILL)
  强制删除一个正在运行的容器
  -l, --link      Remove the specified link
  删除特定的链接
  -v, --volumes   Remove anonymous volumes associated with the container
  删除与容器有关联的匿名卷
docker rm 1fa2822325ff
docker rm 1fa2822325ff 00b05cfc2055

   docker rm $(docker ps -qa)

3.删除镜像docker rmi

Usage:	docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
删除一个或多个镜像
Options:
  -f, --force      Force removal of the image
  强制删除镜像
      --no-prune   Do not delete untagged parents
      不删除未打tagd的父镜像
  • 根据镜像id删除镜像
docker rmi 0778d4c5d27e
  • 根据tag删除镜像
docker rmi goharbor/harbor-portal:v1.9.0
  • 删除所有镜像
docker rmi $(docker images -qa)