docker学习整理
1.安装
Docker 支持 CentOS6 及以后的版本
对于 CentOS6,可以使用 EPEL 库安装 Docker
CentOS7 系统 CentOS-Extras 库中已带 Docker,可以直接安装
yum install docker-io
service docker start
chkconfig docker on
看docker版本
docker version
2.docker启动时报错
docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove,....
解决办法:
执行:yum upgrade device-mapper-libs
当出现
Transaction check error:
file /usr/lib/systemd/system/blk-availability.service from install of device-mapper-7:1.02.107-5.el7_2.1.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64
安装包冲突,先yum remove lvm2-7:2.02......
3.docker搜索
使用docker最简单的方式莫过于从现有的容器镜像开始。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行的工具来检索。
命令行的格式为:docker search 镜像名字
$docker search tutorial
下载镜像的命令非常简单,使用docker pull命令即可。(译者按:docker命令和git有一些类似的地方)。在docker的镜像索引网站上面,镜像都是按照用户名/镜像名的方式来存储的。有一组比较特殊的镜像,比如ubuntu这类基础镜像,经过官方的验证,值得信任,可以直接用镜像名来检索到。
执行pull命令的时候要写完整的名字,比如"learn/tutorial"。
$docker pull learn/tutorial
4.docker运行
在docker容器中运行hello world!
docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。
目标:
在我们刚刚下载的镜像中输出"hello word"。为了达到这个目的,我们需要在这个容器中运行"echo"命令,输出"hello word"。
提示:
docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。
正确的命令:
$docker run learn/tutorial echo "hello word"
在容器中安装新的程序
下一步我们要做的事情是在容器里面安装一个简单的程序(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 run learn/tutorial apt-get install -y ping
保存对容器的修改
当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。
目标:
首先使用docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。
提示:
1. 运行docker commit,可以查看该命令的参数列表。
2. 你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)
3. 无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。(译者按:非常类似git里面的版本号)
正确的命令:
$docker commit 698 learn/ping
执行完docker commit命令之后,会返回新版本镜像的id号。
运行新的镜像
ok,到现在为止,你已经建立了一个完整的、自成体系的docker环境,并且安装了ping命令在里面。它可以在任何支持docker环境的系统中运行啦!(译者按:是不是很神奇呢?)让我们来体验一下吧!
目标:
在新的镜像中运行ping www.google.com命令。
提示:
一定要使用新的镜像名learn/ping来运行ping命令。(译者按:最开始下载的learn/tutorial镜像中是没有ping命令的)
正确的命令:
$docker run lean/ping ping www.google.com
检查运行中的镜像
现在你已经运行了一个docker容器,让我们来看下正在运行的容器。
使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。
目标:
查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。
提示:
可以使用镜像id的前面部分,不需要完整的id。
正确的命令:
$ docker inspect efe
发布docker镜像
现在我们已经验证了新镜像可以正常工作,下一步我们可以将其发布到官方的索引网站。还记得我们最开始下载的learn/tutorial镜像吧,我们也可以把我们自己编译的镜像发布到索引页面,一方面可以自己重用,另一方面也可以分享给其他人使用。
目标:
把learn/ping镜像发布到docker的index网站。
提示:
1. docker images命令可以列出所有安装过的镜像。
2. docker push命令可以将某一个镜像发布到官方网站。
3. 你只能将镜像发布到自己的空间下面。这个模拟器登录的是learn帐号。
预期的命令:
$ docker push learn/ping
docker学习整理的更多相关文章
- F4NNIU 的 Docker 学习资料整理
F4NNIU 的 Docker 学习资料整理 Docker 介绍 以下来自 Wikipedia Docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操 ...
- docker学习资料整理(持续更新中..)
docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...
- docker~学习笔记索引
回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...
- docker学习(1)--基础概念
转载请注明源文章出处:http://www.cnblogs.com/lighten/p/6841677.html 1.前言 docker的官网:这里.下一段摘自官网描述. docker是世界领先的软件 ...
- Docker学习(六): 网络使用与配置
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- Docker学习(五): 仓库与数据管理
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- Docker学习(三): Dockerfile指令介绍
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- Docker学习(四): 操作容器
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- Docker学习(二): 镜像的使用与构建
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
随机推荐
- SaltStack 入门(赵班长)
SaltStack 入门之赵班长 赵班长博客: https://www.unixhot.com/article/11 1~5章 saltstack官网文档: https://www.unixhot ...
- js数组判断是否含有某一个元素
arr.indexOf('a')如果有则返回的a的下标位置,否则返回false.
- stasm+三角剖分
- thinkphp 对数据库的操作
查看ThinkPHP完全开发手册3.1 首先编辑配置文件 thinkphp这个数据库就不乱改了 昨天新建了一个 confluence(utf8)数据库 所以就用它学习一下吧,因为就只建立了一个数据库, ...
- window.open被浏览器拦截的解决方案
现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截.何况当出现拦截时,很多小白根 ...
- 解决【必须使用“角色管理工具”安装或配置Microsoft .NET Framework 3.5 SP1】的方法
[摘要:正在Windows Server 2008下间接装置SQL Server 2008时,会涌现以下毛病: 必需应用“脚色治理对象”装置或设置装备摆设Microsoft .NET Framewor ...
- python_列表
1. 列表的定义 (1) 用[]包含的元素,就是列表 (2)可以用list函数定义列表 2. 基本的列表操作(可参考示例) (1)元素赋值 (2)删除元素 (3)分片赋值 3. 列表方法 (1) ...
- 设计模式之 -- 单例模式(Singleton)
单例模式是一种常用的软件设计模式,通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问. 使用说明 1.使用时机 在某些系统中某些对象最多只能存在一个,例如Windows中只能打开一个 ...
- Effective C++ 4.设计与声明
//条款18:让接口容易被正确使用,不易被误用 // 1.如果客户企图使用某个接口而却没有获得他所预期的行为,那么这个代码就不该通过编译. // 2.促进正确使用的方法包括接口的一致性,以及与内置类型 ...
- 给三个int,判断是否可构成三角形算法
哎,今天跟同事讨论算法,有一个女生给我出了这样一个题目,bool Test(int a,int b,int c)感觉很简单,实际呢?自己考虑的不够全面.在得到了提示之后呢,也还是找不到很好的解决方案. ...