Docker Desktop 使用笔记

发布时间 2023-09-15 00:54:27作者: 流星Studio

一、Docker Desktop是什么?

  Docker Desktop是适用于Windows的Docker桌面,是Docker设计用于在Windows 10上运行。它是一个本地 Windows 应用程序,为构建、交付和运行dockerized应用程序提供易于使用的开发环境。Docker Desktop for Windows 使用 Windows 原生 Hyper-V 虚拟化和网络,是在 Windows 上开发 Docker 应用程序的最快、最可靠的方式。Windows 版 Docker 桌面支持运行 Linux 和 Windows Docker 容器。

tips:docker真的很香,部署环境省不少事。

二、启用Hyper-V以创建虚拟机:

在 Windows 10 上启用 Hyper-V | Microsoft Learn

注意:可以通过多种方式启用 Hyper-V,包括使用 Windows 10 控制面板、PowerShell(Hyper-V 作为可选功能内置于 Windows -- 无需下载 Hyper-V)。

1、使用 PowerShell 启用 Hyper-V

以管理员身份打开 PowerShell 控制台,运行以下命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

2、通过控制面板“设置”启用 Hyper-V 角色

  1. 右键单击 Windows 按钮并选择“应用和功能”。
  2. 选择相关设置下右侧的“程序和功能”。
  3. 选择“打开或关闭 Windows 功能”。
  4. 选择“Hyper-V”,然后单击“确定”。

选择Hyper-Vlinux子系统容器

注意:安装完成后,系统会提示你重新启动计算机。

三、WSL安装

1、升级WSL到WSL2

首先需要确保已经安装了WSL,才能从WSL升级到WSL2。
管理员打开cmd输入

先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发版。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
第一步:打开系统虚拟机平台
系统更新并重启后,我们就可以开始 wsl 的升级了

首先,需要打开“系统虚拟机平台”功能,在“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭Windows功能”,勾选对应选项即可。

也可以通过在管理员权限下的 cmd 或 PowerShell 中执行:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
配置完成等待系统自动重启即可。

2、将wsl2设置为默认

安装新的 Linux 分发版时,请在 Powershell 中运行以下命令,以将 WSL 2 设置为默认版本:
wsl --set-default-version 2

四、Dokcer Desktop安装:

下载

官方下载地址:Docker Desktop Installer.exe 下载地址

国内镜像:Windows安装包下载地址

Windows 的 Docker 桌面说明:Install Docker Desktop on Windows | Docker Docs

安装:

双击下载成功的Docker Desktop Installer.exe应用。

等待安装完毕即可。

验证安装是否成功

PowerShell查看Docker版本:输入dcoker version,控制台输出ClientServer就是代表安装成功了。

验证是否可以正常使用:

打开命令行窗口运行以下命令:

docker run hello-world

看到输出Hello from docker则表示安装成功,且能正常工作。

五、常用命令

1. docker 进程

docker 进程启动、停止、重启,常见的三种 case

# 启动docker
service docker start
# 关机docker
service docker stop
# 重启docker
service docker restart

2. 镜像操作

镜像作为容器执行的前提条件,一般需要掌握的几个命令无非是搜索,下载,删除,创建

# 镜像列表
docker images
# 检索镜像, 从镜像仓库中检索
docker search xxx
# 下载镜像
docker pull xxx
# 删除镜像
docker rmi xxx

关于创建镜像,有必要稍微详细一点点

# 通过容器创建镜像
docker commit -m="首次提交" -a="一灰灰Blog" dd85eb055fe8 yh/centos:v0.1
# 镜像历史查询
docker history yh/centos

上面的几个参数进行说明

  • -m 和 git 的提交一样,后面更上描述信息
  • -a 版权声明,这个东西是我创建的,有啥问题,找我
  • dd85eb055fe8 容器 id
  • yhh/quick-os:0.1 创建的镜像名

3. 容器操作

接下来就是正菜了,容器的各种操作,启动,关闭,重启,日志查询以及各种进入容器内部搞事情

a. run

万事开头第一步,加载镜像,创建容器

docker run 镜像名:版本

run 后面可以跟很多的参数,比如容器暴露端口指定,存储映射,权限等等,由于参数过多,下面只给出几个不同的例子,来具体的演示参数可以怎么加

case1: 创建并后台执行

docker run -i -t -d centos:latest
  • 其中关键参数为-d,指定容器运行与前台或者后台,不加上时前台
  • -i: 打开 STDIN,用于控制台交互
  • -t: 支持终端登录

case2: 运行一个带命令在后台不断执行的容器

docker run -d centos:latest ping www.baidu.com

case3: 运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑

docker run -d --restart=always centos:latest ping www.baidu.com

case4: 指定容器名

docker run -d --name=yhh_centos centos:latest

case5: 暴露容器端口 80,并与宿主机端口 8080 绑定注意:容器内网ip为172.17.0.2

docker run -d --name=yhh_centos -p 8080:80 centos:latest

case6: 指定容器与宿主机目录(/home/yihui/html/www)共享

docker run -d --name=yhh_centos -v /home/yihui/html/www:/var/www centos:latest

-e:指定环境变量 -e XXXENV=xxxx

b. 基操

容器创建完毕之后,就是一些基本操作了,启动、停止、重启、删除

# 查看容器列表, 列出所有的容器
docker ps -a
# 启动容器,start后面可以跟上容器名,或者容器id
docker start xxx  # (这里的xxx可以是容器名:yhh_centos 也可以是容器id:f57398ab22c5)
# 关闭容器
docker stop xxx
# 重启
docker restart xxx
# 删除
docker rm xxx

在查看容器列表时,如果某个容器的启动参数特别长,直接使用docker ps -a会发现看不到完整的启动命令,这个时候可以带上参数--no-trunc来显示完整命令

docker ps -a --no-trunc

c. 进阶

接下来进入一些容器的高级操作技巧(实际上也并没有特别酷炫)

为了演示一些进阶的内容,这里创建一个容器作为测试

docker run -it -d --name=yhhos centos

容器日志查询

日志,定位问题的神器

# 查询xxx容器的日志
docker logs yhhos

基本上不太会直接使用上面的命令,因为上面把所有的日志都打印出来了,可以直接晃瞎我们的钛合金 x 眼

一般日志可以加两个参数 -f, -t

docker logs -f -t --since="2019-05-11" --tail=10 yhhos
  • --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
  • -f : 查看实时日志
  • -t : 查看日志产生的日期
  • --tail=10 : 查看最后的 10 条日志。

文件拷贝

将容器的某个文件捞出来;或者强塞,一个 cp 即可

# 将当前目录的test.md文件拷贝到容器的 /tmp 目录下
docker cp test.md yhhos:/tmp

# 将容器的/tmp/test.md目录拷贝到当前目录下
docker cp yhhos:/tmp/test.md ./out.md

进入容器

进入容器内部,然后就可以为所欲为了...

docker exec -it yhhos /bin/bash

获取容器所有信息

docker inspect yhhos