1 管理容器的生命周期
Docker 客户端通过 docker 命令结合一组选项来创建和管理容器,下图简单描绘容器从创建到销毁历程
2 创建容器
docker run 命令可从镜像创建新容器,并在新容器内启动进程。如果容器镜像不可用,此命令也会尝试下载该镜像
docker run nginx
如果想让容器在后台运行,释放当前shell,可以使用 -d 选项
docker run -d nginx
3 查看容器
docker ps 命令负责显示这些属性
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
407b444c4896 70f311871ae1 "/coredns -conf /etc…" 3 months ago Up 3 months k8s_cored
# 选项 -a 列出所有容器,包括尚未丢弃的容器
#1. 每个容器在创建后获得一个容器 ID,它是一个十六进制数字,与镜像 ID 相似,但不相关
#2. 用于启动容器的容器镜像
#3. 容器启动时所执行的命令
#4. 容器启动的日期和时间
#5. 容器运行时间总计(如果仍在运行)或者自终止起的时间
#6. 容器所开放的端口,或者端口转发(若已配置)
#7. 容器名称
- 第一列是id,随机生成且唯一
- 最后一列是名称,可以自己指定,不指定就随机生成
指定名字运行:docker run --name my-httpd-container httpd
名称必须唯一,重名会引发错误
4 在容器内运行命令
在创建容器时,会根据容器镜像所指定的内容来执行默认的命令。不过,可能需要执行其他命令来管理运行中的容器,使用exec选项,docker exec 命令在运行中的容器内启动额外的进程
docker exec my-httpd-container cat /etc/hostname
5 列出与运行中或已停止容器相关的元数据
docker inspect:此命令负责列出与运行中或已停止容器相关的元数据。此命令生成 JSON 输出
docker inspect my-httpd-container 输出my-httpd-container这个容器的所有元数据
6 停止运行中的容器
docker stop:此命令负责正常停止运行中的容器
docker stop my-httpd-container
docker kill:此命令负责强制停止运行中的容器
docker kill my-httpd-container
可以通过 -s 选项来指定信号
docker kill -s SIGKILL my-httpd-container
7重启已停止的容器
docker restart 命令利用相同的容器 ID或者NAME 创建一个新容器,该容器重复利用已停止容器的状态和文件系统
docker restart my-httpd-container
8 删除容器
docker rm:此命令负责删除容器,并且丢弃其状态和文件系统
docker rm my-httpd-container
同时删除所有容器
docker rm $(docker ps -aq)
docker ps 命令具有 -q 选项,用于仅返回容器的 ID。此列表可以传递到 docker rm 命令
在删除所有容器前,必须停止所有运行中的容器
docker stop $(docker ps -q)
9 端口映射
容器网络只能由容器主机访问,外部网络想访问容器,可以借由主机网络,通过地址转换实现
比如我现在想访问容器的80端口,通过语句可以实现 访问主机ip的8080端口就会被nat到容器的80端口,实现访问
使用 -p 选项
docker run -d --name httpd -p 8080:80 httpd