写在前面
本文主要介绍了Docker Compose核心原理,Docker Compose的编写以及常用指令,可以对docker compose有个整体的框架
Docker-Compose是Docker官方的开源项目,负责实现对Docker多容器编排管理系统。使用 Docker-compose,可以用一个 YAML 文件定义一组要启动的容器,以及容器运行时的属性。Docker-Compose的工程配置文件默认为docker-compose.yml,Docker Compose 的前身是 Fig,现阶段 Docker Compose 是 Docker 官方的单机多容器管理系统,它本质是一个Python 脚本,它通过解析用户编写的 yaml 文件,调用 Docker API 实现动态的创建和管理多个容器。
$ sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
$ pip install -U docker-compose
类似于开发中前后端,docker-compose由如下几个部分组成
- services(服务层):定义容器该如何启动,用哪个镜像,容器启动的参数等,类似于docker run
- networks(网络层) : 定义网络的配置,类似于docker network create创建网络配置
- volumns(数据卷层):定义容器数据共享
其中services需要解决以下四类问题:
image指令用于指定Dockerfile创建镜像的名称,也可以使用Docker Hub或其它镜像仓库中的镜像名称。示例:
services: web: image: nginx:latest
build指令用于构建镜像,需要指定Dockerfile文件的位置,以及镜像名称和版本等信息。示例:
services: web: build: context: . dockerfile: Dockerfile image: mynginx:latest
container_name指令用于指定容器的名称,不设置默认为服务名称。示例:
services: web: image: nginx:latest container_name: mynginx
depends_on指令用于设置服务之间的依赖关系,即该服务需要在其所依赖的服务启动之后才能启动。示例:
services: db: image: mysql:latest web: image: nginx:latest depends_on: - db
links指令用于设置容器之间的连接关系,即从一个容器中访问另一个容器。示例:
services: db: image: mysql:latest web: image: nginx:latest links: - db:mysql
ports指令用于将容器内的端口映射到宿主机的端口,以实现对外服务的访问。示例:
services: web: image: nginx:latest ports: - 8080:80
volumes指令用于将容器内的目录或文件映射到宿主机的目录或文件,以实现数据的持久化。示例:
services: db: image: mysql:latest volumes: - ./data:/var/lib/mysql
- docker-compose up 前台的形式启动服务
- docker-compose -f docker-compose.yml up –d 后台的形式启动服务
- docker-compose ps 查看当前docker-compose启动的实例
- docker-compose start 启动所有服务
- docker-compose start [SERVICE…] 可以单独启动某个服务,比如:docker-compose start nginx
- docker-compose stop [options] [SERVICE…] 可以单独关闭某个服务,比如:docker-compose stop nginx
- docker-compose logs 查看日志 如单独查看某个日志: docker-compose logs nginx
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
version: '3.3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {}
原文链接:https://blog.csdn.net/m0_48468018/article/details/129473023?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168623078216800184162743%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168623078216800184162743&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-22-129473023-null-null.268%5Ev1%5Ekoosearch&utm_term=docker%E3%80%81wordpress%E3%80%81wordpress%E5%BB%BA%E7%AB%99%E3%80%81wordpress%E4%B8%BB%E9%A2%98%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81