容器生命周期

1、判断本地是否存在镜像,如果不存在则从远端拉取存至本地
2、利用镜像启动容器
3、分配一个文件系统(bootfs) 并在只读层(镜像)外面挂一个可读写层
4、从宿主机配置的网桥接口中分配一个虚拟接口到容器
5、从地址池中配置一个IP给容器
6、执行用户指定的命令
7、执行完毕 容器停止

本文章并没有列举所有容器操作指令,使用docker --help 查看更多

基本操作

查看容器

指令格式:docker ps [-a]
docker ps 用于查看 正在运行中未结束的容器。
docker ps -a 可选参数 -a 用于查看所有的容器 不管是处于运行 或是其它状态的
image.png

启动容器

指令格式:docker run [options] image [command] [args]
potions:选项
-i:表示启动一个可交互的容器,并持续打开标准输入
-t:表示使用终端关联到容器的标准输入输出上
-d:表示使容器后台运行
—rm:容器结束后自动删除
—name:定义容器的唯一名称
image:要运行的镜像
command:启动容器时要运行的命令

启动交互式容器

docker run -it alpine:latest /bin/sh
image.png

非交互式的后台容器

docker run -d --rm --name myalpine3 alpine:latest /bin/sh

进入容器内部

docker exec -it myalpine3 /bin/sh
exit指令 可以退出容器 回到宿主机

停止容器

docker stop myalpine3

启动容器

docker start myalpine3

重启容器

docker restart myalpine3

删除容器

删除容器

删除容器 可以使用容器的ID 也可以使用容器的名称 同样 ID 依旧可以偷懒 只写前面部分 只要能够区别出唯一容器即可
docker rm b35ff09766b8 docker rm loving_clarke

强制删除正在运行中的容器

删除正在运行在的容器需要使用可选参数-f 表示强制删除 docker rm -f b35ff09766b8
image.png

删除宿主机所有已结束的容器

for i indocker ps -a|grep -i exit|awk ‘{print $1}’;do docker rm -f $i;done

提交容器

docker commit -p myalpine suyan0909/alpine:20.10.22

导出镜像文件

docker save 0927 > alpine:20.10.22.txt.tar 或者 docker save 0927 -o alpine:20.10.22.txt.tar 这两种都可以 我个人习惯使用 > 来重定向成文件
image.png

导入镜像文件

docker load < alpine\:20.10.22.txt.tar
导入的镜像 没有镜像名称和标签 需要使用docker tag 为镜像添加名称和标签 参考文档 💦Docker 基础入门 🌾 镜像
image.png

🌲查看容器日志

docker logs [OPTIONS] CONTAINER
Options:
—details 显示更多的信息
-f, —follow 跟踪实时日志
—since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
—tail string 从日志末尾显示多少行日志, 默认是all
-t, —timestamps 显示时间戳
—until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟) # 容器ID和容器名称都可以 同样 容器ID可以偷懒 Nice