zoukankan      html  css  js  c++  java
  • Docker:镜像操作和容器操作

    镜像操作

    列出镜像:

    $ sudo docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    hello-world         latest              0a6ba66e537a        4 weeks ago         960 B

    获取镜像:

    docker系统镜像可以从任意一个可访问的镜像仓库获取,默认从docker hub上获取,如果下载太慢的话可以考虑国内的镜像仓库,例如dl.dockerpool.com:5000或者阿里云镜像库下载。

    docker获取镜像用docker pull命令,如下:

    #从docker官方仓库下载ubuntu12.04版本镜像
    sudo docker pull ubuntu:12.04  
    
    从dl.dockerpool获取镜像 sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04

    注意:从第三方镜像仓库获取镜像可能出现https证书问题,例如:

    Error response from daemon: unable to ping registry endpoint https://dl.dockerpool.com:5000/v0/
    v2 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v2/: tls: oversized record received with length 28012
    v1 ping attempt failed with error: Get https://dl.dockerpool.com:5000/v1/_ping: tls: oversized record received with length 28012

    解决方案:

    进入/etc/default目录,找到docker文件,在其中添加如下代码:

    DOCKER_OPTS="--insecure-registry dl.dockerpool.com:5000"

     之后重启docker服务:

    sudo service docker restart

     镜像保存与导入

    保存的文件以.tar方式存在

    保存方式一:save

    save命令会将镜像完整保存,包括历史版本和元数据信息,所以文件可能比较大。

    -o: 表示以文件的形式导出  紧跟在-o后面的是导出文件保存的位置  最后是镜像(仓库:TAG,或者镜像id)
    sudo
    docker save -o /home/fengzheng/dockerImages/mmm.tar ubuntu:12.04

    同样用的是Ubuntu,在一台机器上正常,在另外一台机器上报如下错误,还没有找到原因,希望有知道原因的朋友在评论里指出,不胜感激。

     Error response from daemon: open /var/lib/docker/aufs/mnt/30868777f2756735efc907c763555f869472d48ea92156c3c4b09ac22ec4adc6/.wh..wh.plnk/1003.3513973: operation not permitted

    保存方式二:export

    确切的说,export其实是容器的保存,只把镜像当前的状态保存下来,没有历史版本等信息,所有文件比较小

    -o:表示以文件形式导出 紧跟在-o后面的是导出文件保存位置   最后是容器的id 容器通过sudo docker ps -a 查看,下一篇会介绍
    docker export -o ubuntu1204.tar d0751467dcad

    镜像导入:

    docker load

    sudo docker load < /home/fengzheng/Docker/ubtuntu12.04.tar

    镜像删除

    删除镜像前,要先把依赖于这个镜像的容器删除(sudo docker rm 容器id)

    删除镜像的命令是docker rmi [镜像id]

    sudo docker rmi 0ac5b09d8536
    Deleted: 0ac5b09d8536832e73c10e39bfda2e94781e07ebe47a206ea1c20f3f672f258a
    Deleted: efbb515ae632b8ba4b8536c1eadcf1304d915c076fcadbc8c2cb6f8f2ab82013
    Deleted: 5e59ab4801348d2d951c93373151bf0b4059c30bb1b58af4ce5e390114e83e1c
    Deleted: be10ee96620dd1cb4bae39bb0351f241eed25b086e0c90a907a29eef2af41b34

    提交修改的容器,并生成新的镜像

    当对现有容器进行修改后,例如安装了某些软件、修改了配置等,要保存当前修改并生成新的镜像,使用docker commit命令 ,这个命令和git的commit命令很像

    # -a:修改者信息 -m:注释、说明  紧跟着当前操作的容器id   最后是要生成的新的镜像名称
    sudo
    docker commit -a "fengzheng" -m "this is a commit message" ae2a59b86dd9 fengzheng/ubuntu 085243761c41ae58e92ba855539460b7342a5cd31b44b51a71c654bb8f823c10

    查看镜像的信息:docker inspect [镜像名称或者镜像id]

    sudo docker inspect fengzheng/ubuntu
    或者
    sudo docker inspect 085243761c41

    容器操作

    新建并启动容器

    根据一个镜像可以启动多个容器,启动容器的命令是docker run

    sudo docker run -t -i ubuntu:12.04  /bin/bash
    或者
    sudo docker run -t -i  镜像id
    

    常用参数解释:

    -t 表示让Docker分配一个伪终端并绑定到容器的标准输入上

    -i 表示让容器的标准输入保持打开

    -d 表示以守护方式打开(即非交互模式,后台运行)

    还有一个比较常用的,做网络配置时端口映射的参数-p,例如下面的命令将宿主机的3222端口映射到容器的22端口、将宿主机的3280端口映射到容器的22端口,用法如下:

    #-p 设置端口映射 -p 宿主机端口:容器端口  
    sudo docker run -t -i -p 3222:22 -p 3280:80 87e5b6b3ccc1 /bin/bash

    查看容器列表

    #查看已启动的容器
    sudo docker ps 
    
    #查看所有容器
    sudo docker ps -a  

    启动一个已存在的容器  

    #后面的id为容器ID
    sudo docker start 8d98fd43acd4

    进入容器  

    sudo docker attach 8d98fd43acd4

    停止容器

    sudo docker stop 8d98fd43acd4
    

    删除容器

    容器必须是停止状态的才可以删除

    sudo docker rm 8d98fd43acd4

    导出容器

    #将容器id为7691a814370e 的导出到当前目录下 名称为ubuntu.tar
    sudo docker export 7691a814370e > ubuntu.tar
    

    导入容器  

     

      

     

  • 相关阅读:
    Lambda表达式、依赖倒置
    ASP.NET vNext 概述
    Uname
    RHEL4 i386下安装rdesktop【原创】
    Taxonomy of class loader problems encountered when using Jakarta Commons Logging(转)
    How to decompile class file in Java and Eclipse
    先有的资源,能看的速度看,不能看的,抽时间看。说不定那天就真的打不开了(转)
    Google App Engine 学习和实践
    【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询
    js正則表達式语法
  • 原文地址:https://www.cnblogs.com/fengzheng/p/4958571.html
Copyright © 2011-2022 走看看