目录
前言
Docker是一种开源的应用容器引擎,它可以让开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。
Docker Desktop是一个用于Mac和Windows的Docker工具,它包含了Docker Engine、Docker CLI客户端、Docker Compose、Docker Machine和Kitematic。主要特点包括:
- 简单易用:Docker Desktop提供了一个图形用户界面,使得管理容器变得非常简单。你可以通过点击几个按钮来创建、启动和停止容器。
- 集成开发环境:Docker Desktop可以与你的IDE(如Visual Studio Code)集成,使得你可以直接在IDE中构建和运行容器。
- 支持多种操作系统:Docker Desktop支持Mac和Windows两种操作系统,这使得你可以在你最喜欢的操作系统上使用Docker。
- 支持Kubernetes:Docker Desktop包含了一个单节点的Kubernetes集群,你可以用它来测试你的应用。
- 支持多种应用:Docker Desktop支持运行各种应用,包括Web应用、数据库、后台服务等。
- 自动更新:Docker Desktop会自动检查并安装更新,这使得你总是可以使用最新的Docker版本。
这次我们使用的是Docker Desktop,面向初学者的教程,教你如何在win11系统中使用Docker Desktop,
如果你还没安装,可以看我之前发布的博客:手把手教你在Win11下安装docker-CSDN博客https://blog.csdn.net/btaworld/article/details/138505501
界面说明
由于docker desktop软件没有汉化翻译,可能阅读起来会有一些问题,下面是我用屏幕翻译软件翻译的截图,仅供参考(如果不希望阅读,可以点击边栏标题跳过):
设置界面翻译图+一些简单说明
差不多了,上面是一些个人感觉比较常用的设置(我也只是新手,其他的设置也没怎么用到)
主要功能界面介绍
这个页面是Docker镜像列表,展示了你之前拉取或创建的所有Docker镜像。每个镜像都有一个唯一的标识符,可能还包括标签和创建时间等信息。你可以使用这些镜像来创建新的Docker容器。
"Containers"页面是Docker Desktop的一个功能,它显示了你当前系统中所有的Docker容器,包括正在运行的和已经停止的。
关于切换docker镜像源
一言蔽之,不推荐
为什么?现在在官网拉取docker镜像速度不是特别慢,最好自己亲自试试
个人之前(大概2,3年)切换了阿里云的镜像源,使用一段时间后发现,阿里云的docker镜像源已经很久没更新了。。。
即使你硬要切换国内的镜像源,请不要用阿里的……
如何拉取镜像
Docker拉取镜像是通过docker pull命令实现的。这个命令从Docker镜像仓库(默认是Docker Hub)下载镜像到本地。
docker pull [镜像名词]
基本的命令格式是:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
其中:
- NAME:是镜像的名称,例如mysql、ubuntu等。
- TAG:是可选的,表示镜像的版本标签。如果不指定,Docker会默认拉取latest标签的镜像。
- DIGEST:是可选的,表示镜像的摘要。摘要是镜像内容的唯一哈希值,可以用来确保下载的镜像内容的完整性和一致性。
OPTIONS命令的一些选项包括:
- -a, --all-tags:拉取所有标签的镜像。
- --disable-content-trust:跳过镜像内容的信任检查。
例如,docker pull mysql:5.7命令会从Docker Hub拉取标签为5.7的mysql镜像,拉取最新镜像可以使用 docker pull mysql:latest 命令或直接运行 docker pull mysql 命令
搜索镜像
如果你知道你需要的镜像的名称,但不确定它是否存在或者它的确切名称,你可以使用docker search命令来搜索它。
基本的命令格式是:
docker search [OPTIONS] TERM
其中,TERM是你要搜索的关键词。
docker search命令的一些选项包括:
- --filter, -f:根据特定条件过滤搜索结果。
- --format:自定义输出格式。
- --limit:限制显示的搜索结果数量。
- --no-trunc:不截断输出结果。
例如,docker search mysql命令会搜索包含"mysql"关键词的所有镜像。
这个命令在以下场景中非常有用:
- 寻找特定的镜像:如果你知道你需要的镜像的名称,但不确定它是否存在或者它的确切名称,你可以使用docker search命令来搜索它。
- 探索新的镜像:如果你想要探索一些新的镜像,例如你想要找一些特定的数据库或者Web服务器的镜像,你可以使用docker search命令来搜索。
- 比较不同的镜像:docker search命令的输出包含了每个镜像的一些基本信息,如星级、是否是官方的、描述等。你可以使用这些信息来比较不同的镜像,以便选择最适合你的那个。
创建容器
拉取Docker镜像后(如果镜像未拉取,使用docker run命令会自动拉取),你可以使用docker run命令来基于这个镜像创建并启动一个新的容器。
docker run命令用于从Docker镜像创建一个新的容器,并运行它。这个命令是docker create和docker start命令的组合。
基本的命令格式是:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
其中:
- OPTIONS:是可选的,用于指定创建容器时的一些选项,如端口映射、环境变量、挂载卷等。
- IMAGE:是必需的,指定要运行的Docker镜像。
- COMMAND和ARG:是可选的,指定要在容器中运行的命令和参数。
例如,以下命令
docker run --name my-container ubuntu bash
会创建并运行一个名为my-container的容器,基于ubunt镜像,运行ubash命令
docker run命令的OPTIONS详细介绍
设置容器名词
--name:设置容器的名称。
例如,
docker run --name my-mysql mysql
会设置容器的名称为my-mysql。
以后台模式运行容器
-d, --detach:以后台模式运行容器。
例如,
docker run -d mysql
会在后台启动一个MySQL容器。
-d 或 --detach 选项用于在后台模式运行 Docker 容器。这意味着 Docker 会在后台启动并运行容器,而不会占用命令行或终端界面。当你运行 docker run -d mysql 命令时,Docker 会启动一个 MySQL 容器并在后台运行。你会立即返回到命令行提示符,而 MySQL 容器会在后台运行。推荐每次创建容器时添加上。
端口映射
-p, --publish:发布容器的一个或多个端口到主机。
例如,
docker run -p 3306:3306 mysql
会将MySQL容器的3306端口映射到主机的3306端口。
挂载多个端口:
例如,假设你有一个Nginx服务,它在容器的80端口提供HTTP服务,在容器的443端口提供HTTPS服务。你可以使用以下命令来运行这个Nginx的容器,并将这两个端口都映射到主机:
docker run -p 8080:80 -p 8443:443 --name my-nginx nginx
设置挂载卷
-v, --volume:挂载卷。
例如,
docker run -v /my/own/datadir:/var/lib/mysql mysql
会将主机的/my/own/datadir目录挂载到MySQL容器的/var/lib/mysql目录,这个目录是MySQL默认的数据目录。
注意:挂载卷可以直接挂载到win的系统目录下
假设你有一个Redis容器,你想将Windows的C:\data目录挂载到Redis容器的/data目录,你可以使用/c/data:
docker run -v /c/data:/data --name my-redis redis
或,直接使用C:\data:
docker run -v C:\data:/data --name my-redis redis
设置环境变量
-e, --env:设置环境变量。
例如,
docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
会设置MySQL的root用户的密码为my-secret-pw。
容器退出后自动删除容器
--rm:容器退出后自动删除容器。
例如,
docker run --rm mysql
会在MySQL容器退出后自动删除它。
容器的重启策略
--restart 选项会设置容器的重启策略,--restart选项有以下几个可选的值:
- no:这是默认值,容器不会被自动重启。
- on-failure:只有在容器非正常退出时(即退出状态非0),容器才会被自动重启。
- always:无论容器的退出状态是什么,容器都会被自动重启。
- unless-stopped:无论容器的退出状态是什么,容器都会被自动重启,除非容器已经被手动停止。
如果你希望每次运行docker,容器自动启动,可以使用设置--restart=always,例如:
docker run --restart=always --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
可以实现MySQL容器将会在Docker启动时自动启动。
如果已经创建了容器,可以使用docker update命令来更改容器的重启策略:
docker update --restart=always container_name
你需要将container_name替换为你的容器的名称或ID。
这个命令会将容器的重启策略设置为always,这意味着无论容器的退出状态是什么,容器都会被自动重启,除非Docker被停止。
使用Docker Compose配置文件.yml
在这里不做详细介绍,只介绍基础用法(我也只用过基础功能,后面会续继续学习……),以mysql举例:
version: '3.1'
services:
myaql_db:
image: mysql # mysql镜像,最新版本
restart: always # 重启策略,always表示总是重启
environment:
MYSQL_ROOT_PASSWORD: password # mysql的root用户密码
volumes:
- ./mysql_text/data:/var/lib/mysql # mysql数据存储目录
- ./mysql_text/conf:/etc/mysql/conf.d # mysql配置文件目录
- ./mysql_text/logs:/var/log/mysql # mysql日志目录
ports:
- 3306:3306
这是一个Docker Compose的配置文件,用于定义和运行一个名为myaql_db的MySQL服务。下面是每个部分的详细解释:
- version: '3.1':这是Docker Compose文件的版本号,它决定了可以使用哪些Docker Compose的特性。
- services::这个关键字下面列出了运行的所有服务(在这个例子中,只有一个服务myaql_db)。
- myaql_db::定义的服务的名称。
- image: mysql:5.7:这个服务使用的Docker镜像的名称和标签。这里使用的是MySQL 5.7版本的镜像。
- restart: always:这个选项决定了Docker何时应该重启这个容器。always表示Docker总是应该重启这个容器,无论它是如何停止的。
- environment::这个关键字下面列出了设置在容器内的环境变量。在这个例子中,设置了MySQL的root用户的密码。
- volumes::这个关键字下面列出了所有挂载到容器内的卷。在这个例子中,
- 当前目录下的mysql_text/data目录被挂载到了容器的/var/lib/mysql目录,
- mysql_text/conf目录被挂载到了容器的/etc/mysql/conf.d目录,
- mysql_text/logs目录被挂载到了容器的/var/log/mysql目录。
- ports::这个关键字下面列出了所有映射到主机的端口。在这个例子中,容器的3306端口被映射到了主机的3306端口。
将上面的内容保存为docker-compose.yml文件,并在该文件所在的目录下运行
docker-compose up
命令,Docker Compose将会根据这个配置文件创建并启动一个名为myaql_db的MySQL服务。
如果你将这个文件保存为一个非docker-compose.yml的名字,例如mycompose.yml,你需要在运行docker-compose up命令时指定这个文件名。你可以使用-f选项来指定配置文件的名字,例如:
docker-compose -f mycompose.yml up
结语
如何在Win11中使用docker desktop教学的内容,已经结束。
如果你发现有任何遗漏或错误,或者有任何建议和问题,欢迎在评论区留言或私信我,我会尽快进行修改和回复。
感谢你的阅读和支持!