docker Compose 使用

November 24, 2018

Docker Compose 是什么

Docker Compose 是一个用来定义和运行多个Docker应用的工具,通过Compose 可以在一个文件中定一个多个容器,然后通过一个命令启动你的应用程序。

Docker Compose 命令

Command Purpose
build Build or rebuild services
help Get help on a command
kill Kill containers
logs View output from containers
port Print the public port for a port binding
ps List containers
pull Pulls service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
up Create and start containers

第一个应用

version: '3.6'
services:
  db:
    container_name: db
    image: mysql:8
    environment:
      MYSQL_DATABASE: employees
      MYSQL_USER: mysql
      MYSQL_PASSWORD: mysql
      MYSQL_ROOT_PASSWORD: supersecret
    ports:
      - 3306:3306
  web:
    image: arungupta/docker-javaee:dockerconeu17
    ports:
      - 8080:8080
      - 9990:9990
    depends_on:
      - db
  • 文件讲解

1、此Compose文件定义了两个服务,一个是db,还有一个是web. 2、使用image属性定义服务运行的镜像名。 3、environment环境变量用来设置服务中写dockerfile时的环境变量。 4、web服务需要使用db服务。 5、ports是服务暴露的端口和转发到容器中的端口上。 6、depends_on属性是用于设置有依赖关系服务的,此处web需要依赖db先启动,所以需要如此设置。

开始运行

创建和启动Compose命令:docker-compose up -d,如果compose的文件名不是默认的,可以通过指定-f a-compose.yml一个自定义的文件名。 运行之后如果本地没有这个镜像,那么会先去拉取镜像,然后运行,等运行完后,查看docker-compose ps.

查看日志

docker-compose logs 可以查看多个服务的日志。

停止服务

docker-compose kill会停止服务,但是不会删除,感觉和docker-compose stop的作用差不多,通过执行docker-compose start 命令可以再次启动服务。如果想要停止并删除服务,就需要执行docker-compose down命令。

自定义网络

使用compose启动的服务都会启动一个自定义的网络,一般命名是项目名加上网络名,如果未命名网络名,就使用default来定义。 比如:如下我创建了一个网络名为com-demobridge网络模型。

version: '3.6'
services:
  db:
    container_name: db
    image: mysql:8
    environment:
      MYSQL_DATABASE: employees
      MYSQL_USER: mysql
      MYSQL_PASSWORD: mysql
      MYSQL_ROOT_PASSWORD: supersecret
    ports:
      - 3306:3306
    networks: 
      - com-demo
  web:
    image: arungupta/docker-javaee:dockerconeu17
    ports:
      - 8080:8080
      - 9990:9990
    depends_on:
      - db
    networks: 
      - com-demo
networks: 
  com-demo:
    driver: bridge

LRF 记录学习、生活的点滴