标签:只读 名称 bash import test 修改 exe 退出 存储
镜像: 静态的只读文件,是一个只读的模板。 容器: 是从镜像创建的一个运行实例,容器是带有运行时需要的可写文件层。 镜像工作原理: 启动一个新的容器时,docker会加载镜像,在镜像之上添加一个读写层, 并将镜像中的目录复制一份到/var/lib/docker/containers/容器ID的目录下, 容器内修改已存在的文件,会将该文件从只读层复制到读写层,并覆盖只读层的文件,实现了文件系统隔离, 当删除容器后,读写层的数据将会删除,镜像不变。 镜像文件存储: docker相关文件: /var/lib/docker/目录下。 /var/lib/docker/overlay2/容器ID/diff #每层与父层之间的文件差异。 镜像管理命令: 获取: docker pull imagename:tag 上传: docker push 仓库名称 查找: docker search imagename:tag 列出本地镜像: docker images 修改已有镜像: docker run -itd --name test02 ubuntu:16.04 运行容器 docker attach test02 进入容器 安装相关服务。 docker commit -m "说明信息" -a "指定用户信息" 容器ID 仓库名:tag 用Dockerfile构建新镜像: docker build 删除镜像: docker rmi imagename 删除容器: docker rm containername 直接删除一个运行中的容器: docker rm -f containername 批量删除容器: docker rm -v $(docker ps -aq -f status=exited) 导出镜像: docker save -o 包名 image:tag 导出正在运行的容器: docker export -o centos7 test01 导入镜像: docker load -i 包名 导入正在运行的容器为镜像: # docker import centos7 test01:7 注意: export,import : 导出后再导入的镜像会丢失所有的历史,无法回滚之前的层。 save,load : 保存后再加载的镜像没有丢失历史和层,可持久化镜像,可以做到层回滚。 ###容器管理: ##查看容器: docker ps :列出当前所有正在运行的container docker ps -l :列出最近一次启动的container docker ps -a :列出所有的container docker ps -q :列出最近一次运行的container ID ##运行容器: 运行容器: docker run -itd image:tag /bin/bash -itd: i 交互, t 伪终端, d 后台运行。 ##进入正在运行的容器: #docker run -itd --name test2 test01:latest /bin/sh #docker exec -it test2 /bin/bash 或者: #docker attach test2 使用ctrl+p+q 快捷键退出。 或: nsenter工具: 使用nsenter连接到容器,需要先找到容器进程的PID: #PID=$(docker inspect --format "{{ .State.Pid }}" containerid) #nsenter --target $PID --mount --uts --ipc --net --pid 查看docker版本: docker version 查看系统(docker)层面的信息: docker info 指定容器总是重启: docker run -itd --name test3 --restart=always centos:7 查看状态(前台运行): docker stats 查看状态(后台运行): docker stats --no-stream 获取容器输出信息并查看容器运行日志: docker logs containerid 终止容器: docker stop 强行终止容器: docker kill containerid 终止容器后,可以用docker start命令重启容器。 先终止,再重启容器: docker restart 命令。 查看image或container的底层信息: docker inspect <image|container>标签:只读 名称 bash import test 修改 exe 退出 存储
原文地址:http://blog.51cto.com/liyuanjie/2137403