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服务 查看当前版本 ...
随机推荐
- pod 常用指令
//只安装新增的库,已经安装的库不更新 pod install --verbose --no-repo-update //只更新指定库名的第三个库,其他库不更新 pod update 库名 --ver ...
- Error:(18, 51) java: -source 1.5 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
问题:主要是因为jdk版本不一样 解决: 方法一:List<String> list=new ArrayList<Stirng>(); 方法二:重新安装jdk8的版本(安装和配 ...
- gluster设置日志级别
glusterd --log-level WARNING #将日志级别设定为warning gluster --log-level=ERROR volume status #查看日志级别的状态 glu ...
- mysql 事物控制语言
事务控制语言(DTL) 什么是事务 通常,在此之前,我们说,一条语句使用一个分号(;)来结束,并得到执行. 那么我们说,这个“一次性执行”的过程,可以称为“一个事务” ...
- poj3348(求凸包面积)
题目链接:https://vjudge.net/problem/POJ-3348 题意:转换题意后即是求凸包的面积. 思路: 套模板,求凸包面积即转换为多个三角形面积之和,用叉积求,然后除2,因为本题 ...
- java jri null
java通过jri调用r文件,r文件必须和当前类在同一目录下,然后才能re.eval("source(fpath)")执行脚本;其中fpath为通过re.assign设置的文件全路 ...
- 请求部署在 IIS7.5 上的 REST 服务的 Put/Post/Delete 操作发生 HTTP Error 405.0 - Method Not Allowed 错误之解决
背景 请求部署在 IIS7.5 上的 REST 服务的 Put/POST/DELETE 操作发生 HTTP Error 405.0 - Method Not Allowed 错误. Issue 解决 ...
- Comet OJ Contest 4
A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...
- ASCII,UTF-8,Unicode字符串相互转换
#include<string> #include<windows.h> #include<vector> using namespace std; //utf8 ...
- OOM与StackOverFlow发生的原因及解决办法【待完成】
1,Out Of Memery 内存耗尽 1,1 产生原因 1.1.1 内存用完[堆内存] package com.cnblogs.mufasa; import org.junit.Test; imp ...