docker初步学习
docker命令镜像管理 镜像属于是不可变基础设施很少变基本不变从库中拉镜像 docker pull 镜像名 查看本地docker镜像 docker images 删除镜像 docker rmi 镜像名 要求没人使用 打包把拉出的镜像打包到一个文件 docker save 镜像名 文件名 dockeer save 镜像名 |gizp 文件名 一条命令直接把镜像压缩 拓展如果要把集群内所有镜像打包放到另一个集群 docker images |awl NR1{print $1} | 文件名 scp 文件名 root目标集群ip 转移至目标主机执行 docker load 文件名 导入文件 docker load -i 文件名 docker load 文件名 更改镜像名字 docker tar 原镜像名 目标镜像名 删掉没有名称或者不再使用的镜像 docker prune 拓展如果要把集群内所有镜像打包放到另一个集群 docker images |awl NR1{print $1} | 文件名 scp 文件名 root目标集群ip 转移至目标主机执行 docker load 文件名docker命令容器管理启动容器 docker run [选项] [镜像名] [shell命令] [参数] 一般是 docker run --name 名字 镜像名 -d -d是让程序后台运行 查看容器镜像信息可以看ip docker inspect 进程名 退出容器但是不停止运行 ctrlpq 删除容器 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 健康检查