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
    

    导入容器  

     

      

     

  • 相关阅读:
    转载:CODE CSDN Git 配制方法介绍
    版本管理之Git(二):Win7上Git安装及简单配置过程
    Html_color code表示
    Android 自动化测试—robotium(十一) robotium实现微博绑定
    转载:Android自动化测试- 自动获取短信验证码
    Android 自动化测试—robotium(九) Junit_report测试报告重定向输出到终端SDCard
    每日一问:面试结束时面试官问"你有什么问题需要问我呢",该如何回答?
    常见的几个Python面试题
    使用python解析Json字符串-获取Json字符串关键字
    Android测试之 APK重签名方法
  • 原文地址:https://www.cnblogs.com/fengzheng/p/4958571.html
Copyright © 2011-2022 走看看