单一容器管理
容器的标识符
每个容器被创建后都会分配一个CONTAINER_ID作为容器的唯一标识符,后续的启动、停止等操作都通过CONTAINER_ID来完成的。
CONTAINER_ID很难记忆,在创建容器时,可以用--name参数给容器起一个名字。用名字代替CONTAINER_ID对容器进行操作。
docker ps #查询CONTAINER_ID的简略形式
docker stop container_id/container_name #停止容器
docker start container_id/container_name #启动容器
查询容器信息
docker inspect #查询容器的所有基本信息,包括运行状况、存储位置等
docker logs #查询日志
docker stats # 查询容器占用的系统资源
容器内部的命令
经常有登入Docker容器内部执行命令的需求,可以在容器中启动sshd服务来响应用户登录,但sshd方式存在进程开销和增加被攻击
的风险,同时违反Docker所倡导的“一个容器一个进程”的原则。
Docer提供了原生的方式登入容器 docker exec:
docker exec container_name 容器内执行的命令
可以加上“-it”参数,相当于以root身份登入容器内可以连续执行命令,执行完成后通过“exit”或者“ctrl +d”退出。
多容器管理
Docker倡导的理念是“一个容器一个进程”,假如一个服务由多个进程组成,就要创建多个容器组成一个系统,相互分工和配合来对外提供完整服务。
在通一台主机下,docker run命令提供“--link”选项创建容器之间的互连。但有一个前提条件,使用“--link containerA”创建容器B时,容器A必须已经穿件并且启动运行,
所以容器启动是按顺序的。
容器编排工具 Docker Compose
Docker提供一个容器编排工具——Docker Compose,它允许用户在一个模板(YAML格式)中定义一组相关的应用容器,这组容器会根据配置模板中的
“--link”等参数,对启动的优先级自动排序,简单执行一条“docker-compose up”,就可以把同一个服务中的多个容器一次创建和启动。
docker-compose.yml文件:
wordpress:
image:wordpress
links:
-db:mysql
ports:
- 8080:80
db:
image:mariandb
environment :
MYSQL_ROOT_PASSWORD:example
这个配置文件创建了两个容器wordpress 和 db 使用image指定镜像,links、ports、environment分别对应docker run中的“--links”(容器互联)、“-p”(端口映射)
和“-e”(环境变量设置)。然后通过docker-compose up 命令来创建和启动wordpress服务。
docker-compose up #启动和创建容器
docker-compose start #启动命令
docker-compose stop #停止命令
docker rm container_id #删除容器
默认的配置文件是docker-compost.yml, 可以通过“-f”选项指定配置文件。
docker-compose -f XXX.yml ps #查询所有容器状态
docker-compose -f XXX.yml stop #停止项目
docker-compost -f XXX.yml start #启动项目
docker-compost -f XXX.yml down #删除项目