安装docker服务,docker的基本操作 镜像的制作,上传和获取

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。)

还是会出现一个下图所示的报错。
在这里插入图片描述

解决报错

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

更新包下载

WSL 2 is not installed解决报错

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

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

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。

 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的镜像保存为文件:

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

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

3、从文件载入镜像

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

命令格式:

1

docker load --input 文件

或者

1

docker load < 文件名

 

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

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

然后通过命令载入镜像:

1

docker load < java8.tar

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

docker stop rm rmi 命令

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

在这里插入图片描述

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
  删除与容器有关联的匿名卷

 根据容器id删除容器,可以删除一个或者多个
 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值