一、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

docker学习之路(安装、使用)的更多相关文章

  1. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  2. Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7)

    前一节演示如何使用Nginx反向代理 .net Core项目容器,地址:Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二) ...

  3. <Docker学习>2.Centos7安装docker

    Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10. CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无 ...

  4. docker学习1-CentOS 7安装docker环境

    前言 Docker 提供轻量的虚拟化,你能够从Docker获得一个额外抽象层,你能够在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,例如你可以将Tomcat运行在一个D ...

  5. docker学习之路-centos下安装docker

    前言 我要在云服务器上做一个asp.net core的webapi应用,使用docker来部署应用,中间用到的任何组件包括nginx和sqlserver 2017都是用docker来装载运行,所以,这 ...

  6. Docker学习(1安装docker)

    1.在安装之前首先查看系统版本,ubuntu centos6 7 安装方式并不相同,所以首先确定系统版本 #cat /etc/issue 确定系统版本  2.开始安装Docker (1)Ubuntu下 ...

  7. Docker学习1-CentOS 7安装Docker

    前言 docker 是一个开源的应用容器引擎,基于 Go语言 并遵从Apache2.0协议开源. docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 ...

  8. Docker学习系列之一——安装篇

    一.目的 Docker是目前非常流行的虚拟技术,在云计算领域得到了广泛的应用.国内的阿里.京东等大厂都非常普遍地应用了Docker.本文记录了Docker的基本安装过程及最终运行结果,以期备忘,及和同 ...

  9. 2.docker学习之linux安装

    Docker CE is supported on CentOS 7.3 64-bit. 说明docker只能安装在centOS7以上 [root@hadoop-bigdata01 ~]# yum i ...

随机推荐

  1. 问题:PyCharm的几种调试方法的区别

    关于PyCharm的调试方式,step into.step over.step out.run to cursor.resume programe与c语言相关的调试器功能基本相同,但PyCharm提供 ...

  2. jenkins+git部署环境,出现Failed to connect to repository : Command "git ls-remote -h http://gitlab.xxxxx.git HEAD" returned status code 128stdout: stderr: fatal: repository 'http://gitlab.xxxxx.git' not fou

    1.部署jenkins+git源码管理的方式,源码管理报128stdout 源码管理出现如下错误: Failed to connect to repository : Command "gi ...

  3. 数据库查询优化-20条必备sql优化技巧

    0.序言 本文我们来谈谈项目中常用的 20 条 MySQL 优化方法,效率至少提高 3倍! 具体如下: 1.使⽤ EXPLAIN 分析 SQL 语句是否合理 使⽤ EXPLAIN 判断 SQL 语句是 ...

  4. 使用pip安装pymysql出错;Could not find a version that satisfies the requirement cryptography (from pymysql) (from versions: ) No matching distribution found for cryptography (from pymysql)

    今天使用pip安装pymysql时出现如下错误: Could not find a version that satisfies the requirement cryptography (from ...

  5. vs2015常用快捷键大全

    1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键"Ctrl + -"; 2)前进到下一个光标位置:"Ctrl + Shift + - &q ...

  6. Spring中毒太深,离开Spring我居然连最基本的接口都不会写了

    前言 随着 Spring 的崛起以及其功能的完善,现在可能绝大部分项目的开发都是使用 Spring(全家桶) 来进行开发,Spring也确实和其名字一样,是开发者的春天,Spring 解放了程序员的双 ...

  7. 基础的DOS命令

    基础的dos命令 注:所有的命令以及符号应使用英文 打开CMD的方式 开始+系统+命令提示符 Win+R 输入cmd打开控制台 略 常用的dos命令 //切换盘符的方法:直接输入想进入的盘加冒号,例如 ...

  8. html+css一些简单案例:爱心点击,盒子模型,2d动画

    canvas绘制爱心 效果预览 上代码 <!doctype html> <html> <head> <title>HTML5 Canvas爱心飘动动画特 ...

  9. scala安装遇到的问题:[ERROR] Failed to construct terminal; falling back to unsupported java.lang.NumberFormatException: For input string: "0x100"

    安装scala时遇到的问题 lion@king:/opt$ scala Welcome to Scala 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Jav ...

  10. js下 Day17、综合案例

    一.面向对象轮播 效果图: