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
docker学习之路(安装、使用)的更多相关文章
- docker学习笔记1 -- 安装和配置
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...
- Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7)
前一节演示如何使用Nginx反向代理 .net Core项目容器,地址:Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二) ...
- <Docker学习>2.Centos7安装docker
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10. CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无 ...
- docker学习1-CentOS 7安装docker环境
前言 Docker 提供轻量的虚拟化,你能够从Docker获得一个额外抽象层,你能够在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,例如你可以将Tomcat运行在一个D ...
- docker学习之路-centos下安装docker
前言 我要在云服务器上做一个asp.net core的webapi应用,使用docker来部署应用,中间用到的任何组件包括nginx和sqlserver 2017都是用docker来装载运行,所以,这 ...
- Docker学习(1安装docker)
1.在安装之前首先查看系统版本,ubuntu centos6 7 安装方式并不相同,所以首先确定系统版本 #cat /etc/issue 确定系统版本 2.开始安装Docker (1)Ubuntu下 ...
- Docker学习1-CentOS 7安装Docker
前言 docker 是一个开源的应用容器引擎,基于 Go语言 并遵从Apache2.0协议开源. docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 ...
- Docker学习系列之一——安装篇
一.目的 Docker是目前非常流行的虚拟技术,在云计算领域得到了广泛的应用.国内的阿里.京东等大厂都非常普遍地应用了Docker.本文记录了Docker的基本安装过程及最终运行结果,以期备忘,及和同 ...
- 2.docker学习之linux安装
Docker CE is supported on CentOS 7.3 64-bit. 说明docker只能安装在centOS7以上 [root@hadoop-bigdata01 ~]# yum i ...
随机推荐
- Python追加文件内容
测试中需要造几百个账号,写了个脚本可以自动生成账号,但想把生成的账号写入一个文件, 开始用的如下的write()方法,发下会先把原文件的内容清空再写入新的东西,文件里面每次都是最新生成的一个账号 mo ...
- Java集合源码分析(十)——TreeSet
简介 TreeSet就是一个集合,里面不能有重复的元素,但是元素是有序的. TreeSet其实就是调用了TreeMap实现的,所以,它也不是线程安全的.可以实现自然排序或者根据传入的Comparato ...
- STL——容器(List)List 的数据元素插入和删除操作
push_back(elem); //在容器尾部加入一个元素 1 #include <iostream> 2 #include <list> 3 4 using namespa ...
- Spring 中常用的注解
(1).用于注册bean对象的注解 1.1@Component: 作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理.相当于在xml中配置一个 ...
- redis 存储验证码 基本使用
1 redis 存储验证码 基本使用 1.1 setting 配置 CACHES = { "default": { "BACKEND": "djang ...
- HBase数据导入导出工具
hbase中自带一些数据导入.导出工具 1. ImportTsv直接导入 1.1 hbase中建表 create 'testtable4','cf1','cf2' 1.2 准备数据文件data.txt ...
- 2020-2021-1 20209307 《Linux内核原理与分析》第八周作业
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第八周作业> 这个作业的目标 & ...
- Windows安装Pytorch并配置Anaconda与Pycharm
1 开发环境准备 Python 3.7+Anaconda3 5.3.1(64位)+CUDA+Pycharm Community 2 安装Anaconda 2.1 进入官网下载: 根据windows版本 ...
- 2020软件测试工程师面试题汇总(内含答案)-看完BATJ面试官对你竖起大拇指!
测试技术面试题 1.什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案: 兼容测试主要是检查软件在不同的硬件平台.软件平台上是否可以正常的运行,即是通常说的软件的可移植性. 兼容的类型,如果细分的话 ...
- [RoarCTF 2019]Easy Calc
[RoarCTF 2019]Easy Calc 题目 题目打开是这样的 查看源码 .ajax是指通过http请求加载远程数据. 可以发现有一个calc.php,输入的算式会被传入到这个php文件里,尝 ...