Run的流程和Docker的专有名字
目录
前言
上一篇博客介绍了,docker的安装,及其集成wsl和配置国内镜像 下载镜像:
学习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 命令写错了

更多推荐





所有评论(0)