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

1、docker安装git

一、更新现有的yum包docker

yum update

二、配置docker yum源json

[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 ~]# 

三、使用yum命令安装dockerubuntu

yum install docker-engine

四、启动docker服务vim

service docker start

五、确认docker安装成功centos

docker run hello-world

2、docker使用app

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

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

 三、docker容器中运行hello-worldurl

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

提示:

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

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

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

 备注:apt-get 命令执行完毕以后,容器就会中止,但对容器的改动不会丢失。

目标:

在learn/tutorial镜像里面安装ping程序。

提示:

在执行apt-get 命令的时候,要带上-y参数。若是不指定-y参数的话,apt-get命令会进入交互模式,须要用户输入命令来进行确认,但在docker环境中是没法响应这种交互的。

正确的命令:

 五、保存对容器的修改

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

 

 六、运行新的镜像

由于咱们以前在镜像learn/tutorial中安装了ping程序,并将learn/tutorial修改成learn/ping,下面咱们使用镜像learn/ping,去ping www.baidu.com

七、检查运行中的镜像

 八、发布本身的镜像

命令:docker push 镜像名字

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

一、docker虚拟机上拉取registry

 

 二、经过该registry镜像启动一个容器

docker run -d -p 5000:5000 registry

 说明:默认状况下,会将仓库存放于容器内的/tmp/registry目录下,这样若是容器被删除,则存放于容器下的镜像也会丢失,因此通常状况下会指定本地一个目录挂载到容器内/tmp/registry下。

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

因为咱们的5000:5000已经存在,先将这个容器删除:docker rm -f 容器ID,而后再建立

而后咱们去观察一下容器内部状况:

能够看到registry 挂载目录是 在 /var/lib/registry 

 4、测试私有仓库

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

docker pull busybox

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

  

 三、将新建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)

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

 五、查看镜像

 5、删除私有仓库镜像

一、获取镜像sha256值

注意:经过命令行获取镜像对应sha256值

    curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET        http://镜像地址/v2/镜像名称/manifests/tag 

二、删除

说明:当删除镜像的时候若是出先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

相关文章
相关标签/搜索