定义:
Docker 是一种容器化技术,允许将应用及其依赖打包成一个轻量级、可移植的容器。
-
镜像(Image):只读模板,包含运行应用所需的文件系统(如 Ubuntu + Nginx)。
-
容器(Container):镜像的运行实例,可启动、停止、删除。
-
仓库(Registry):存储镜像的地方(如 Docker Hub)。
用docker部署mysql
- 用docker下载的是镜像,下载好就可以直接运行
- 镜像可以理解成是绿色免安装的一个包,里面只具备能保证镜像对应服务运行的最小化配置。
(正常我们点击安装包安装后会有一堆新文件存储在磁盘中,我们将这些文件一块放在一个压缩内,一解压就能直接点击.exe文件启动,这个压缩包就叫绿色免安装包)
- Docker官方维护了一个公共仓库:DockerHub,存储和管理镜像的平台,提供各种软件的镜像。
- 镜像一次下载可以多次运行
- 运行镜像时创建一个隔离环境,称为容器(container)。容器之间互不干扰。

部署mysql的命令解析

- docker run 表示下载创建运行 一条龙
- 端口映射:container内有自己独立的环境,并且不对外暴露,即外部无法直接访问container内的服务。那么我们容器中的mysql服务就无法被外界访问到了,这样不行,解决办法就是设置端口映射,3306->3306表示宿主机的3306端口映射到container内的3306端口,这样访问宿主机的3306就是访问container内的mysql服务了。
- 我们可以启动多次mysql镜像,这样就有多个mysql容器,需要多组到3306的映射。

常见命令
- docker run 表示 下载镜像、创建新容器、在容器中运行进程 一条龙
- 吧停掉的容器重启,不能用docker run 这样会创建新容器,要用docker statrt。 docker statrt启动了容器内的进程,也就是启动了容器

查看容器

镜像和本地文件的相互转换


打印日志

容器内命令:




linux别名
有时输入一条命令太长太麻烦了,我们可以创建一个别名指示这条命令。具体创建别名的步骤如下:



结果展示:

数据挂载
- 背景:我们如果要修改容器内的文件,十分不方便。而宿主机有着各种操作命令可以修改文件,而这些命令是容器内没有的。这时我们就想着通过挂载将容器内文件映射到宿主机目录下,然后直接在宿主机上修改文件,更加方便得多。
- 挂载分为 数据卷挂载 和 目录挂载
数据卷挂载(volume)
- 数据卷原理:

- 通过数据卷映射后,宿主机和容器之间的映射内容是实时同步的。




自动同步功能展示:

查看容器中是否有数据卷

不推荐使用匿名挂载

目录挂载
用数据卷挂载的话,在宿主机中的挂载的信息只能在系统特定位置,十分不便。
如果用目录挂载的话,就可以实现在宿主机中的挂载的信息位于自定义位置。
如何使用目录挂载?
在创建容器时指定要创建数据卷挂载还是目录挂载。


自定义镜像
镜像的结构
镜像里面的一层层实际就是一个个压缩包。
每个文件不是直接放到镜像里去的,而是压缩成一个个压缩包,在把压缩包们全放到镜像中,构成镜像中的层。

镜像中有些部分总是重复的,我们如果每次构建镜像都去重复构建这部分的话,太麻烦。我们把这部分上传到镜像库中,作为基础镜像,之后每次构建相关镜像就直接从镜像库中拉取这个基础镜像,在此基础上就只需要再构建别的一些层就可以了,就方便得多。

在拉取新镜像时,如果新镜像中的层在宿主机中已存在,那么就会用已存在的,而不会再拉取。

Dockerfile

构建java镜像的Dockerfile

把重复操作抽象成基础镜像,再拉取基础镜像进行构建Dockerfile,简化操作:




- 注意点:
- Dockerfile文件的文件名一定只能是Dockerfile