持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
docker----CMD的详解
1.介绍
类似于RUN指令,用于运行程序,但二者运行的时间点不同:
1.CMD是docker run时运行的
2.RUN是在docker build构建镜像时运行的
作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD指令指定的程序可被
docker run命令行参数中指定要运行的程序所覆盖
大白话说:也就是容器启动以后,默认的执行的命令。重点就是这个"默认",意味着,如果docker run没有指定任何的
执行命令或者dockerfile里面也没有entrypoint,那么,就会使用cmd指定的默认的执行命令执行,同时也从侧面说明
了entrypoint的含义,它才是真正的容器启动以后要执行命令
CMD ["exectable","param1","param2"] (exec模式) CMD command (shell模式) CMD ["param1","param2"] (作为ENTRYPOINT指令的默认参数)
例:cd /root/dockerfile/test
cat dockerfile
#first dockerfile
FROM centos
MAINTAINER xianchao
RUN yum clean all
RUN yum install nginx -y
EXPOSE 80
CMD ["/usr/sbin/nginx","-g","daemon off;"]
构建镜像:
docker build -t="dockerfile/test-cmd:v1" .
基于上面构建的镜像运行一个容器
docker run -p 80 --name cmd_test2 -d dockerfile/test-cmd:v1
(不需要跟 nginx -g “daemon off;”了)
docker-ENTERYPOINT
类似于CMD指令,担起不会被docker run的命令行参数指定的指令所覆盖,而且执行命令行参数会当作参数送给 ENTRYPOINT指令指定的程序
但是,如果运行docker run 时使用了--entrypoint选项,将覆盖entrypoint指令指定的程序
优点:在执行docker run的时候可以指定ENTRYPOINT运行所需的参数 注意:如果dockerfile中如果存在多个ENTRYPOINT指令,仅最后一个生效
格式: ENTERYPOINT ["executable","param1","param2"]
docker的命令
-a, --all 显示所有容器(默认显示正在运行)
-n 显示最后创建的n个容器(包括所有状态)(默认值-1) 示例:docker ps -n2
-l,--latest 显示最新创建的容器(包括所有状态)
-q, --quiet 只显示数字id
-s, --size 显示总文件大小
--no-trunc 不截断输出
-f, --filter 根据提供的条件过滤输出
过滤条件如下:
Filter | Description
---|---
id | 容器的ID
name | 容器的Name
label | 表示键或键值对的任意字符串。表示为或=
exited | 表示容器退出代码的整数。只有对所有人有用。
status | created,restarting,running,removing,paused,exited,dead之一
ancestor| 筛选指定镜像的容器,例如[:],, or image@digest
before or since | 筛选在给定容器ID或名称之前或之后创建的容器
volume | 运行已挂载给定卷或绑定挂载的容器的筛选器。
network | 过滤器运行连接到给定网络的容器。
publish or expose | 筛选发布或公开给定端口的容器,例如[/] or /[]
health | 根据容器的健康检查状态过滤容器,例如starting, healthy, unhealthy or none.
isolation | 仅Windows守护进程,例如default, process, or hyperv.
is-task | 筛选服务的“任务”容器。布尔选项(true or false)
示例:
docker ps -f name=^'modality'
docker ps --filter name=nginx
docker ps -a --filter exited=0
docker ps --filter status=running
docker ps --filter expose=3306
--format 使用Go模板漂亮地打印容器
过滤条件如下:
Placeholder | Description
---|---
.ID | 容器的ID
.Image | 镜像的ID
.Command | 引用命令
.CreatedAt | 创建容器的时间
.RunningFor | 自容器启动以来的运行时长
.Ports | 暴露的端口
.Status | 容器状态
.Size | 容器的磁盘大小
.Names | 容器的名称
.Labels | 分配给容器的所有标签
.Label | 此容器的特定标签的值,例如`{{.Label "com.docker.swarm.cpu"}}`
.Mounts | 容器挂载的卷
.Networks | 容器所用的网络名称
示例:
docker ps --format "{{.ID}}: {{.Names}}: {{.Command}}"