Linux知识

docker 使用

docker 官网可以查各个官方维护的镜像以及参数

docker 命令

1
2
3
4
5
6
7
8
9
10
docker pull         # 拉取镜像
docker images # 列出镜像
docker run # 创建并运行镜像
docker ps # 列出正在运行的容器 -a 列出所有容器
docker stop # 停止容器
docker start # 启动容器
docker rm # 删除容器
docker rmi # 删除镜像
docker build # 构建镜像
docker push # 推送镜像
1
2
3
4
5
6
7
8
9
10
11
# -d 后台运行
docker run -d \
# --name 容器名称,不能重复
--name mysql \
# -p 设置端口映射,宿主机端口:容器端口
-p 3306:3306 \
# -e KEY=VALUE 设置环境变量,由镜像提供者提供,可在docker官网查看
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
# 镜像名称 [repository:tag]名称和版本,版本不写就默认 latest
mysql

如果要再运行一个 Mysql 容器,就起个别名,然后因为宿主机 3306 一斤背上一个容器占用,就改成 3307:3306,依旧映射到容器的 3306 端口(MySql 默认端口是 3306)

docker 数据卷

通过数据卷将容器内的目录和 docker 数据卷的目录实现双向绑定,修改宿主机的数据,容器的数据也会跟着改变
docker run -d -v mysql_volume:/var/lib/mysql mysql -v 数据卷名称:容器目录的映射
docker volume ls 列出数据卷

docker 本地目录挂载

基于宿主机目录实现 MySQL 是数据目录,配置文件,初始化脚本的挂载,目录要查官方镜像文档
如果前面以/开头就是宿主机目录
docker run -d -v /root/data/mysql:/var/lib/mysql mysql -v 宿主机目录:容器目录的映射

自定义镜像

  • 镜像是分层的,基础环境、系统函数库等是基础镜像,多个镜像可以共享基础镜像层,比如 Ubuntu 和 JDK 都有官方做的基础镜像
  • 自定义镜像可以用Dockerfile来描述镜像结构
  • 最后用docker build -t 自定义镜像名称:版本号 Dockerfile_路径来构建镜像

docker 网络

  • docker 所有容器都是用 bridge 方式连接到一个网桥上
  • 172.17.0.1/16 是默认的网段,前面是 docker0 的 ip 地址

自定义网络
docker network create -d 自定义网络名称 建立自定义网络
docker network connect 自定义网络 容器名称 添加容器到自定义网络

部署项目

部署后端

  1. 项目打成 jar 包,构建 docker 镜像,然后都放入 Linux 里面的一个文件夹
  2. 运行 docker build 构建镜像
    docker build -t 自定义镜像名称:版本号 .
  3. 通过 docker run 运行新创建的镜像
    docker run -d -p 8080:8080 --network 自定义网络名称 自定义镜像名称:版本号

部署前端

创建一个新的 nginx 容器,挂载配置文件和静态页面
docker run -d -p 18080:18080 -p 18081:18081 -v /root/data/nginx/html:/usr/share/nginx/html -v /root/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf --network 和后端相同的网络名称 nginx

DockerCompose

通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的应用容器,帮助我们实现多个相互关联的 Docker 容器的快速部署,就比如把上面的前端和后端直接放在一起

docker compose 的命令格式
docker compose [OPTIONS] [COMMAND]
docker compose up -d一键启动
docker compose down一键停止


Linux知识
http://www.981928.xyz/2026/01/12/Linux知识/
作者
981928
发布于
2026年1月12日
许可协议