CentOS 下安装和使用 Docker
引言:
在服务器开发过程中,环境部署无疑是及其繁琐的事情,特别是当项目数量和规模达到一定级别之后,在一台新的机器上部署项目环境无疑是极其漫长而痛苦的,那么什么办法能够实现我们的目标:在开发环境的一次配置编译,就可以批量部署到生产环境。 这就需要用到我们接下来要说到的这个引擎了 —— Docker
简介:
Docker 是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括 VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
docker官网地址:docker
1.应用场景:
- web 应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的PaaS环境。
上面的内容是网络上最常见的 Docker 原理的分析方式,似乎有点难以理解,我们接下来以一种比较通俗的方式来解释一下:什么是 Docker? 以及 为什么会有 Docker?
参考知乎:如何通俗解释Docker是什么?,作者:刘允鹏
2.什么是 Docker ?
知乎上有一个这样的解释:
Docker 的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。
docker 就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker 就是集装箱。
3.为什么会有 Docker ?
关于 Docker 存在的原因和意义,在知乎上的解释如下:
- 1.不同的应用程序可能会有不同的应用环境,比如 .net 开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如 IIS 和 Apache 访问端口冲突。这个时候你就要隔离 .net 开发的网站和 php 开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker 可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。
- 2.你开发软件的时候用的是 Ubuntu,但是运维管理的都是 centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些 Ubuntu 转 centos 的问题,比如:有个特殊版本的数据库,只有 Ubuntu 支持,centos 不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的 docker 就可以了。而且部署速度快。
- 3.在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker 部署的话,这些内存就会利用起来。
也就是说,解决应用环境隔离的方式有 虚拟机 和 容器 这两种技术可以实现,但是虚拟机的开销太大,所以就选择用像 Docker 这个容器来实现应用环境隔离的作用:
- 一方面,能够节省开销;
- 另一方面,解决一次开发配置编译便能直接快速部署到运营生产环境的问题。
CentOS 安装 Docker:
1.安装准备:
首先,先更新一下安装工具的资源库:
yum update
Docker 要求 CentOS 系统的内核版本高于 3.10 ,那么我们先来查一下当前系统内核的版本:
# uname -r
3.10.0-514.21.1.el7.x86_64
2.安装 docker:
然后,安装 Docker 工具:
yum -y install docker
加上 -y 的作用就是全自动的安装方式,不需要在安装过程中手动选择 y or n。
3.版本查询:
安装完成后,可以查询一下安装的版本:
# docker --version
Docker version 1.12.6, build 88a4867/1.12.6
还可以看到更详细的信息,包含 docker Client 和 docker Server:
docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
Go version: go1.7.4
Git commit: 88a4867/1.12.6
Built: Mon Jul 3 16:02:02 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
Go version: go1.7.4
Git commit: 88a4867/1.12.6
Built: Mon Jul 3 16:02:02 2017
OS/Arch: linux/amd64
4.启动 docker 服务:
# service docker start
Redirecting to /bin/systemctl start docker.service
5.执行 hello-world 镜像:
# docker run hello-world
Unable to find image 'hello-world:latest' locally
Trying to pull repository docker.io/library/hello-world ...
latest: Pulling from docker.io/library/hello-world
b04784fba78d: Pull complete
Digest: sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
由于刚安装完的 docker 后,本地还不存在 hello-world 镜像,所以执行此镜像时会从远端仓库中去下载 hello-world 镜像,并在容器中运行。再次运行,则不会再有下载过程,会直接输出镜像的执行结果。
实用操作:
推荐一个不错的入门博客系列:大白话Docker入门(一) 和 大白话Docker入门(二)
需要明确两个概念:Image 和 Container ,即镜像与容器,列举一些核心的操作指令:
1.已下载镜像列表:
镜像也就是 Docker Images
docker images
2.容器列表:
容器对应 Docker Container
docker ps
这是正在运行的容器列表,假如想查看全部,使用:
docker ps -a
3.从 Docker hub 仓库的 Registry 中下载一个 Image (镜像):
容器对应 Docker Container
docker pull image-name
image-name 是镜像的名称,可以先在 docker hub 官网 查询镜像是否存在。假如有不同的Tag,可以在最后带上要下载的Tag
docker pull image_name:tag
4.将镜像放进容器中执行:
docker run image-name
其他:
1.FirewallD
CentOS-7 中介绍了 firewalld,firewall 的底层是使用 iptables 进行数据过滤,建立在 iptables 之上,这可能会与 Docker 产生冲突。
- 当 firewalld 启动或者重启的时候,将会从 iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作。
- 当你使用的是 Systemd 的时候,
firewalld会在 Docker 之前启动,但是如果你在 Docker 启动之后再启动 或者重启firewalld,你就需要重启 Docker 进程了。
参考:
CentOS 下安装和使用 Docker的更多相关文章
- CentOS下安装Jenkins(Docker/war/tomcat/java -jar)
参考官方提供的安装教程:https://jenkins.io/doc/book/installing/,可以发现官方推荐使用Docker进行安装.虽然用Docker有很多好处,但也有缺点. 下面是各种 ...
- CentOS下安装DockerCE
title: CentOS下安装DockerCE comments: false date: 2019-09-04 09:47:58 description: 在CentOS下安装社区版Docker ...
- docker学习之路-centos下安装docker
前言 我要在云服务器上做一个asp.net core的webapi应用,使用docker来部署应用,中间用到的任何组件包括nginx和sqlserver 2017都是用docker来装载运行,所以,这 ...
- Centos下安装Docker,并配置国内docker源
Centos下安装Docker 替换为国内的yum源(可选): mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.re ...
- CentOS下安装hadoop
CentOS下安装hadoop 用户配置 添加用户 adduser hadoop passwd hadoop 权限配置 chmod u+w /etc/sudoers vi /etc/sudoers 在 ...
- CentOS下安装使用start-stop-daemon
CentOS下安装使用start-stop-daemon 在centos下下了个自启动的服务器脚本 执行的时候发现找不到start-stop-daemon命令 好吧 执行手动编译一下 加上这个命令 w ...
- 从零开始学 Java - CentOS 下安装 Tomcat
生活以痛吻我,我仍报之以歌 昨天晚上看到那个冯大辉老师的微信公众号,「小道消息」上的一篇文章,<生活以痛吻我,我仍报之以歌>.知乎一篇匿名回答,主题为<冯大辉到底是不是技术大牛,一个 ...
- CentOS 下安装
2016年12月5日15:25:58 ----------------------------------- 通常情况下在centos下安装软件就用yum. 关键是,使用yum你要知道安装包的名字是什 ...
- [Linux]CentOS下安装和使用tmux
前天随意点开博客园,看到了一篇关于tmux的文章 Tmux - Linux从业者必备利器,特意还点进去看了.毕竟Linux对于做游戏服务端开发的我来说,太熟悉不过了.不过我就粗略地看了一眼,就关掉了. ...
随机推荐
- ubuntu14.04上 nginx启动停止
sudo service nginx stop 停止 sudo nginx 启动
- python 元组查找元素返回索引
#create a tuple tuplex = tuple("index tuple") print(tuplex) #get index of the first item w ...
- Qt_OpenGL_教程
1. 中文版: Qt OpenGL教程 http://blog.csdn.net/myths_0/article/details/24431597 http://qiliang.net/old/neh ...
- 《WAP》团队第三次作业--团队项目的原型设计与开发
一· 目 录 第一部分 · 结 对 成 员 明 细 第二部分 · NABCD 模 型 第三部分 · 原 型 设 计 第四部分 · P S P 第五部分 · 结 对 过 程 第六部分 · 心 得 总 ...
- Spring AMQP 源码分析 01 - Impatient
### 准备 ## 目标 了解 Spring AMQP 核心代码 ## 前置知识 RabbitMQ 入门 ## 相关资源 Quick Tour for the impatient:&l ...
- 真核生物基因结构 & mRNA结构
参考: 分子生物学教材 再一次,翻看真核生物基因结构! mRNA基本结构特点 Structure and function of Messenger RNA (mRNA ) 基因结构 其实这个结构不完 ...
- English trip -- FC(万词辩音王)
五个元音字母+一个半元音字母 1.发字母本身音都是 元+辅+e 2.不发字母音基本都是辅音结尾或者两个相同字母 辅+元+辅;元+辅 开音节 ...
- mac 安装phpunit
大部分内容来自:https://blog.csdn.net/aishangyutian12/article/details/64124536 感谢创作,感谢分享 单元测试的重要性就不说了,postma ...
- antd-pro1.0使用jest对react组件进行单元测试
前言 基于React+Ant Design(以下用Antd表示)的项目,在对于自己封装的,或者基于Antd封装的公共组件的自动化测试技术的选型和实践. 背景 随着前端项目越来越大,业务逻辑日益繁杂,协 ...
- python-day53--前端js
一.基本语法(ECMA) 单行注释 // /* 多行注释 */ 变量赋值 默认以换行符作为结束符,有分好以分号作为结束符号 JS的引入方式: 1. <script> </script ...