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