docker-compose 常用命令
指定后个yaml问文件进行编排构建且后台运行
[root@localhost dockerflask]# docker-compose -f docker-compose.yaml up -d
:停止正在运行的服务
[root@localhost dockerflask]# docker-compose stop
Stopping dockerflask_nginx_yaml ... done
Stopping dockerflask_01_yaml ... done
Stopping dockerflask_02_yaml ... done
Stopping dockerflask_redis_yaml ... done
Stopping dockerflask_pg_yaml ...
关闭所有容器并删除,默认保留 数据卷
[root@localhost dockerflask]# docker-compose down
Stopping dockerflask_nginx_yaml ... done
Stopping dockerflask_01_yaml ... done
Stopping dockerflask_02_yaml ... done
Stopping dockerflask_redis_yaml ... done
Stopping dockerflask_pg_yaml ... done
Removing dockerflask_nginx_yaml ... done
Removing dockerflask_01_yaml ... done
Removing dockerflask_02_yaml ... done
Removing dockerflask_redis_yaml ... done
Removing dockerflask_pg_yaml ... done
Removing network dockerflask_default
[root@localhost dockerflask]#
docker-compose ps:列出当前运行的服务状态和相关信息
[root@localhost dockerflask]# docker-compose -f docker-compose.yaml up -d
Creating network "dockerflask_default" with the default driver
Creating dockerflask_redis_yaml ... done
Creating dockerflask_pg_yaml ... done
Creating dockerflask_01_yaml ... done
Creating dockerflask_02_yaml ... done
Creating dockerflask_nginx_yaml ... done
[root@localhost dockerflask]# docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------
dockerflask_01_yaml gunicorn main:app -c ./gun ... Up 0.0.0.0:1255->80/tcp
dockerflask_02_yaml gunicorn main:app -c ./gun ... Up 0.0.0.0:1256->80/tcp
dockerflask_nginx_yaml /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp
dockerflask_pg_yaml docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
dockerflask_redis_yaml docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
[root@localhost dockerflask]#
配合常用的命令
$ docker ps # 查看所有正在运行容器
$ docker stop containerId # containerId 是容器的ID
$ docker ps -a # 查看所有容器
$ docker ps -a -q # 查看所有容器ID
$ docker stop $(docker ps -a -q) # stop停止所有容器
$ docker rm $(docker ps -a -q) # remove删除所有容器
docker-compose 其他一些说明
1:depends_on
项目中的容器一般情况下会有先后启动的程序,比如的flask中,我们的示例是启动的flask后就会去实例化一个reids连接,所有容器的会有一个气的顺序要求。这个时候就需要标记哪些服务依赖什么启动后再去执行。
version: '3'
services:
flask:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: mysql
如上的示例下面容器会先启动 redis 和 db 两个服务,最后才启动 flask服务,另外默认情况下使用 docker-compose up flask 启动 flask 服务的话,也会同事的启动 redis 和 db ,因为在配置文件中定义了他们之间的依赖关系。
2:links
主用是用于解决的是容器连接问题,与Docker client的--link一样效果
links:
- db
- db:database (取别名)
- redis
查看对于的/etc/hosts里创建:
172.4.0.14 db
172.4.0.14 database
172.4.0.15 redis
3: extra_hosts
主要的作用是给容器添加对应的营生的别名,类似向/etc/hosts文件中添加记录,与Docker client的--add-host类似:
extra_hosts:
- "flask01:172.242.195.82"
- "flask02:172.0.209.229"
启动之后查看容器内部可以查看hosts。
4: volumes
关于目录的挂载,可以挂载一个目录或已存在的数据卷容器,注意识相点是挂载目录的路径问题
(1)只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
volumes:
- /var/lib/mysql
(2)使用绝对路径挂载数据卷
volumes:
- /opt/data:/var/lib/mysql
(3) 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
volumes:
- ./cache:/tmp/cache
(4)使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
volumes:
- ~/configs:/etc/configs/:ro
(5) 已经存在的命名的数据卷。
volumes:
- datavolume:/var/lib/mysql
网友评论