docker初步学习

📅 2026/7/4 15:25:13 👁️ 阅读次数 📝 编程学习
docker初步学习

docker命令(镜像管理) 镜像属于是不可变基础设施(很少变基本不变)

从库中拉镜像: docker pull 镜像名 查看本地docker镜像 docker images 删除镜像: docker rmi 镜像名 (要求没人使用) 打包(把拉出的镜像打包到一个文件) docker save 镜像名 >文件名 dockeer save 镜像名 |gizp > 文件名 一条命令直接把镜像压缩 拓展,如果要把集群内所有镜像打包放到另一个集群 docker images |awl 'NR>1{print $1}' |> 文件名 scp 文件名 root@目标集群ip 转移至目标主机执行 docker load > 文件名 导入文件: docker load -i 文件名 docker load > 文件名 ​ 更改镜像名字: docker tar 原镜像名 目标镜像名 ​ 删掉没有名称或者不再使用的镜像: docker prune ​ ​ 拓展,如果要把集群内所有镜像打包放到另一个集群 docker images |awl 'NR>1{print $1}' |> 文件名 scp 文件名 root@目标集群ip 转移至目标主机执行 docker load > 文件名

docker命令(容器管理)

启动容器: docker run [选项] [镜像名] [shell命令] [参数] 一般是 docker run --name 名字 镜像名 -d -d是让程序后台运行 查看容器(镜像)信息可以看ip: docker inspect 进程名 退出容器但是不停止运行: ctrl+p+q 删除容器 docker rm 容器名/id 删除所有容器: docker rm -f 'docker ps -qa' qa表示的是显示集群里所有容器的id 容器的暂停: docker pause 容器名 容器暂停时仍然占用宿主机的磁盘空间 是暂停的容器恢复运行: docker unpause 容器名 容器的停止: docker stop 容器名 容器停止后不在占用程序不在占用宿主机的磁盘空间 进入容器进行操作: docker exec -it 容器名 bash docker exec -it 容器名 sh -it 是为了进入容器后有终端窗口进行交互 暴露端口给宿主机: docker run -d --name 名字 -P 镜像名 -P就是给宿主机容器的端口然宿主机也能查到 指定端口: docker run -d --name 名字 -p 宿主机端口:容器端口 镜像名 可以跟宿主机开机自启动: docker run -d --restart awalys --name 名字 镜像名 宿主机文件和容器文件相互复制: docker cp 文件 文件 哪个文件在前就是把哪个文件复制到另一个地方去 清理不再使用的容器: docker system prune
命令作用能否开启新终端退出后是否会停止容器
docker exec在运行的容器里开启一个新进程可以不会
docker attach连接到容器当前的主进程不能有可能会造成容器停止

docker名称空间(隔离)

user 每个容器有自己的用户 mount 每个容器都有自己的根目录 pid 进程 ipc 进程间通讯 network 网络 uts 主机名隔离

docker排错

docker ps 确认容器运行状态,端口映射和启动时间 docker inspect 看看容器内主进程的标准输出和错误日志 docker logs 看看容器的详细配置

镜像制作

第一种方式:

基于现有的容器 进入容器后修改配置修改成自己想要的模样 退出容器 执行命令: docker commit 容器名 镜像名

缺点:手工制作效率低,不能自动化

第二种方式:

dockerfile:

dockerfile指令:

FROM 指定基础镜像 RUN 执行命令 COPY 复制文件 ADD 加强版复制 WORKDIR 设置工作目录 ENV 设置环境变量 AGR 构建参数 EXPOSE 声明端口 CMD 默认命令 ENTRYPOINT 入口点 VLOUME 挂载卷 USER 切换用户 LABEL 添加元数据 HEALTHCHECK 健康检查