docker-compose基础编排

简单docker-compose项目

docker-compose up启动服务要求当前路径下有docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# need to def a version
version: "3.0"
# the container of this compose
services:
tomcat:
image:
tomcat
ports:
- 8080:8080
tomcat1:
image:
tomcat
ports:
- 8081:8080

##docker-compose命令模板

  • docker inspect 容器id查看详细信息

  • docker volume/network

    1
    2
    3
    4
    5
    ls
    create
    prune 删除闲置卷
    rm
    inspect 详细信息
  • docker-compose.yml模板

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    docker-compose.yml
    version:"3.0"
    services:
    name:服务名称
    contianer_name: xxxxname(相当于--name)
    images: 使用镜像
    xxxxx
    ports: 端口映射(最好用引号包裹,可以映射多个端口)(相当于-p)
    - xxxx:xxxx (- "xxxx:xxxx")
    - xxxx:xxxx
    volumes: 数据卷映射 -v
    - /xxx/xxxx:/xxx/xxx
    - /xxx/xxxx:/xxx/xxx
    - xxxxxx:/xxx/xxx(不定义)
    networks: # 服务使用哪个网络桥(同样需要声明)--network
    - hello(创建一个叫 项目名_hello 桥)
    # 当定义两个容器为一个网桥内时,两个容器可以通过容器ip(ip a查询)或者容器名+端口进行访问(docker network ls)
    enviroment:
    - XXXXXX=root
    command:
    "redis-server --appendonly yes"

    # 当使用自动创建文件映射需要声明数据卷
    volumes:
    xxxxxx: #声明指定的卷名这样会在名字前自动生成项目名_xxxxxx
    external: #使用外部卷名不会自动创建需要提前手动创建再docker-compose up
    #(docker volume create xxxxx)
    true
    networks:
    hello: # 定义网桥名称
    external: # 使用外部网桥名,不会加项目名,前提是需要提前创建好网桥
    true(# docker network create -d bridge hello)

模板实践

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 1 version: "3.0"
2 services:
3 tomcat01:
4 image: tomcat
5 ports:
6 - 8081:8080
7 networks:
8 - hello
9 volumes:
10 - tomcatwebapps01:/usr/local/tomcat/webapps
11 tomcat02:
12 image: tomcat
13 ports:
14 - 8082:8080
15 networks:
16 - hello
17 volumes:
18 - tomcatwebapps02:/usr/local/tomcat/webapps
19
20 mysql:
21 image: mysql
22 ports:
23 - "3307:3306"
24 networks:
25 - hello
volumes:
27 - mysqldata:/var/lib/mysql
28 - mysqlconf:/etc/mysql
29 environment:
30 - MYSQL_ROOT_PASSWORD=root
31
32 redis:
33 image: redis
34 ports:
35 - "6384:6379"
36 volumes:
37 - redisdata:/data
38 command:
39 "redis-server --appendonly yes"
40
41
42 volumes:
43 tomcatwebapps01:
44 tomcatwebapps02:
45 mysqldata:
46 mysqlconf:
47 redisdata:
48 networks:
49 hello:

分享到