使用 Dockerfile
# 1. 创建一个 Dockerfile 文件,并且指定自定义镜像信息。
# Dockerfile文件中常用的内容
from∶ 指定当前自定义镜像依赖的环境
copy∶ 将相对路径下的内容复制到自定义镜像中
workdir∶ 声明镜像的默认工作目录
cmd∶ 需要执行的命令(在workdir下执行的,cmd可以写多的,只以最后一个为准)
# 举个例子,自定义一个 tomcat 镜像,并且将 ssm.war 部署到 tomcat 中
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps
# 2. 使用 Docker 命令制作镜像
docker build -t 镜像名称[:tag] .
使用 docker-compose
使用
docker-compose
的好处:
– 之前运行一个镜像,需要添加大量的参数。
– 可以通过 Docker-Compose 编写这些参数。
– Docker-Compose 可以帮助我们批量的管理容器。
– 只需要通过一个 docker-compose.yml 文件去维护即可。
下载安装 docker-compose
# 1. 去github官网搜索docker-compose,下载1.24.1版本的Docker-Compose
https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
# 2. 需要将DockerCompose文件的名称修改一下,基于DockerCompose文件一个可执行的权限
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose
# 3. 方便后期操作,配置一个环境变量
# 将docker-compose文件移动到了/usr/local/bin
mv docker-compose /usr/local/bin
# 4. 添加环境变量
vim /etc/profile
export PATH=/usr/local/bin:$PATH
source /etc/profile
# 5. 测试一下
# 在任意目录下输入docker-compose
docker-compose 命令
# 在使用 docker-compose 的命令时,默认会在当前目录下找 docker-compose.yml 文件
# 1. 基于docker-compose.yml启动管理的容器
docker-compose up -d
# 2. 关闭并删除容器
docker-compose down
# 3. 开启关闭重启已经存在的由docker-compose维护的容器
docker-compose start|stop|restart
# 4. 查看由docker-compose管理的容器
docker-compose ps
# 5. 查看日志
docker-compose logs -f
案例:Docker-Compose 管理 MySQL 和 Tomcat 容器
yml 文件以 key∶ value 方式来指定配置信息多个配置信息以换行 + 缩进的方式来区分在 docker-compose.yml 文件中,不要使用制表符
version:'3.1'
services:
mysql: # 服务的名称
restart: always # 代表只要Docker启动,那么这个容器就跟着一起启动
image: mysql:5.7 # 指定镜像名称
container_name: mysql # 指定容器名称 --name
ports: # -p
- 3306:3306 # 指定端口号的映射
- 3308:3308 # 映射多个端口
environment:
MYSQL_ROOT_PASSWORD: 123456 # 指定MySQL的ROOT用户登录密码
TZ: Asia/Shanghai # 指定时区
volumes:
- /800-config/mysql/data:/var/lib/mysql # 映射数据卷
tomcat:
restart: always # 代表只要Docker启动,那么这个容器就跟着一起启动
image: tomcat:8.5.15 # 指定镜像路径
container_name: tomcat # 指定容器名称
ports:
- 8080:8080
environment: # 指定时区
TZ: Asia/Shanghai
volumes:
- /opt/docker_mysql-tomcat/tomcat_webapps:/usr/local/tomcat/webapps
- /opt/docker_mysql-tomcat/tomcat_logs:/usr/local/tomcat/logs
docker-compose 配置 Dockerfile 使用
使用 docker-compose.yml 文件以及 Dockerfile 文件在生成自定义镜像的同时启动当前镜像,并且由 docker-compose 去管理容器
# yml文件
version: '3.1'
services:
ssm: # 部署的工程名
restart: always
build: # 构建自定义镜像
context: ./ # 指定 Dockerfile 文件所在路径
dockerfile: Dockerfile # 指定 Dockerfile 文件名称
image: ssm:1.0.1 # 构建的镜像名称
container_name: ssm # 启动的容器名称
ports:
- 8081:8080
environment:
TZ: Asia/Shanghai
# Dockerfile 文件
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps
# 可以直接启动基于 docker-compose 和 Dockerfile 文件构建的自定义镜像
docker-compose up -d
# 如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个自定义镜像
# 重新构建自定义镜像
docker-compose build
# 运行前重新构建
docker-compose up -d build
Docker-compose 直接使用和配合 Dockerfile 文件使用的区别是:
docker-compose 是从网络上 pull 镜像,然后进行启动,docker-compose 配合 Dockerfile 会 build 镜像,然后启动镜像,docker-compose 直接使用并不会 build 镜像。