目录

前言

学习Docker中的 专有名字

📦 镜像(Image)

🚀 容器(Container)

📂 仓库(Repository)

Run的流程

案例演示1

案例演示2

补充


前言


上一篇博客介绍了,docker的安装,及其集成wsl和配置国内镜像 下载镜像:

https://blog.csdn.net/m0_74124657/article/details/156836207?fromshare=blogdetail&sharetype=blogdetail&sharerId=156836207&sharerefer=PC&sharesource=m0_74124657&sharefrom=from_link


学习Docker中的 专有名字

介绍 学习docker过程中的几个专有名字:镜像,容器,仓库等

📦 镜像(Image)

本质:一个只读的、打包好的文件系统,包含了运行某个应用所需的所有内容 —— 代码、运行时环境、库、配置文件等。
类比:java中的class类,类中有属性,方法,你只需要启动,就可以将代码跑起来
特点:镜像本身是不可修改的,每次修改都会生成一个新的镜像层。

🚀 容器(Container)


本质:镜像的一个运行实例,是一个独立的、可运行的进程。它在镜像的基础上,加上了一层可写的文件系统,用来保存运行时产生的数据。
类比:java中的对象,是基于class类存在。先有镜像后有容器
特点:容器之间相互隔离,拥有自己独立的网络、进程空间和文件系统,启动速度极快(秒级)。

📂 仓库(Repository)


本质:用来存放和分享镜像的地方,类似代码托管平台(如 GitHub)。
类比:maven仓库,你可以把自己的镜像/依赖推上去,也可以从上面拉取别人的镜像/依赖。
Docker Hub:官方公共仓库,包含大量公开镜像(如 MySQL、Nginx)。

地址:https://hub.docker.com/
私有仓库:公司内部搭建的,用来存放自己的镜像,保证安全。
国内镜像源:阿里云、网易等,用来加速拉取官方镜像。

Run的流程

“Run的流程” 顾名思义也就是说  将docker容器跑起来

Docker run 【具体的镜像名字、id】
docker ps 【检查容器是否正常启动】

当你使用这个docker命令后,他其实做了一下几件事:

1检查本地有没有你将要启动容器的镜像

举一个例子:你要启动mysql容器,那么他会使用docker images 查出你当前下载的镜像中是否有你要运行的镜像,如果没有需要你从docker仓库下载

此时 docker run 和 docker images 查看当前下载的镜像 等同

2支持 从远程仓库下载,本地不存在的镜像 

举一个例子:你要启动mysql 容器,但是发现本地 根本不存在对应的镜像,这时候就会从docker 远程仓库 下载对应的镜像 

此时  docker run 和 docker pull   拉取对应的镜像  等同

3 启动 容器(核心功能)

举一个例子:你要启动mysql 容器,当你发现 docker远程仓库中,找不到对应的镜像 比如说mysql 最新的是12,但是你执行的docker命令是 docker run mysql24类似的。因为远程仓库中,根本没有这样的镜像。所以最终启动失败

如下图所示:


案例演示1

前提:1 wsl 和docker建立关系,2配置国内镜像/使用梯子 提高镜像下载效率

要求:下载最新的mysql镜像

输入命令:

docker run mysql

执行-mysql镜像下载成功

但是你会发现有报错的原因是要求你设置密码

用下面这个命令来启动,它会设置密码、映射端口,并让容器在后台运行:

docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

这个命令里的关键参数:
-d:后台运行容器
-p 3306:3306:把宿主机的 3306 端口映射到容器的 3306 端口,这样你就可以用 Navicat 等工具连接了
--name mysql:给容器起个名字,方便后续管理
-e MYSQL_ROOT_PASSWORD=123456:设置 root 密码为 123456(你可以改成自己的密码)

如下图所示,可以注意到mysql容器已经启动成功了

可以docker命令 查看容器的状态,观察容器是否启动成功

docker ps

同时,也可以看到dockerdesktop中已经出现了,刚刚成功启动的mysql

案例演示2

前提:1 wsl 和docker建立关系,2配置国内镜像/使用梯子 提高镜像下载效率

要求:下载mysql24 镜像

注意:mysql24在远程仓库中是不存在的,因此正常情况下会,显示拉取失败!

该图显示的问题 和“补充”中的第二点是一样的


补充

1当你使用docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest 命令启动mysql发现 3306端口号被占用

如图所示:

解决办法:

1 不使用3306作为mysql的端口号

2 关闭阻碍进程,重新执行mysql启动命令

关闭之后,重新执行命令就可以了

2当你 使用docker run mysql ,本地不存在,去远程仓库下载

出现如图所示情况,原因是 

1 网络或者使用其他手段的信号不好,需要你重新设置

2 下载的镜像在docker远程仓库中找不到

3 命令写错了

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐