docker compose
安装
https://docs.docker.com/compose/install/
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
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
volume 映射
子级卷映射
docker-compose.yaml所在位置 /root/pinpoint-docker/
如下配置:
version: "3.6"
services:
pinpoint-hbase:
build:
context: ./pinpoint-hbase/
dockerfile: Dockerfile
args:
- PINPOINT_VERSION=${PINPOINT_VERSION}
container_name: "${PINPOINT_HBASE_NAME}"
image: "pinpointdocker/pinpoint-hbase:${PINPOINT_VERSION}"
networks:
- pinpoint
volumes:
- ./hase_data:/home/pinpoint/hbase
- ./zoo_data:/home/pinpoint/zookeeper
这段
volumes:
- ./hase_data:/home/pinpoint/hbase
./zoo_data:/home/pinpoint/zookeepe
- 容器里面/home/pinpoint/hbase映射到当前docker-compose.yaml文件所在的目录下的hase_data目录中
- 容器里面/home/pinpoint/zookeeper映射到当前docker-compose.yaml文件所在的目录下的zoo_data目录中
顶级卷
docker-compose.yaml所在位置 /root/pinpoint-docker/
如下配置:
version: "3.6"
services:
pinpoint-mysql:
build:
context: ./pinpoint-mysql/
dockerfile: Dockerfile
args:
- PINPOINT_VERSION=${PINPOINT_VERSION}
container_name: pinpoint-mysql
restart: always
image: "pinpointdocker/pinpoint-mysql:${PINPOINT_VERSION}"
hostname: pinpoint-mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
volumes:
- mysql_data:/var/lib/mysql
networks:
- pinpoint
//顶级卷
volumes:
data-volume:
mysql_data:
这段:
volumes:
- mysql_data:/var/lib/mysql
networks:
- pinpoint
//顶级卷
volumes:
data-volume:
mysql_data:
这段的意思是:
容器的/var/lib/mysql 的数据挂载到宿主机的mysql_data中,顶级卷在宿主机中有默认位置
通过命令 docker volume ls 可以查看
DRIVER VOLUME NAME
local pinpoint-docker_data-volume
local pinpoint-docker_mysql_data
可以通过 docker inspect pinpoint-docker_mysql_data 查看具体位置
pinpoint-docker_ 为该docker-compose.yaml部署文件的目录
顶级卷映射
docker-compose.yaml所在位置 /root/pinpoint-docker/
如下配置:
version: "3.6"
services:
pinpoint-mysql:
build:
context: ./pinpoint-mysql/
dockerfile: Dockerfile
args:
- PINPOINT_VERSION=${PINPOINT_VERSION}
container_name: pinpoint-mysql
restart: always
image: "pinpointdocker/pinpoint-mysql:${PINPOINT_VERSION}"
hostname: pinpoint-mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
volumes:
- mysql_data:/var/lib/mysql
networks:
- pinpoint
volumes:
data-volume:
driver: local
driver_opts:
o: bind
type: none
device: ./data-volume
mysql_data:
driver: local
driver_opts:
o: bind
type: none
device: ./mysql_data
这段:
volumes:
data-volume:
driver: local
driver_opts:
o: bind
type: none
device: ./data-volume
mysql_data:
driver: local
driver_opts:
o: bind
type: none
device: ./mysql_data
通过此方法可以把顶级卷挂载到宿主机指定目录,宿主机目录需要提前创建出来
通过命令 docker volume ls 可以查看
DRIVER VOLUME NAME
local pinpoint-docker_data-volume
local pinpoint-docker_mysql_data
[root@centos7 pinpoint-docker]# docker inspect pinpoint-docker_data-volume
[
{
"CreatedAt": "2021-12-16T12:52:27+08:00",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "pinpoint-docker",
"com.docker.compose.version": "1.29.2",
"com.docker.compose.volume": "data-volume"
},
"Mountpoint": "/var/lib/docker/volumes/pinpoint-docker_data-volume/_data",
"Name": "pinpoint-docker_data-volume",
"Options": {
"device": "/root/pinpoint-docker/data-volume",
"o": "bind",
"type": "none"
},
"Scope": "local"
}
]
github上 docker-compose 源码中对 卷的介绍,但是不详细:https://github.com/docker/docker.github.io/blob/master/compose/compose-file/compose-file-v3.md#volume-configuration-reference
注意每个docker-compose.yaml 上都有个 version 版本,是告诉docker-compose 这个yaml 是基于哪个版本的语法写的 ,关于docker-compose的语法版本介绍:https://github.com/docker/docker.github.io/blob/master/compose/compose-file/compose-versioning.md