• docker学习之路(安装、使用)


    一、docker安装

    1、更新现有的yum包

    yum update

    2、配置docker yum源

    [root@docker ~]# cat /etc/yum.repos.d/docker.repo 
    [dockerrepo]
    name=Docker Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/7
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg
    [root@docker ~]# 

    3、使用yum命令安装docker

    yum install docker-engine

    4、启动docker服务

    service docker start

    5、确认docker安装成功

    docker run hello-world

    二、docker使用

    1、使用docker搜索可用的镜像,语法:docker search 镜像名字,例如搜索名为tutorial的镜像

     2、使用docker命令来下载镜像,语法:docker  pull  镜像名字

     3、docker容器中运行hello-world

    在我们刚刚下载的镜像中输出"hello word"。为了达到这个目的,我们需要在这个容器中运行"echo"命令,输出"hello word"。

    提示:

    docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。

     4、在容器中安装新的程序

    下一步我们要做的事情是在容器里面安装一个简单的程序(ping)。我们之前下载的tutorial镜像是基于ubuntu的,所以可以使用ubuntu的apt-get命令来安装ping程序: apt-get install -y ping

     备注:apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。
    
    目标:
    
    在learn/tutorial镜像里面安装ping程序。
    
    提示:
    
    在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。
    
    正确的命令:

     5、保存对容器的修改

    当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。
    目标:
    首先使用 docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。
    提示:
    1. 运行docker commit,可以查看该命令的参数列表。
    2. 你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)
    3. 无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。(译者按:非常类似git里面的版本号)
    正确的命令:

     

     6、运行新的镜像

    因为我们之前在镜像learn/tutorial中安装了ping程序,并将learn/tutorial修改为learn/ping,下面我们使用镜像learn/ping,去ping www.baidu.com

    7、检查运行中的镜像

     8、发布自己的镜像

    命令:docker push 镜像名字

    三、Docker私有仓库搭建及镜像删除

    1、docker虚拟机上拉取registry

     

     2、通过该registry镜像启动一个容器

    docker run -d -p 5000:5000 registry

     说明:默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器下的镜像也会丢失,所以一般情况下会指定本地一个目录挂载到容器内/tmp/registry下。

    3、指定本地一个目录挂载到容器内/tmp/registry下。

    由于我们的5000:5000已经存在,先将这个容器删除:docker rm -f 容器ID,然后再创建

    然后我们去观察一下容器内部情况:

    可以看到registry 挂载目录是 在 /var/lib/registry 

     四、测试私有仓库

    1、首先拉取一个小的镜像

    docker pull busybox

    2、为镜像修改tag,默认latest

      

     3、将新建tag的镜像上传到私有仓库

    解决办法:

    出现这问题的原因是:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。

    这个报错是在本地上传私有镜像的时候遇到的报错如上图:

     在docker server启动的时候,增加启动参数,默认使用HTTP访问:

     vim /usr/lib/systemd/system/docker.service

    找到 ExecStart
    ExecStart=/usr/bin/dockerd  --insecure-registry 192.168.222.200:5000

    修改好后重启docker 服务

    systemctl daemon-reload 

    systemctl restart docker

    重启docker服务后,将容器重启

    docker start $(docker ps -aq)

     4、将刚才上传的busybox镜像拉取下来

     5、查看镜像

     五、删除私有仓库镜像

    1、获取镜像sha256值

    注意:通过命令行获取镜像对应sha256值
    
        curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET        http://镜像地址/v2/镜像名称/manifests/tag 

    2、删除

    说明:当删除镜像的时候如果出先HTTP/1.1 405 Method Not Allowed,则进入私有仓库,进行这个操作:

    需在配置文件中的storage配置中增加delete=true配置项,允许删除镜像。默认的镜像是没有这个参数
    cat config.yml
     
    version: 0.1
    log:
      fields:
        service: registry
    storage:
      delete:
        enabled: true
      cache:
        blobdescriptor: inmemory
      filesystem:
        rootdirectory: /var/lib/registry
    http:
      addr: :5000
      headers:
        X-Content-Type-Options: [nosniff]
    health:
      storagedriver:
        enabled: true
        interval: 10s
        threshold: 3
    curl -I -X DELETE http://192.168.222.200:5000/v2/busybox/manifests/sha256:a2209c2117f9a1f1a165ac37ccc1e45baf7e5d99dcef7df0a1c35d3858c35c0c

     删除之后,再次查看发现该镜像没有对应的sha256,说明该镜像已经被删除

    curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET http://192.168.222.200:5000/v2/busybox/manifests/latest

     进入私有仓库查看发现该目录下大小没有发生变化,这是因为只删除了元数据而已,并没有删除数据。

     下面将数据也一并删除,进入容器执行垃圾回收命令后数据被删除

    registry garbage-collect /etc/docker/registry/config.yml

  • 相关阅读:
    关于VS2010“ADO.NET Entity Data Model模板丢失或者添加失败问题
    Swagger的配置方法
    asp.net core的cookie认证
    abap程序开发
    闲置7成新二手图书处理(待更新)
    Winform 调用C++ OCX 传入参数和传出参数问题
    Html上传图片问题
    服务器端输出到客户端
    IE8下居然页面突然看不了
    解决Arial字体“高低肩问题”
  • 原文地址:https://www.cnblogs.com/yfb918/p/11641948.html
Copyright © 2020-2023  润新知