docker 使用 Dockerfile 和 docker-compose

docker 2021-05-07 1.04K

使用 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 镜像。


关注微信公众号『极客技术之路

第一时间了解最新动态
关注博主不迷路~

极客技术之路:站内收集的部分资源来源于网络,若侵犯了您的合法权益,请联系我们删除!
分享到:
赞(0)

文章评论

0点赞 0评论 收藏 QQ分享 微博分享

极客技术之路

极客技术之路