wzh789 发表于 2019-2-21 10:21:13

docker镜像与容器管理(二)

镜像: 静态的只读文件,是一个只读的模板。
容器: 是从镜像创建的一个运行实例,容器是带有运行时需要的可写文件层。

镜像工作原理:
    启动一个新的容器时,docker会加载镜像,在镜像之上添加一个读写层,
    并将镜像中的目录复制一份到/var/lib/docker/containers/容器ID的目录下,
    容器内修改已存在的文件,会将该文件从只读层复制到读写层,并覆盖只读层的文件,实现了文件系统隔离,
    当删除容器后,读写层的数据将会删除,镜像不变。
镜像文件存储:
    docker相关文件:   /var/lib/docker/目录下。
    /var/lib/docker/overlay2/容器ID/diff   #每层与父层之间的文件差异。
镜像管理命令:
    获取: docker pullimagename:tag
    上传: docker push仓库名称
    查找: docker search imagename:tag
    列出本地镜像: docker images
    修改已有镜像:
docker run -itd --name test02ubuntu:16.04   运行容器
docker attach test02   进入容器
安装相关服务。
docker commit -m "说明信息"-a "指定用户信息"容器ID仓库名:tag
    用Dockerfile构建新镜像: docker build
    删除镜像:   docker rmiimagename
    删除容器:   docker rm containername
    直接删除一个运行中的容器:   docker rm-fcontainername
    批量删除容器:   docker rm -v $(docker ps -aq -f status=exited)

    导出镜像:   docker save -o包名image:tag
    导出正在运行的容器:docker export -o centos7 test01
    导入镜像: docker load-i包名
    导入正在运行的容器为镜像: # docker importcentos7test01:7
    注意:
    export,import :
       导出后再导入的镜像会丢失所有的历史,无法回滚之前的层。
    save,load :
       保存后再加载的镜像没有丢失历史和层,可持久化镜像,可以做到层回滚。

###容器管理:
    ##查看容器:
    docker ps :列出当前所有正在运行的container
    docker ps -l :列出最近一次启动的container
    docker ps -a :列出所有的container
    docker ps -q :列出最近一次运行的container ID
    ##运行容器:
    运行容器: docker run -itdimage: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=$(dockerinspect --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 logscontainerid
    终止容器:   docker stop
    强行终止容器:docker kill containerid
    终止容器后,可以用docker start命令重启容器。
    先终止,再重启容器: docker restart 命令。

    查看image或container的底层信息:
    docker inspect   




页: [1]
查看完整版本: docker镜像与容器管理(二)