2.1 Docker镜像管理2.1.1 搜索镜像2.1.2 拉取镜像#从镜像仓库中拉取镜像[rootDocker-node1 ~]# docker pull busybox[rootDocker-node1 ~]# docker pull nginx:1.26-alpine #alpine 版本nginx镜像的最小安装发型版本#查看本地镜像[rootDocker-node1 ~]# docker images2.1.3 查看镜像信息[rootDocker-node1 ~]# docker image inspect nginx:1.26-alpine2.1.4 导出镜像#保存镜像[rootDocker-node1 ~]# docker image save nginx:latest -o nginx-latest.tar.gz[rootDocker-node1 ~]# docker image save nginx:latest nginx:1.26-alpine -o nginx.tag.gz#保存所有镜像[rootDocker-node1 ~]# docker save docker images | awk NR1{print $1:$2} -o images.tar.gz-o指定导出镜像的位置可以同时导出多个镜像到一个文件中指定.tar.gz 可以导出并压缩2.1.5 删除镜像[rootDocker-node1 ~]# docker rmi nginx:latest[rootDocker-node1 ~]# docker rmi docker images | awk NR1{print $1:$2}2.2 容器的常用操作2.2.1 启动容器[rootDocker-node1 ~]# docker run -d --name mario -p 80:8080 timinglee/mario[rootDocker-node1 ~]# docker run -it --name centos7 centos:7[root3ba22e59734f /]# #进入到容器中按退出并停止容器#按退出但 不停止容器#重新进入容器[rootdocker ~]# docker attach centos7[root3ba22e59734f /]##在容器中执行命令[rootdocker ~]# docker exec -it test ifconfig-d #后台运行-i #交互式运行-t #打开一个终端--name #指定容器名称-p #端口映射 -p 808080 把容器8080端口映射到本机80端口--rm #容器停止自动删除容器--network #指定容器使用的网络2.2.2 查看容器运行信息[rootDocker-node1 ~]# docker ps #查看当前运行容器[rootDocker-node1 ~]# docker ps -a #查看所有容器[rootDocker-node1 ~]# docker inspect busybox #查看容器运行的详细信息2.2.3 停止和运行容器[rootDocker-node1 ~]# docker stop busybox #停止容器[rootDocker-node1 ~]# docker kill busybox #杀死容器可以使用信号[rootDocker-node1 ~]# docker start busybox #开启停止的容器容器内的第一个进程必须一直处于运行的状态否则这个容器就会处于退出状态2.2.4 删除容器[rootDocker-node1 ~]# docker rm centos7 #删除停止的容器[rootDocker-node1 ~]# docker rm -f busybox #删除运行的容器[rootDocker-node1 ~]# docker container prune -f #删除所有停止的容器2.2.5 容器内容提交默认情况下容器被删除后在容器中的所有操作都会被清理包括要保存的文件如果想永久保存那么我们需要把动作提交提交后会生成新的镜像当我们在运行新镜像后即可看到我们提交的内容[rootDocker-node1 ~]# docker run -it --name test busybox/ # touch leefile #在容器中建立文件/ # lsbin etc leefile lib64 root tmp vardev home lib proc sys usr/ #[rootDocker-node1 ~]# docker rm test #删掉容器后test[rootDocker-node1 ~]# docker run -it --name test busybox #删掉容器后开启新的容器文件不存在/ # lsbin dev etc home lib lib64 proc root sys tmp usr var/ #[rootDocker-node1 ~]# docker commit -m add leefile test busybox:v1sha256:c8ff62b7480c951635acb6064acdfeb25282bd0c19cbffee0e51f3902cbfa4bd[rootDocker-node1 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEbusybox v1 c8ff62b7480c 12 seconds ago 4.26MB[rootDocker-node1 ~]# docker image history busybox:v1IMAGE CREATED CREATED BY SIZE COMMENTc8ff62b7480c 2 minutes ago sh 17B add leefile65ad0d468eb1 15 months ago BusyBox 1.36.1 (glibc), Debian 12 4.26MB此方法不利于企业审计所以不推荐使用在企业中我们多用Dockerfile来构建镜像2.2.6 系统中的文件和容器中的文件传输[rootDocker-node1 ~]# docker cp test2:/leefile /mnt #把容器中的文件复制到本机Successfully copied 1.54kB to /mnt[rootDocker-node1 ~]# docker cp /etc/fstab test2:/fstab #把本机文件复制到容器中2.2.7 查询容器内部日志[rootDocker-node1 ~]# docker logs web/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d//docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh/docker-entrypoint.sh: Configuration complete; ready for start up2026/03/14 07:50:01 [notice] 1#1: using the epoll event method2026/03/14 07:50:01 [notice] 1#1: nginx/1.27.02026/03/14 07:50:01 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)2026/03/14 07:50:01 [notice] 1#1: OS: Linux 5.14.0-427.13.1.el9_4.x86_642026/03/14 07:50:01 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1073741816:10737418162026/03/14 07:50:01[notice] 1#1: start worker processes2026/03/14 07:50:01 [notice] 1#1: start worker process 292026/03/14 07:50:01 [notice] 1#1: start worker process 30