Docker Desktop 安装使用教程
一、前言作为开发人员,在日常开发中,我们必要在当地去启动一些服务,如:redis、MySQL等,就必要去下载这些在当地去启动,使用较为繁琐。此时,我们可以使用Docker Desktop,来搭建我们必要的服务,直接在容器中去启动即可。
二、下载 Docker Desktop
docker官网:https://www.docker.com/
https://img-blog.csdnimg.cn/e42358a62e3c41a692a76e5b65b1f26d.png
https://img-blog.csdnimg.cn/299dd208f4774e7d82b10f2c30c9dfd7.png
三、安装 Docker Desktop
1、下载并安装
我在windows上下载的是 Docker Desktop,下载地址,点进去根据自己的必要去下载,我是下载的Windows版本的。把下载下来的.exe文件双击打开,如下图所示,直接点击OK即可。
https://img-blog.csdnimg.cn/14979eb9d39d4d6e98837d73fb3ec2b9.png
https://img-blog.csdnimg.cn/9ce788160b8c4c788104128b5bae8625.png
https://img-blog.csdnimg.cn/e54ae7d02ba543a08c1fde0803af3f22.png
https://img-blog.csdnimg.cn/572e11df84d547228312d466de910462.png
https://img-blog.csdnimg.cn/6e59c238efe54c898c1b85ff4262551f.png
安装完后,会有个对应的小图标。
https://img-blog.csdnimg.cn/6707698353e748fb847d1db0cdbd8689.png
2、设置 Docker Desktop 环境
因为docker desktop 是可以部署在windows 上来运行docker的应用服务的,其基于windows 的 Hyper-V
服务和WSL2内核的Windows上创建一个子系统(linux),从而实现其在windows上运行docker。以是电脑上必要开启Hyper-V
服务,和安装WSL2。
开启Hyper-V 服务:控制面板—程序—程序和功能—启动或关闭Windows功能 中 勾选【Hyper-V】和【容器】选项。
https://img-blog.csdnimg.cn/3e8f1dbcc9b14340bb2434ff117d9f93.png
https://img-blog.csdnimg.cn/6f6a5db25bcd4dc29cf607b9f0e3f890.png
https://img-blog.csdnimg.cn/d4d86ad2961a4cc3b4ec17d96556d9b7.png
设置完毕后,重启电脑
2、安装 wsl2
我们可以从微软官网下载最新版本的wsl2,然后正常打开。
下面这个链接,访问下载,安装更新:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下载完成后直接双击安装即可
https://img-blog.csdnimg.cn/41586937682d422fbb99aef8cc8e2f16.png
3、打开 Docker Desktop 的问题
问题一:wsl 2 installation
打开 docker desktop, 假如出现报错如下,报错意思是:是因为我们还必要举行wsl的下载和设置
https://img-blog.csdnimg.cn/527a7f1b747541c9a6c526784c6e0aba.png
这里我们用两步来办理这个问题:
1、我们先去系统里检察一下有没有启用Windows的Linux子系统,步骤如下:
控制面板->程序->程序和功能
https://img-blog.csdnimg.cn/a421720c5a07411b88da9576abc2f5f4.png
假如没有的话,我们勾选上,重新启动电脑,打开Docker Desktop 。
2、假如还是没有办理的话。原因就剩一个了就是:
我们使用的wsl2版本很旧,因此必要手动更新。我们可以根据提示从微软官网下载最新版本的wsl2,然后正常打开。
下面这个链接,访问下载,安装更新:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下载完成后直接双击安装即可
https://img-blog.csdnimg.cn/41586937682d422fbb99aef8cc8e2f16.png
重新启动,运行,发现问题已经办理。
问题二:wsl kernel 版本低
假如已经按照过wsl , 打开 docker desktop, 假如出现报错如下,报错意思是:wsl kernel 版本低,必要举行更新。
办理方法:以管理员的身份打开控制台(cmd),并实行下令 wsl --update 举行更新
https://img-blog.csdnimg.cn/790b9ae219e3415aacdd8b91f4b71d93.png
https://img-blog.csdnimg.cn/3095752731de4a0e9c579d019ea68af2.png
如上图中提示,wsl 更新乐成后,必要对wsl重启后才会更新收效。可以实行 wsl --shutdown 举行关闭wsl (我实行下令后又重启了一下电脑。)
重启后,再次打开 docker desktop即可
假如电脑windows 10 的企业版的话,以上的安装部署就完毕了, 但我在安装windows 10 家庭版的时间,报错。网上查的意思是说 docker 必须安装在win10 企业版本,假如想安装在家庭版本上,必要如下使用: 打开注册表编辑器,在“ 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion ” 下找到 EditionID ,数值数据改为Professional即可。
https://img-blog.csdnimg.cn/07dcfbaf1e0d43dab7362674e2ac9a61.png
四、Docker Desktop 设置镜像源
设置镜像源:打开Docker ,找到 设置–docker engine 中,添加如下图所示的镜像源地址。
https://img-blog.csdnimg.cn/4c6240521f7c4d33abfd771427af8969.png
选择Docker
Engine,在其中输入(这里使用的是163的源,假如想要使用其他源可以自行设置,github上有个项目:docker_mirror可以自动检测在你的网络环境下那个源是最快的)
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://cr.console.aliyun.com",
"https://mirror.ccs.tencentyun.com"
],
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
}
}
https://img-blog.csdnimg.cn/e3f7e463fe9847be9a69f79c9ab2cc57.png
不停转转转,等一会就可以了,不转了就可以了
https://img-blog.csdnimg.cn/621abccb1d554c7281ecfc60af90f583.png
五、Disk image location路径的修改
使用如下(示例):完成安装后,打开软件,点击右上角的设置,将图2中的红框标注部分的选中给取消,然后按照图3举行路径的修改,再返回图2界面,把红框部分选中,并应用即可。
https://img-blog.csdnimg.cn/4c6240521f7c4d33abfd771427af8969.png
https://img-blog.csdnimg.cn/b10c8e54ac2e482c8798d3d66043b658.png
https://img-blog.csdnimg.cn/4d7b566db6ab4316baf11e5dd4f2ba81.png
https://img-blog.csdnimg.cn/f07a9f2cfbff4198905eabe048e39a16.png
六、验证是否安装乐成
代码如下(示例):在左下角的搜索框中,输出PowerShell,打开PowerShell。输入docker
images下令,出现下图所示即表示安装乐成。
https://img-blog.csdnimg.cn/cc84f545a33245789e9b6fd4b191cac1.png
七、使用 Docker Desktop
1)containers介绍如下
https://img-blog.csdnimg.cn/a52f3ca3b6904cb49153861b8a008d36.png
点击上图中的容器名称,比方「mysql_cn」,会进入到如下图所示的容器页面。展示了此容器的一些信息和使用按钮,点击「Logs」的tap页,会体现此容器的运行日志。容器日志直接展示在页面上,就方便检察了(一般也可以在后台通过docker下令来检察日志信息。不过下令检察有点麻烦,看起来也不太方便)
https://img-blog.csdnimg.cn/7da8d025a31547b09c637c3c2d176aea.png
terminal 是容器的终端(即已经在容器内里了), 可以在终端上实行一些mysql的下令,进入到mysql 实行sql语句。
一般假如不通过这个终端的话,必要在控制台上先通过docker 下令进入到容器内部,然后再在容器内部使用mysql下令
以是terminal 的好处就是省略了 docker下令进容器的步骤。还是比较方便的。
https://img-blog.csdnimg.cn/fea23e2c21e34a108b8984a4a3b30ad8.png
2)images 介绍如下
一个镜像可以启动多个容器,可以设置差别的容器名称,比如为可以启动两个mysql容器这样就有两个mysql容器在运行,两者运行互不干扰。
https://img-blog.csdnimg.cn/794a92b139264f7a99fd7fe653d3bf1c.png
通过镜像启动一个容器:
https://img-blog.csdnimg.cn/58af3adcb6a7444193fc9d962cfc565b.png
如下图,通过镜像启动一个容器时,只设置了容器名和环境变量信息,没有设置端口映射。但是容器也是可以启动的。(个人明白:端口映射的目标是为了其他电脑访问本机的mysql_2 容器时,是通过 本机ip +映射端口来访问的。映射端口 是映射到了 mysql_2容器的端口。这样就可以访问容器中的mysql 了。 但假如容器自己不必要被访问的话,容器自己运行,我通过控制台使用docker 下令来进入到容器内容,使用mysql的下令进入到mysql 中来使用mysql ,也是可以的。)
不过,正常的使用环境是必要设置端口映射的。下图中,端口设置中,有两个端口必要设置端口映射,一个是3306,一个是33060端口。检察一下资料,两个端口是分别使用差别的协议来举行通信的。通常我们使用的都是3306, 以是只设置3306端口的映射即可(在输入框中输入一个端标语,前提是未被占用的端标语; 或者直接输入个0 ,会随机分配一个端标语)。
https://img-blog.csdnimg.cn/9d998acc745f4e62ac2ba657d1ba9495.png
3)Search 介绍如下
Search 的搜索框可以直接在这里搜索并且pull 下必要的镜像。
https://img-blog.csdnimg.cn/4935780afbca40c8b07a67519c6af8ae.png
https://img-blog.csdnimg.cn/2a887450a424410e9f4e02f942d6b055.png
尚有一些其他的功能,目前也使用不到,这里先不做记录和讲解了。后续用到了再记录吧;
八、在 cmd 窗体 使用 下令使用 Docker
使用快捷键: win+R 观察 cmd 窗体
https://img-blog.csdnimg.cn/7cedfdf5deb24b1d836c69a72ea7ad6f.png
1、对Docker使用
安装完成Docker后,默认每次开机的时间都会自动启动,但我们也可以手动启动,关闭或者重启Docker
# 启动docker
sudo service docker start
# 重启docker
sudo service docker restart
# 停止docker
sudo service docker stop
2、检察本机所有的镜像
docker images
# 或者
docker image ls
https://img-blog.csdnimg.cn/032cfe95d7344f5989472cfc2863fde4.png
标签含义REPOSITORY镜像所在的仓库名称TAG镜像标签IMAGEID镜像IDCREATED镜像的创建日期(不是获取该镜像的日期)SIZE镜像大小 3、拉去镜像(docker pull)
除了使用官方的镜像外,我们还可以在仓库中申请一个自己的账号,保存自己制作的举行,或者拉去使用他人的镜像。
# 官方镜像
docker image pull 镜像名称
# 或简写为
docker pull 镜像名称
# 比如
docker pull ubuntu
docker pull ubuntu:16.04
# 个人镜像
docker pull 仓库名称/镜像名称
docker pull xunmi/django
# 第三方仓库拉去
docker pull 第三方仓库地址/仓库名称/镜像名称
docker pull hub.c.163.com/library/mysql:latest
(默认仓库名为library,所有从官方获取镜像相当于`sudo docker image pull library/镜像名称`)
https://img-blog.csdnimg.cn/83d61d7a7ec74f11b7cb9d01c816e9d7.png
4、删除镜像(docker rmi)
docker image rm 镜像名或镜像ID 或 docker rmi 镜像名或镜像ID
docker image rm hello-world
docker rmi 9e64176cd8a2
删除镜像的前提是没有使用这个镜像的容器,假如有必要先删除容器(报错:Error response from daemon: conflict: unable to delete 镜像ID (must be forced) - image is being used by stopped container 容器ID则代表有容器使用了此镜像。)可以实验先实行docker rm 容器ID删除容器,假如还报错,可以看我下方删除容器的具体方法。 几条删除下令的区别
[*]docker rm: 删除一个或多个 容器
[*]docker rmi: 删除一个或多个 镜像
[*]docker prune: 用来删除不再使用的 docker 对象
https://img-blog.csdnimg.cn/b8dd2e2350b543d989ed3df6d4259ec6.png
5、加载镜像(docker run)
上面我们说过,镜像只是一个只读范例的文件,而我们的环境不可能只是一个这样的文件,以是我们必要把这个镜像加载成我们的环境,也就是让他变成容器。
docker run [可选参数] 镜像名 [向启动容器中传入的命令]
常用可选参数作用-i表示以《交互模式》运行容器。-d会创建一个保卫式容器在后台运行(这样创建容器后不会自动登录容器)。-t表示容器启动后会进入其下令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。–name为创建的容器命名。(默认会随机给名字,不支持中文字符!!!)-v表示目次映射关系,即宿主机目次:容器中目次。留意:最好做目次映射,在宿主机上做修改,然后共享到容器上。-p表示端口映射,即宿主机端口:容器中端口。 比如:-p 8080:80 就是将容器中的80端口,映射到主机中的8080端口–network=host表示将主机的网络环境映射到容器中,使容器的网络与主机雷同。每个 Docker 容器都有自己的网络连接空间连接到假造 LAN。使用此下令则会让容器和主机共享一个网络空间。 可以启动一个系统 docker run -i -d -t --name=kali-test kalilinux/kali-rolling(这里我使用linux的一个发行版kali作为介绍) 或可以简写为docker run -idt --name=kali-test kalilinux/kali-rolling PS: 假如加载一个我们没有的镜像,docker会自动从官方仓库中举行拉去。
https://img-blog.csdnimg.cn/cacf7cfec6af4cc29e30c69faaebc33e.png
或者我们可以启动一个网站docker run -dp 8080:80 --name docker-test docker/getting-started
https://img-blog.csdnimg.cn/8eeedc75849e400584849acd4cb5d3b2.png
假如你没有下载docker/getting-started的举行,这里会自动帮你下载
乐成启动后,可以在欣赏器中输入http://localhost:8080/即可看到如下页面
https://img-blog.csdnimg.cn/07052215879b49f5ac18e6f56d1e7e34.png
6、使用交互式容器
上面我们乐成将镜像变成了容器,但上述的下令中我们都加入了-d,让容器在后台运行了。下面我们就来讲怎样和正在运行的容器举行交互。
6.1、检察容器(docker ps)
检察容器紧张会用到ps下令
# 查看当前所有正在运行的容器
docker ps
# 查看当前所有的容器
docker ps -a
# 使用过滤器(除了name外,常用的还可以指定id:id= 、所有停止的容器:status=exited,正在运行的容器:status=running 等)
docker ps -f name=指定的名字
# 显示2个上次创建的容器(2可以改变)
docker ps -n 2
# 显示最新创建的容器(包括所有状态)
docker ps -l
# 仅显示ip
docker ps -q
# 显示容器大小
docker ps -s
标签含义CONTAINER ID镜像IDIMAGE创建容器的镜像名称COMMAND默认启动下令(启动时会自动实行)CREATED创建容器的日期STATUS当前的状态(启动了多久,多久之前退出等)PORTS映射的端口NAMES容器的名称SIZE容器大小(使用-s下令参数时才能看到) https://img-blog.csdnimg.cn/32ebe485120444238dda44f0cbaec2cd.png
6.2、启动和关闭容器
# 停止容器
docker container stop 容器名或容器id
# 或可简写为
docker stop 容器名或容器id
# 强制关闭容器
docker container kill 容器名或容器id
# 或可简写为
docker kill 容器名或容器id
# 启动容器
docker container start 容器名或容器id
# 或可简写为
docker start 容器名或容器id
[*]假如我们乐成启动或者关闭一个容器的话,会返回容器名或者容器id
[*]stop和kill的区别: stop是比较优雅的关掉一个容器,类似我们正常退出一个软件,而kill是当一个进程出现不测无法正常关闭的时间,我们强行举行关闭,有点像我们使用使命管理器举行结束进程使用。
https://img-blog.csdnimg.cn/2e867b2252514a7f916571852b5dfb31.png#pic_center
6.3、使用后台容器
之前我们下过一个kali并且放在了后台运行,假如没有下载可以实行下列下令(docker run -i -d -t --name=kali-test kalilinux/kali-rolling),下面我们就用下面的下令开启kali(假如你下的是其他系统,比如ubuntu也可以闻一知十一下)首先我们确保我们要进入的容器是开启状态的,使用docker ps -a检察其中的STATUS属性是否是Up开头,假如不是先照着上面启动容器的方法开启容器我们开启容器后,假如必要在容器内实行下令,可以将后台切换到前台,也可能使用docker下令将我们必要实行的下令传入。
使用方法有很多种,这里我们介绍一些比较常用的方法
# 如果我只需要执行简单的一两条命令可以使用docker exec
# 执行单条命令 (-i: 启动并且保留交互式命令行; -t:作用是分配一个虚拟的终端; docker run )
docker exec -it 容器名或容器id 执行的命令
# 比如
docker exec -it kali-test whoami
# 用这种方法,我们还可以启动命令行,根据Linux的特性,系统程序会在/bin中,linux中常用的Shell有多个,其中大部分用的Linux默认的为bash
# 所以我们启动命令可以自行如下命令(除了/bin/bash外,linux一般还会带/bin/sh、/bin/rbash、/bin/dash等,具体区别可以自行百度)
docker exec -it 容器名或容器id /bin/bash
# 比如
docker exec -it kali-test /bin/bash
# 除了exec外还有attach可以使用,但它有个弊端,多终端启动attach后,都会会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。
docker attach 容器名或容器id
# 比如
docker attach kali-test
exec可选参数作用-d会创建一个保卫式容器在后台运行(这样创建容器后不会自动登录容器)。-e设置环境变量-i表示以《交互模式》运行容器。-t表示容器启动后会进入其下令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。-u设置用户名和UID。-w设置容器内的工作目次。 https://img-blog.csdnimg.cn/713329bd7261447182943746d94b2735.png
除了上述方法外,在进入容器后,我们还可以实验安装SSH或者nsenter实验登陆,不过这两种方法都先进入容器安装后才能使用
# nsenter安装步骤
wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz
tar -xzvf util-linux-2.24.tar.gz
cd util-linux-2.24/
./configure --without-ncurses
make nsenter
sudo cp nsenter /usr/local/bin
6.4、删除容器(docker rm)
如我我们必要删除一个容器,首先必要确保这个容器已经停止了,因为正在运行的容器是无法直接删除。 我们可以运行一下docker ps -a,假如发现没有停止,可以使用docker stop停止(STATUS下已Exited开头则是停止的)
https://img-blog.csdnimg.cn/2b45c1c791f74f5cbcd268ab1e72381b.png
# 使用rm删除容器
docker rm 容器名或容器id
# 列如
docker rm docker-test
假如报错Error response from daemon: You cannot remove a running container 容器ID. Stop the container before attempting removal or force remove则代表这个容器已经启动,必要实行 docker stop 容器id,停止此容器。
6.5、容器制作成镜像
我们为什么要把容器制作成镜像?
[*]镜像可以看作为是一种备份,假如我们后期环境出现了问题,可以还原到早期镜像。
[*]镜像便于传播,可以让自己的其他装备或他人的重复使用变得更加简单容易。
# 将容器制作成镜像
docker commit 容器名 镜像名
# 镜像打包备份(打包备份的文件会自动存放在当前命令行的路径下,如果想让保存的文件可以打开,可以加.tar后缀)
docker save -o 保存的文件名 镜像名
# 镜像解压
docker load -i 文件路径/备份文件
我们将打包备份的镜像可以通过网络发送到其他装备上,使用docker镜像解压即可直接使用你的环境。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]