docker入门——安装(CentOS)、镜像、容器
Docker简介
什么是docker
官方解释:
Docker is the company driving the container movement and the only container platform provider to address every application across the hybrid cloud. Today’s businesses are under pressure to digitally transform but are constrained by existing applications and infrastructure while rationalizing an increasingly diverse portfolio of clouds, datacenters and application architectures. Docker enables true independence between applications and infrastructure and developers and IT ops to unlock their potential and creates a model for better collaboration and innovation.
Google翻译:
Docker是推动集装箱运动的公司,也是唯一一家应对整个混合云中的每个应用的集装箱平台提供商。 当今的企业面临着数字化转型的压力,但受到现有应用程序和基础架构的制约,同时合理化日益多样化的云,数据中心和应用程序架构产品组合。 Docker实现了应用程序和基础架构与开发人员和IT操作员之间的真正独立性,从而发挥他们的潜力并创建更好的协作和创新模式。
为什么用docker

在微服务的大背景下,一台物理机或者云主机可能要运行很多应用。应用必须依赖于开发环境。当我们遇到拓展物理机、云主机、应用迁移等场景,必然要重新搭建开发环境。这时,虚拟化技术就很好地保证环境一致、配置一致,并且让你更高效地迁移应用。
Docker正是应对这种场景的虚拟化技术。例如java,只要机器上安装了JVM,一份代码到处运行。应用好比java,只要机器上安装docker,我们事先保存的镜像可以到处运行。这些镜像可以是nginx、php、mysql、数据仓库等,无论你的主机从ubuntu迁移到centos,还是windows迁移linux,只要主机安装了docker,就能迅速地部署好新环境,并且保持环境、配置一致。
详情参考 《Docker从入门到实践》—— “为什么用Docker”
镜像、容器、仓库
镜像,是特殊的文件系统,他包含程序、配置、资源等;
容器,镜像的实例。就像是类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库,用于保存镜像的服务。
CentOS安装docker
安装之前,建议先yum -y upgrade
更新软件包。
官方安装脚本
curl -sSL https://get.docker.com/ | sh
官方安装指南:docker/docker-install
阿里云安装脚本
由于国内墙的原因,如果安装官方脚本很慢,可以试试阿里云安装脚本:
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
如果你是其他操作系统,参考一下《安装 Docker》
Windows安装docker
官方文档Install Docker Toolbox on Windows挺详细的了,下载安装docker toolbox。
如果遇到:
This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory.
修改一下BIOS设置:
重启电脑后按F2或F10进入BIOS界面(不同主板型号进入BIOS所需按键不同)。 进入BIOS界面:Configuratio > Intel Virtualization Technology > Enabled。 注:主板不一样其BISO中显示关键词也不一样的,主要是找到Virtual或Virtualization将其设置为Enabled。
重启docker
service docker restart
这一步很重要,如果不重启,docker pull
时会有如下错误:
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?)...
镜像
搜索镜像
你可以在Docker Hub或Docker Store上搜索你要的镜像。例如,你要找nginx
:
1.搜索nginx

2.浏览官方nginx镜像详情,可以看到有很多版本(准确来说是tag
)选择

拉取镜像
从 Docker Registry 获取镜像的命令是 docker pull
,官方文档。其命令格式为:
docker pull [选项] name[:tag]
例如,拉取刚才搜到的nginx:latest
docker pull nginx
如果你想拉取某个tag
的nginx
,则执行docker pull nginx:{tag}
,例如docker pull nginx:1.13
。如不写tag
,默认latest
。
如果出现如下信息,说明安装成功
Using default tag: latest
latest: Pulling from library/nginx
8176e34d5d92: Pull complete
cb1142c3ae99: Pull complete
45b531966c63: Pull complete
Digest: sha256:0ffc09487404ea43807a1fd9e33d9e924d2c8b48a7b7897e4d1231a396052ff9
Status: Downloaded newer image for nginx:latest
列出本地镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 9e988ed19567 43 hours ago 109MB
说明已拉取一个nginx:latest
镜像到本地了。
删除镜像
使用docker rmi
命令删除镜像,官方文档。格式是:
docker rmi -f {repository}:{tag}
或
docker rmi -f {image id}
例如,删除刚才安装的nginx:latest
,docker rmi -f nginx:latest
或docker rmi -f 9e988ed19567
。
容器
启动容器有两种方式:
- 基于镜像新建一个容器并启动;
- 重新启动在终止状态(stopped)的容器。
新建并启动
基于镜像启动新容器,用docker run
命令,官方文档,格式:
docker run [options] image [command] [arg...]
我们启动nginx
:
docker run --name my_nginx -p 80:80 -d nginx
(如果启动指定tag
nginx,则docker run ... nginx:{tag}
即可)
options说明:
--name 指定容器名,"--name my_nginx"指定容器名为"my_nginx";
-p 映射端口,"-p 80:80"表示映射容器80端口到主机80端口,
参数格式ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort
-d 在后台运行,并打印container id
查看容器状态
$ docker ps
CONTAINER ID IMAGE COMMAND ... PORTS NAMES
fcc368a4d5c0 nginx "nginx -g 'daemon of…" ... 0.0.0.0:80->80/tcp my_nginx
(省略了CREATED
& STATUS
字段)
如果my_nginx
存在,证明容器在运行。假如服务器ip是45.77.146.10
,在浏览器打开:

出现nginx画面,证明nginx容器正常运行,并成功映射80端口。
进入容器
使用docker exec
命令,官方文档:
$ docker exec -it my_nginx bash
root@fcc368a4d5c0:#
对容器的操作,就像普通linux那样。我们定位到/usr/share/nginx/html/
目录,列出所有文件:
# cd /usr/share/nginx/html/
# ls
50x.html index.html
目录下有50x.html
和index.html
两个文件,我们新建一个test.html
:
echo "<html><header><title>测试页面</title></header>test</html>" >> test.html
在浏览器打开http://45.77.146.10/test.html
:

停止容器
使用docker stop
命令,官方文档,格式:
docker stop [options] container
停止my_nginx
容器:
docker stop my_nginx
(也可以指定container id
停止容器,docker stop fcc368a4d5c0
)
查看停止状态容器
刚才my_nginx
容器,只是停止了,并没有销毁。执行命令:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcc368a4d5c0 nginx "nginx -g 'daemon of…" 17 minutes ago Exited (0) 7 seconds ago my_nginx
我们看到my_nginx
处于停止状态。当已存在name
为my_nginx
,就不可以再run
一个--name my_nginx
的容器。
我们试试docker run --name my_nginx -d nginx
,会报错:
docker: Error response from daemon: Conflict.
The container name "/my_nginx" is already in use by container "fcc368a4d5c0f7e0c1fb9bf60780623f1ad5613d68a6496e5fd41bd0a05c3b0a". You have to remove (or rename) that container to be able to reuse that name.
重启容器
docker start my_nginx
然后查看容器状态
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcc368a4d5c0 nginx "nginx -g 'daemon of…" 24 minutes ago Up 7 minutes 0.0.0.0:80->80/tcp my_nginx
my_nginx已重启,保留着之前的状态。
删除容器
删除容器前,必须先停止容器。删除命令:
docker rm my_nginx
再次查看终止状态容器,docker ps -a
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
my_nginx
已被销毁。销毁的容器不能再用docker start
启动,必须用docker run
新建容器。
作者:键盘男
链接:https://www.jianshu.com/p/edba6551d256
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
docker入门——安装(CentOS)、镜像、容器的更多相关文章
- Docker 入门 第二部分: 容器
目录 Docker 入门 第二部分: 容器 先决条件 介绍 你的新开发环境 使用 Dockerfile 定义一个容器 Dockerfile 应用本身 requirements.txt app.py 构 ...
- docker学习笔记2--对镜像/容器的命令操作
Docker启动一个Centos镜像 我们下载完成一个Centos镜像之后,开始启动 docker run -d -i -t <imageID> /bin/bash 这样就能启动一个一直停 ...
- Docker入门 - 001 CentOS Docker 安装
Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发行版本中的内核支持 Docker. ...
- Docker的安装和镜像管理并利用Docker容器实现nginx的负载均衡、动静分离
Docker的安装 一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化 ...
- Docker(三):Docker入门教程-CentOS Docker 安装
CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发 ...
- docker入门(1) Centos 7 下docker的安装
centos 7安装docker 什么是 Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go ...
- Docker探索系列1之docker入门安装与操作
preface docker这种时髦的技术我接触的比较晚,如果不是公司在使用这项技术,估计还得会更晚接触.好了,说下我司现在docker使用的情况.docker在我司是用来跑web服务的,里面的web ...
- Docker启动一个Centos镜像
docker镜像的获取与使用 docker中使用centos7镜像 接着上文,我们下载完成一个Centos镜像之后,开始启动 #运行命令 docker run -d -i -t <imageID ...
- docker入门——安装及简单操作
和安装其他软件一样,安装Docker也需要一些基本的前提条件.Docker要求的条件具体如下: 运行64位CPU构架的计算机(目前只能是x86_64和amd64),Docker目前不支持32位CPU. ...
随机推荐
- mysql索引小记
Mysql索引分为以下几类:FULLTEXT, HASH,BTREE,RTREE. FULLTEXT:全文搜索索引 主要是解决'ad%'这样的查询效率低的问题,只能是MyISAM和InnoDB引擎上使 ...
- Windows Azure系列公开课 - 第二课:为什么选择Windows Azure(上)
Windows Azure是微软的云平台,可以提供广泛服务.您可以通过它搭建.部署并管理解决方案,用于实现您可以想象的几乎任何目标.换言之,WindowsAzure是拥有无限可能的世界.无论您是需要运 ...
- iOS设计模式 - 外观
iOS设计模式 - 外观 原理图 说明 1. 当客服端需要使用一个复杂的子系统(子系统之间关系错综复杂),但又不想和他们扯上关系时,我们需要单独的写出一个类来与子系统交互,隔离客户端与子系统之间的联系 ...
- 沉淀再出发:web服务器和应用服务器之间的区别和联系
沉淀再出发:web服务器和应用服务器之间的区别和联系 一.前言 关于后端,我们一般有三种服务器(当然还有文件服务器等),Web服务器,应用程序服务器和数据库服务器,其中前面两个的概念已经非常模糊了,但 ...
- SCRUM与XP的区别和联系
相同点:SCRUM和XP都是敏捷开发的方法论,都体现了快速反馈,强调交流,强调人的主观能动性等基本原则,而且多数“最佳实践活动”都互相适用. 不同点:Scrum非常突出Self-Orgnization ...
- svn使用教程及常见问题解决方案
使用教程转自:http://www.cnblogs.com/armyfai/p/3985660.html SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本 ...
- ZT android -- 蓝牙 bluetooth (三)搜索蓝牙
android -- 蓝牙 bluetooth (三)搜索蓝牙 分类: Android的原生应用分析 2013-05-31 22:03 2192人阅读 评论(8) 收藏 举报 bluetooth蓝牙s ...
- OC继承
1.成员访问类型 private:私有成员,不能被外部函数访问(使用),也不能被子类继承: protected:保护成员,不能被外部函数访问,可以被子类继承: public:公有成员,可以被外部函数访 ...
- c++计算器后续(4)
自娱自乐: 大概是终于做到没做完的部分了,第三步助教学长的评论还没去改,感觉那个把读取文件放到Scan里面比较麻烦,其他大概还好.以上. 文件读写: 先是原来的残留问题,都是和fstream :: o ...
- 定义路由的state参数
使用$stateProvider.state('stateName', {url: '', params: {}, views: {},...})创建路由,其中部分参数解析: params: 是一个包 ...