docker-compose命令与操作
一、docker-compose主要基本命令
1)image 指定镜像
image: tomcat:8
2)ports 端口映射
ports: #宿主机:容器
- "8080:8080"
3)volumes 挂载数据卷
volumes:
#- /root/webapp:/root/web
- tomcat:/root/web
注意:挂载数据卷,若不是写的宿主机绝对路径,要在下面写上定义目录。
若使用自定义数据卷,还有通过external,来表示为true,并提前创建好目录
volumes: #定义目录 在之前加入项目名字
tomcat:
external: #使用自定义卷名 提前创建目录
true
4)networks 指定网桥
networks: # 指定网桥
-ems
5)container-name 指定容器名称
container-name: mysql
6)command 覆盖容器默认命令
覆盖容器内容的默认命令 CMD的命令
command: "redis-server --appendonly yes" #覆盖容器内容的默认命令
7)environment 指定变量环境
如指定mysql登录密码
environment:
- MYSQL_ROOT_PASSWORD=root
8)env_file 从文件中获取变量
将6里面的MYSQL_ROOT_PASSWORD=root 可以写到配置文件中 如secrect.env,使得从配置文件中读取环境变量,解耦合。
env_file :
- ./webapps/secrect.env
9)depend_on 依赖容器
一个容器依赖其他容器,这样先启动其他容器。
depend_on :
- db #写服务id
- redis
- tomcat
10)healthcheck 健康检查
容器运行状态进行检查
#在1m30s内 超时时间10s 重试3次
healthcheck :
test: ["CMD","curl","-f","http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
11)sysctls 配置容器内核参数
sysctls:
net.core.somaxconn: 1024
net.ipv4.tcp_syncookies: 0
12)ulimits 指定容器进程数
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
二、docker-compose基本命令模板
docker-compose up
version: '3'
services:
tomcat: #服务id唯一
container-name: tomcat
image: tomcat:8 #创建当前服务所使用的镜像
ports: #宿主机:容器
- "8080:8080"
volumes:
#- /root/webapp:/root/web
- tomcat:/root/web
networks: # 指定网桥
-ems
tomcat02: #服务名唯一
container-name: tomcat #指定容器名字
image: tomcat:8 #创建当前服务所使用的镜像
ports: #宿主机:容器
- "8081:8080"
volumes:
#- /root/webapp:/root/web
- tomcat02:/root/web
networks:
-ems
mysql:
image: mysql:5.7
container-name: mysql
ports:
- "3306:3306"
volumes:
- mysqldata:/var/lib/mysql
- mysqlconf:/etc/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
networks:
hello
redis:
image: redis:5.0.10
container-name: redis
ports:
- "6379:6379"
volumes:
- redisdata:/data
networks:
hello
command: "redis-server --appendonly yes" #覆盖容器内容的默认命令
volumes: #定义目录 在之前加入项目名字
tomcat:
external: #使用自定义卷名 提前创建目录
true
tomcat02:
mysqldata:
mysqlconf:
redisdata:
networks:
hello
external: #使用自定义网桥 提前创建网桥
true
三、docker-compose build指令
作用:指定dockerfile 打包对应的镜像
demo:
build: #先根据dockerfile 创建镜像
context: ./demo #指定上下文目录 当前目录
context: /usr/local/demo #指定上下文目录
dockerfil: Dockerfile
container_name: demo
ports:
-8080:8080
networks:
-ems
depend_on:
-tomcat
四、docker-compose 指令
1)up
docker-compose -f xxx up
-f 指定文件名
-p 指定项目名称 在创建数据卷什么的基于该名
-verbose 输出调试信息
2)down
docker-compose down # 移除容器 并移除网络和容器内部数据卷
3)restart
docker-compose restart [指定容器名]
-t 指定超时时间
4)rm
docker-compose rm [指定容器名]
-f 强制删除
-v 删除挂载卷
5)stop
6)top 查看容器运行进程
7)pause/unpause
暂停服务 / 恢复出于暂停状态中的服务
build Build or rebuild services
bundle Generate a Docker bundle from the Compose file
config Validate and view the Compose file
create Create services
down Stop and remove containers, networks, images, and volumes
events Receive real time events from containers
exec Execute a command in a running container
help Get help on a command
images List images
kill Kill containers
logs View output from containers
pause Pause services
port Print the public port for a port binding
ps List containers
pull Pull service images
push Push 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
top Display the running processes
unpause Unpause services
up Create and start containers
================================================================================
links:
- app
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
app:
image: app
expose:
- "8080"
五、docker可视化工具 portainer
启动
docker run -d
-p 8000:8000
-p 9000:9000
--name=protainer
--restart=alw ays #只要停止就重启
-v /var/run/docker.sock:/var/run/docker.sock
-v portainer_data:/data
portainer/portainer
docker run -d -p 8000:8000 -p 9000:9000 --name=protainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/portainer_data:/data portainer/portainer