Docker那些事儿之初识Docker
公司内部一直在使用Docker进行服务的部署和应用的升级,从开始使用Docker一直到线上的部署以及一些基础服务的开发本人都有参与,而且自己的网站也是在Docker的基础之上进行构建的,想想也需要总结下,才能更好的使用这个工具,本篇就先进行一些简单的基础说明以便新人了解
简介
Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。
简单理解,像是在我们自己的windows笔记本中安装虚拟机VM,在虚拟机上安装一个linux操作系统,然后我们将tomcat服务部署在这个虚拟机中的linux系统之上运行,大部分人应该搞过这种模式吧。类比Docker,Docker相当于VM,但是又有所不同,安装了Docker之后,我们同样也可以安装一个linux操作系统,管理都是通过Docker来进行,和VM有很多相似之处。
文字说明看看就好,实际操作起来你才能明白
安装
以centOS为例,其他各个平台均有对应使用说明,自行查找,这里还是以公司常用的linux内核服务器来作说明。
目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
查看下centOS7内核版本
[root@45cd851533f6 /]# uname -r
3.10.0-693.2.2.el7.x86_64
安装Docker CE(社区免费版)
[root@45cd851533f6 /]# uname -r
3.10.0-693.2.2.el7.x86_64
切换到root用户下操作,最简单的方式是使用yum安装,这里推荐这种方式,没安装yum的先安装yum
移除原有的旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安装必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:
yum makecache fast
安装 Docker-ce:
yum -y install docker-ce
启动 Docker 后台服务
systemctl start docker
测试运行 hello-world
docker run hello-world

名词说明
Docker 镜像(Images):Docker 镜像是用于创建 Docker 容器的模板。
Docker 容器(Container):容器是独立运行的一个或一组应用。
有点抽象,我简单说明下,首先,镜像可以当成VM虚拟机上的一个已经打包好的操作系统,不同的是这个已经打包好的操作系统中可以放置好各种我们想放的东西,比如,公司的应用服务,tomcat应用,我可以将运行tomcat应用服务的linux系统(包括所有东西)全部打包成镜像保存下来。而容器就是运行的镜像,我打包好的操作系统(包含应用服务等等),我现在需要应用提供服务,我就可以将镜像运行起来,你可以理解成在VM中启动了一个linux操作系统,之前部署好的tomcat服务也在里面,这样就可以直接对外提供服务
简单使用
这里演示一个常用的操作来帮助初学者理解,比如我需要一个tomcat8的运行环境,先不管应用服务部署部分,如何搞定呢?如果是以前,测试环境肯定需要安装JDK8的环境,再下载Tomcat,然后修改配置文件等等操作,然后启动Tomcat,OK,那么Docker环境下如何做呢?
拉取镜像
添加上版本号,不添加默认latest,最新版本
docker pull tomcat:8.5-jre8
查看镜像
docker images
运行镜像
这里我用的是镜像id
docker run --name test -d 3639174793ba
查看容器
docker ps -a
至此,看到Up状态时就已经成功启动了一个Tomcat环境的容器,当然,这里端口没做映射,所以不能访问,如果需要访问,添加上参数-p 8080:8080,将宿主机端口映射到容器端口,就可以访问了。
更多命令请参考官网:https://www.docker.com/
总结
本篇文章只是简单介绍下Docker以及一些基础使用,便于初学者理解这是个什么技术,目前公司内部已经大量使用Docker技术,能明显感觉到有很多优点:
- 隔离机制,容器之间互不影响,其中一个容器宕机,其他容器不会受到干扰
- 资源利用最大化,以往每台机器上部署服务有限,资源会浪费,Docker容器可以最大化利用机器资源
- 提升效率,部署应用直接拉取镜像部署即可,不用在基础环境上耗费大量人力物力,目前运维结合k8s使用更是将效率提升到一个新水平
- 自动化发布,通过gitlab CI和发布系统打通直接进行镜像发布,速度非常快,而且也不会出现代码差异化
对于我自己而言,也能明显感觉到Docker这种技术带来的巨大变化,本地搭建新的测试环境也不用在物理机上安装各种各样头疼的环境依赖,直接随用随拉,用完直接删除,目前个人网站上也是用的Docker,帮助屏蔽掉许多重复操作,很好用,个人认为服务端开发人员应该都要去学习和使用Docker,能帮助方便而快速的进行开发工作
Docker那些事儿之初识Docker的更多相关文章
- Docker 学习应用篇之一: 初识Docker
Docker 自从2013年以来就非常的火热,无论是从github上的代码活跃度,还是Redhat在RHE6.5中集成对Docker的支持,等等.第一次接触Docker,还是老师给我们介绍的. 1.初 ...
- Docker+.Net Core 的那些事儿-2.创建Docker镜像
1.从store.docker.com获取.net core镜像 docker pull microsoft/dotnet 2.创建一个.net core项目,并发布 在上篇文章结尾建立的工作目录下, ...
- Docker 第一篇--初识docker
已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...
- 初识Docker和Windows Server容器
概览 伴随着Windows Server 2016 Technical Preview 3 (TP3)版本的发布,微软首次提供了Windows平台下地原生容器.它集成了Docker对Windows S ...
- 初识docker
什么是docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主 ...
- 初识Docker和安装
什么是Docker Docker的构想是要实现“Build,Ship and Run Any App,Anywhere”,即通过对应用的封装(Packaging).分发(Distribution).部 ...
- Docker实战系列一:初识Docker for Windows
windows下安装Docker官网教程Install Docker for Windows Docker配置官网教程Get started with Docker for Windows
- Docker那些事儿之镜像创建
之前已经了解了docker的基本使用方式,简单的上手,也能让大部分人了解到这个技术的使用方法,今天继续说明docker如何构建自己所需要的镜像,开发人员掌握使用基础即可,有兴趣的可以自行深入研究 前言 ...
- 初识 docker
一.安装Docker 我使用的是腾讯云上的centos 7. docker -v 查看是否已经安装有docker 如果有 systemctl stop docker 停止docker服务 查看当前版本 ...
随机推荐
- jenkins最新版下载安装
前提:安装配置 jetty 在线下载jetty# wget http://download.eclipse.org/jetty/8.1.17.v20150415/dist/jetty-distribu ...
- [转帖]商用数据库之死:Oracle 面临困境
商用数据库之死:Oracle 面临困境 投递人 itwriter 发布于 2019-10-20 08:22 评论(1) 有238人阅读 原文链接 [收藏] « » https://news.cnblo ...
- [转帖]Linux下逻辑地址、线性地址、物理地址详细总结
Linux下逻辑地址.线性地址.物理地址详细总结 https://www.cnblogs.com/alantu2018/p/9002441.html 总结的挺好的 现在应该是段页式管理 使用MMU和T ...
- 数据结构:队列queue 函数push() pop size empty front back
队列queue: push() pop() size() empty() front() back() push() 队列中由于是先进先出,push即在队尾插入一个元素,如:可以输出:Hello W ...
- python学习-53 正则表达式
正则表达式 就其本质而言,正则表达式是一种小型的/高度专业化的编程语言,它内嵌在python中,并通过RE模块实现,正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. 1.元字符 - ...
- C#中使用XML存储数据
创建XML文档 首先引用System.Xml命名空间 1.初始化一个实例 XmlDocument xd = new XmlDocument(); 2.创建XML头文件声明 XmlDeclaration ...
- 【leecode】 Course Schedule
class Solution { public: static bool canFinish(int numCourses, vector<pair<int, int>>&am ...
- python正则表达式findall的使用
文章来源与:http://www.cnblogs.com/zjltt/p/6955965.html 正则表达式 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模 ...
- PB学习笔记之随笔
1.根据条件改变字体颜色.if(curdate>=bdate and curdate<edate,rgb(255,0,0),if(sex=1, if(curdate>=mdate, ...
- io.lettuce.core.protocol.ConnectionWatchdog - Reconnecting, last destination was ***
一.问题 redis起来后一直有重连的日志,如下图: 二.分析 参考lettuce-core的github上Issues解答https://github.com/lettuce-io/lettuce- ...