Docker基础(三)——Docker-compose使用及配置

本文介绍了如何下载和配置Docker-Compose,通过编写docker-compose.yml文件来管理MySQL和Tomcat容器,包括启动、关闭、重启及查看容器状态等操作。此外,还展示了如何结合Dockerfile创建自定义镜像并启动。

Docker-Compose

之前运行一个镜像,需要添加大量的参数。

可以通过Docker-Compose编写这些参数。

Docker-Compose可以帮助我们批量的管理容器。

只需要通过一个docker-compose.yml文件去维护即可。

1.下载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. 将下载好的文件拖拽到Linux系统中
将文件上传到你所使用的服务器或者虚拟机,然后将文件移动到/usr/local

# 3. 需要将Docker-Compose文件的名称修改一下,基于Docker-Compose文件一个可执行的权限
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose

# 4. 方便后期操作,配置一个环境变量
# 将docker-compose文件移动到了/usr/local/bin,修改了/etc/profile文件,给/usr/local/bin配置到了PATH中
mv docker-compose /usr/local/bin
vi /etc/profile
	export PATH=/usr/local/bin:$PATH
source /etc/profile

# 5. 测试一下
# 在任意目录下输入docker-compose

2.Docker-Compose管理MySQL和Tomcat容器

yml文件以key:value方式来指定配置信息

多个配置信息以换行+缩进的方式来区分

在docker-compose.yml文件中,不要使用制表符

version: '3.1'
services:
  mysql:                     # 服务的名称
    restart: always          # 代表只要Docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4     # 指定镜像路径
    container_name: mysql    # 指定容器名称
    ports:
      - 3306:3306        # 指定端口号的映射
    environment:
      MYSQL_ROOT_PASSWORD: root         # 指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai                 # 指定时区
    volumes:
      - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql        # 映射数据卷
  tomcat:
    restart: always          # 代表只要Docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/tomcat:8.5.15-jre8     # 指定镜像路径
    container_name: tomcat    # 指定容器名称
    ports:
      - 8080:8080        # 指定端口号的映射
    environment:
      MYSQL_ROOT_PASSWORD: root         # 指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai                 # 指定时区
    volumes:
      - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps        # 映射数据卷
      - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs        # 映射数据卷

3.使用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

4.docker-compose配置Dockerfile使用

使用docker-compose.yml文件以及Dockerfile文件在生产自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器

docker-compose.yml

# 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.yml以及Dockerfile文件构建的自定义镜像
dockr-compose up -d
# 如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个自定义镜像
# 重新构建的话
# 重新构建自定义镜像
docker-compose build
# 运行前,重新构建
docker-compose up -d --build

### 命令详解 `docker-compose -f docker-compose-new.yml down -d` 命令用于停止并删除由 `docker-compose-new.yml` 文件定义的所有容器、网络和卷。下面对该命令的各个部分进行详细解释: - `-f docker-compose-new.yml`:指定使用的 `docker-compose` 配置文件为 `docker-compose-new.yml`。在一个项目中可能存在多个 `docker-compose` 配置文件,使用 `-f` 选项可以明确指定要使用配置文件。 - `down`:这是 `docker-compose` 的一个子命令,其主要作用是停止并删除由 `docker-compose` 启动的容器、网络和卷。默认情况下,命名卷不会被删除,以防止重要数据丢失。 - `-d`:此选项在 `down` 命令中并不适用。`-d` 通常用于 `up` 命令,表示在后台运行容器。在 `down` 命令中使用 `-d` 会导致命令出错,因为 `down` 命令没有 `-d` 这个选项。正确的命令应该是 `docker-compose -f docker-compose-new.yml down`。 ### 常见问题及解决办法 #### 问题1:配置文件路径错误 - **现象**:执行命令时提示找不到 `docker-compose-new.yml` 文件。 - **解决办法**:检查配置文件的路径是否正确,确保文件存在于指定的路径下。可以使用绝对路径来避免路径问题,例如 `docker-compose -f /path/to/docker-compose-new.yml down`。 #### 问题2:容器正在运行中无法删除 - **现象**:执行 `down` 命令时,提示某些容器无法删除,可能是因为容器正在运行或者被其他进程占用。 - **解决办法**:可以先使用 `docker-compose -f docker-compose-new.yml stop` 命令停止所有容器,然后再执行 `down` 命令。或者使用 `docker-compose -f docker-compose-new.yml down -t <seconds>` 命令,指定一个超时时间,让 `docker-compose` 等待容器停止的时间。 #### 问题3:权限不足 - **现象**:执行命令时提示权限不足,无法删除容器、网络或卷。 - **解决办法**:使用 `sudo` 命令以管理员权限执行 `docker-compose` 命令,例如 `sudo docker-compose -f docker-compose-new.yml down`。 ### 示例命令 ```bash # 停止并删除由 docker-compose-new.yml 定义的所有容器、网络和卷 docker-compose -f docker-compose-new.yml down # 停止并删除由 docker-compose-new.yml 定义的所有容器、网络和卷,并指定超时时间为 30 秒 docker-compose -f docker-compose-new.yml down -t 30 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值