Linux知识
docker 使用
docker 官网可以查各个官方维护的镜像以及参数
docker 命令
1 | |
1 | |
如果要再运行一个 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 自定义网络 容器名称 添加容器到自定义网络
部署项目
部署后端
- 项目打成 jar 包,构建 docker 镜像,然后都放入 Linux 里面的一个文件夹
- 运行 docker build 构建镜像
docker build -t 自定义镜像名称:版本号 . - 通过 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一键停止