type
Post
status
Published
date
Apr 10, 2026
slug
summary
tags
category
icon
password
1. 安装
1.1 官方教程
1.2 卸载旧版
首先如果系统中已经存在旧的Docker,则先卸载:
1.3 配置Docker的yum库
首先要安装一个yum工具
安装成功后,执行命令,配置Docker的yum源(已更新为阿里云源):
更新yum,建立缓存
1.4 安装Docker
最后,执行命令,安装Docker
1.5 启动和校验
1.6 配置镜像加速
镜像地址可能会变更,如果失效可以百度找最新的docker镜像。
配置镜像步骤如下:
2. 命令
2.1 官方教程
2.2 常见命令
命令 | 说明 | 文档地址 |
docker pull | 拉取镜像 | |
docker push | 推送镜像到DockerRegistry | |
docker images | 查看本地镜像 | |
docker rmi | 删除本地镜像 | |
docker run | 创建并运行容器(不能重复创建) | |
docker stop | 停止指定容器 | |
docker start | 启动指定容器 | |
docker restart | 重新启动容器 | |
docker rm | 删除指定容器 | |
docker ps | 查看容器 | |
docker logs | 查看容器运行日志 | |
docker exec | 进入容器 | |
docker save | 保存镜像到本地压缩文件 | |
docker load | 加载本地压缩文件到镜像 | |
docker inspect | 查看容器详细信息 |
用一副图来表示这些命令的关系:

2.3 命令别名
3. 数据卷
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。
命令 | 说明 | 文档地址 |
docker volume create | 创建数据卷 | |
docker volume ls | 查看所有数据卷 | |
docker volume rm | 删除指定数据卷 | |
docker volume inspect | 查看某个数据卷的详情 | |
docker volume prune | 清除数据卷 |
提示:
/var/lib/docker/volumes这个目录就是默认的存放所有容器数据卷的目录,其下再根据数据卷名称创建新目录,格式为/数据卷名/_data。为什么不让容器目录直接指向宿主机目录呢?
- 因为直接指向宿主机目录就与宿主机强耦合了,如果切换了环境,宿主机目录就可能发生改变了。由于容器一旦创建,目录挂载就无法修改,这样容器就无法正常工作了。
- 但是容器指向数据卷,一个逻辑名称,而数据卷再指向宿主机目录,就不存在强耦合。如果宿主机目录发生改变,只要改变数据卷与宿主机目录之间的映射关系即可。
不过,我们通过由于数据卷目录比较深,不好寻找,通常我们也允许让容器直接与宿主机目录挂载而不使用数据卷,具体参考2.2.3小节。
两种方式,注意区分:
- 目录挂载:
v /app/nghtml:/usr/share/nginx/html
- 卷映射:
v ngconf:/etc/nginx
4. 自定义镜像
镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。
4.1 镜像结构
自定义镜像本质就是依次准备好程序运行的基础环境、依赖、应用本身、运行配置等文件,并且打包而成。
举个例子,我们要从0部署一个Java应用,大概流程是这样:
- 准备一个linux服务(CentOS或者Ubuntu均可)
- 安装并配置JDK
- 上传Jar包
- 运行jar包
那因此,我们打包镜像也是分成这么几步:
- 准备Linux运行环境(java项目并不需要完整的操作系统,仅仅是基础运行环境即可)
- 安装并配置JDK
- 拷贝jar包
- 配置启动脚本
上述步骤中的每一次操作其实都是在生产一些文件(系统运行环境、函数库、配置最终都是磁盘文件),所以镜像就是一堆文件的集合。
但需要注意的是,镜像文件不是随意堆放的,而是按照操作的步骤分层叠加而成,每一层形成的文件都会单独打包并标记一个唯一id,称为Layer(层)。这样,如果我们构建时用到的某些层其他人已经制作过,就可以直接拷贝使用这些层,而不用重复制作。
例如,第一步中需要的Linux运行环境,通用性就很强,所以Docker官方就制作了这样的只包含Linux运行环境的镜像。我们在制作java镜像时,就无需重复制作,直接使用Docker官方提供的CentOS或Ubuntu镜像作为基础镜像。然后再搭建其它层即可,这样逐层搭建,最终整个Java项目的镜像结构如图所示:

4.2 Dockerfile
由于制作镜像的过程中,需要逐层处理和打包,比较复杂,所以Docker就提供了自动打包镜像的功能。我们只需要将打包的过程,每一层要做的事情用固定的语法写下来,交给Docker去执行即可。而这种记录镜像结构的文件就称为Dockerfile,其对应的语法可以参考官方文档:
Docker DocumentationDockerfile reference
Dockerfile reference
Find all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, and more.
指令 | 说明 | 示例 |
FROM | 指定基础镜像 | FROM centos:6 |
ENV | 设置环境变量,可在后面指令使用 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./xx.jar /tmp/app.jar |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
基于Ubuntu镜像来构建一个Java应用,其Dockerfile内容如下:
很多java项目需要打包为镜像,都需要Linux系统环境、JDK环境这两层,只有上面的3层不同(因为jar包不同)。有人提供了基础的系统加JDK环境,我们在此基础上制作java镜像,就可以省去JDK的配置了:
4.3 构建镜像
5. 网络
默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上:

但是,容器的网络IP其实是一个虚拟的IP,其值并不固定与某一个容器绑定,如果我们在开发时写死某个IP,而在部署时很可能MySQL容器的IP会发生变化,连接会失败。所以,我们必须借助于docker的网络功能来解决这个问题,官方文档:
Docker Documentationdocker network
docker network
I'm Gordon, your AI assistant for Docker and documentation questions.
常见命令有:
命令 | 说明 | 文档地址 |
docker network create | 创建一个网络 | |
docker network ls | 查看所有网络 | |
docker network rm | 删除指定网络 | |
docker network prune | 清除未使用的网络 | |
docker network connect | 使指定容器连接加入某网络 | |
docker network disconnect | 使指定容器连接离开某网络 | |
docker network inspect | 查看网络详细信息 |
5.1 Redis主从同步集群
5.2 启动MySQL
6. Docker Compose
Docker Compose可以帮助我们实现多个相互关联的Docker容器的快速部署。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器。docker-compose.yml文件的基本语法可以参考官方文档:
Docker DocumentationLegacy versions
Legacy versions
I'm Gordon, your AI assistant for Docker and documentation questions.
6.1 命令式安装
6.2 compose.yaml
6.3 基础命令
编写好docker-compose.yml文件,就可以部署项目了。常见的命令:
Docker Documentationdocker compose
基本语法如下:
docker compose
I'm Gordon, your AI assistant for Docker and documentation questions.
其中,OPTIONS和COMMAND都是可选参数,比较常见的有:
类型 | 参数或指令 | 说明 |
Options | -f | 指定compose文件的路径和名称 |
ㅤ | -p | 指定project名称。project就是当前compose文件中设置的多个service的集合,是逻辑概念 |
Commands | up | 创建并启动所有service容器 |
ㅤ | down | 停止并移除所有容器、网络 |
ㅤ | ps | 列出所有启动的容器 |
ㅤ | logs | 查看指定容器的日志 |
ㅤ | stop | 停止容器 |
ㅤ | start | 启动容器 |
ㅤ | restart | 重启容器 |
ㅤ | top | 查看运行的进程 |
ㅤ | exec | 在指定的运行中容器中执行命令 |
6.3 特性
- 增量更新
- 修改 Docker Compose 文件。重新启动应用。只会触发修改项的重新启动。
- 数据不删
- 默认就算down了容器,所有挂载的卷不会被移除。比较安全
6. Dockerfile
7. 附录 - 一键安装超多中间件
7.1 yaml
注意:
- 将下面文件中
kafka的119.45.147.122改为你自己的服务器IP。
- 所有容器都做了时间同步,这样容器的时间和linux主机的时间就一致了
准备一个
compose.yaml文件,内容如下:7.2 启动
tip:如果重启了服务器,可能有些容器会启动失败。再执行一遍
docker compose up -d即可。所有程序都可运行成功,并且不会丢失数据。请放心使用。7.3 访问
- Author:High
- URL:http://preview.tangly1024.com/article/33e7eb9b-7b98-804c-8106-eb11e1eb0733
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!



