supervisor 进程管理工具
supervisor可以更好地控制,管理,重启,运行的进程
他是一个C/S系统, 
 配置文档格式,true是前台运行,等于不会关闭容器,后面自定义服务开启或者其他参数等等
 [supervisord]

nodaemon=true

[program:sshd]

command=/usr/sbin/sshd

[program:httpd]

command=/usr/sbin/httpd -dforeground

dCABAAAAAAAA&bo=LgLsAAAAAAAFAOM!


这个dockerfile中先安装了supervisor 然后装了openssh   httpd  sudo  服务,后面使用copy 把当前目录的supervisor配置文件复制进容器,
一个用supervisor控制进程的镜像完成了
--------------------------------------------------------------------------------------------------------------------------
compose
使用compose可以批量创建docker容器,可以直接生成一整个服务,同事开启很多台容器,
比run要速度快得多,
设置简单明朗,看到配置文件就知道是什么环境
对docker匹配非常好
先安装pip  类似yum

dPYAAAAAAAAA&bo=lgEfAAAAAAAFAKs!


 

dB8BAAAAAAAA&bo=uQAfAAAAAAAFAIU!


dB8BAAAAAAAA&bo=EQEdAAAAAAAFAC4!


安装compose

dK0AAAAAAAAA&bo=pQEoAAAAAAAFAK8!

\
查看版本信息
compose命令介绍------------------------------------------------------------------------------------------
 docker-compose 命令说明

大多数Compose命令都是运行于一个或多个服务的,如果服务没有指定,该命令将会应用到所有服务,如果要获得所有可用信息,使用命令:docker-compose[COMMAND] --help,下面是命令(COMMAND)的说明:

build 
创建或者再建服务 
服务被创建后会标记为project_service(比如composetest_db),如果改变了一个服务的Dockerfile或者构建目录的内容,可以使用docker-composebuild来重建它

help 
显示命令的帮助和使用信息

kill 
通过发送SIGKILL的信号强制停止运行的容器,这个信号可以选择性的通过,比如: 
docker-compose kill -s SIGKINT

logs 
显示服务的日志输出

port 
为端口绑定输出公共信息

ps 
显示容器

pull 
拉取服务镜像

rm 
删除停止的容器

run 
在服务上运行一个一次性命令,比如: 
docker-compose run web Python manage.pyshell

scale 
设置为一个服务启动的容器数量,数量是以这样的参数形式指定的:service=num,比如: 
docker-compose scale web=2 worker=

start 
启动已经存在的容器作为一个服务

stop 
停止运行的容器而不删除它们,它们可以使用命令docker-composestart重新启动起来

up 
为一个服务构建、创建、启动、附加到容器 
连接的服务会被启动,除非它们已经在运行了 

运行docker-composeup -d会在后台启动容器并使它们运行 

–verbose 
显示更多输出

–version 
显示版本号并退出

-f,–fileFILE 
指定一个可选的Compose yaml文件(默认:docker-compose.yml)

-p,–project-nameNAME 
指定可选的项目名称(默认:当前目录名称)

docker-compose.yml命令说明 

每一个定义在docker-compose.yml中的服务必须明确指定一个p_w_picpath或者build选项,这与docker run命令行中输入的是对应相同的,对于docker run,在Dockerfile文件中指定的选项(比如CMD、EXPOSE、VOLUME、ENV)是默认的,因此不必在docker-compose.yml中再指定一次 

 

p_w_picpath  

标明p_w_picpath的ID,这个p_w_picpath ID可以是本地也可以是远程的,如果本地不存在,Compose会尝试去pull下来

p_w_picpath: ubuntu   

p_w_picpath: orchardup/postgresql   

p_w_picpath: a4bc65fd   

 

build  

该参数指定Dockerfile文件的路径,该目录也是发送到守护进程的构建环境(这句有点),Compose将会以一个已存在的名称进行构建并标记,并随后使用这个p_w_picpath 

build: /path/to/build/dir   

 

command  

重写默认的命令,覆盖容器启动后默认执行的命令

command: 要执行的命令   

 

links  

连接到其他服务中的容器,可以指定服务名称和这个链接的别名,或者只指定服务名称 

links:   

 -db   

 -db:database   

 -redis   

此时,在容器内部,会在/etc/hosts文件中用别名创建一个条目,就像这样: 

172.17.2.186  db   

172.17.2.186  database   

172.17.2.186  redis   

 

环境变量也会被创建,关于环境变量的参数,会在后面讲到 

 

external_links  

连接到在这个docker-compose.yml文件或者Compose外部启动的容器,特别是对于提供共享和公共服务的容器。在指定容器名称和别名时,external_links遵循着和links相同的语义用法 

external_links:   

 -redis_1   

 -project_db_1:mysql   

 -project_db_1:postgresql   

 

ports  

暴露端口,指定两者的端口(主机:容器),或者只是容器的端口(主机会被随机分配一个端口) 

注:当以主机:容器的形式来映射端口时,如果使容器的端口小于60,那可能会出现错误,因为YAML会将 xx:yy这样格式的数据解析为六十进制的数据,基于这个原因,时刻记得要将端口映射明确指定为字符串 

ports:   

 -"3000"   

 -"8000:8000"   

 -"49100:22"   

 -"127.0.0.1:8001:8001"   

 

expose  

暴露端口而不必向主机发布它们,而只是会向链接的服务(linked service)提供,只有内部端口可以被指定 

 

expose:   

 -"3000"   

 -"8000"   

 

volumes  

挂载路径最为卷,可以选择性的指定一个主机上的路径(主机:容器),或是一种可使用的模式(主机:容器:ro) 

volumes:
- /var/lib/mysql
- cache/:/tmp/cache
- ~/configs:/etc/configs/:ro

 

volumes_from:   

从另一个服务或容器挂载它的所有卷。

volumes_from:  

- service_name   

 -container_name   

 

environment  

加入环境变量,可以使用数组或者字典,只有一个key的环境变量可以在运行Compose的机器上找到对应的值,这有助于加密的或者特殊主机的值 

environment:   

 RACK_ENV: development   

 SESSION_SECRET:   

environments:   

  -RACK_ENV=development   

  -SESSION_SECRET   

 

env_file  

从一个文件中加入环境变量

如果通过 docker-compose -f FILE 指定了模板文件,则 env_file 中路径会基于模板文件路径。如果有变量名称与 environment 指令冲突,则以后者为准。

env_file: .env
env_file:
- ./common.env
- ./apps/web.env
- /opt/secrets.env
环境变量文件中每一行必须符合格式,支持 # 开头的注释行。
# common.env: Set Rails/Rack environment
RACK_ENV=development 

 

net  

网络模式,可以在docker客户端的--net参数中指定这些值 

net: "bridge"   

net: "none"   

net: "container:[name orid]"   

net: "host"   

 

dns  

自定义DNS服务,可以是一个单独的值或者一张列表 

dns: 8.8.8.8   

dns:   

  -8.8.8.8   

  -9.9.9.9   

 

dns_search  

自定义DNS搜索范围,可以是单独的值或者一张列表 

 

dns_search: example.com   

dns_search:   

  -dc1.example.com   

  -dc2.example.com    

---------------------------------------------------------------------------------------------------------