Docker系列 01

简介: Docker系列 01

前言

学完这篇文章,你会知道Docker是什么?解决了什么问题以及如何安装Docker。在后续的系列文章中,我们会陆续介绍Docker的常用命令、镜像原理、Dockerfile以及网络管理等,让你对Docker有较为系统的认知,持续关注吧。

从环境配置说起

环境配置是软件开发的一大难题。开发、测试及运维人员需要相同的代码运行环境,如此一来就需要多次搭建环境,想想就觉得麻烦,实际上,在不了解docker等容器技术以前,还真就是这么干的,手动滑稽。开发者常常会说:“它在我的机器可以跑了”(It works on my machine),言外之意就是,在其他机器上可能会有问题。

在容器技术出现以前,虚拟机技术是一种将程序连同操作系统打包的解决方案。可以先搭好一套虚拟机环境,然后给测试和运维clone出来使用,但是这种方案缺点也很明显:

(1)资源占用多:相较于一个单纯的程序,操作系统是一个很臃肿的程序。我们知道操作系统运行起来是需要占用很多资源的,大家对此肯定深有体会,刚装好的系统还什么都还没装,内存几个G没了,磁盘几十个G没了;

(2)启动慢:虚拟机启动一般要等几分钟,应用程序才能真正运行。

Linux 容器

由于虚拟机存在以上缺点,Linux发展出了另一种虚拟化技术,Linux container(linux容器,简称 LXC)。LXC是一种轻量级的容器虚拟化技术,最大效率的隔离了进程和资源。它通过cgroup 和 namespace等限制,隔离进程组所使用的物理资源,如CPU、内存等。 实际上LXC在7、8年前就已经加入到linux内核了。然而直到2013年docker出世的时候才火起来,换句话说,如果没有云计算,敏捷开发,高频度的弹性伸缩需求,没有IT行业这么多年长足的发展,可能也就没有docker了。

一、什么是Docker

Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。 GitHub地址:https://github.com/moby/moby

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

简单来说就是:docker解决了运行环境不一致所带来的问题

二、Docker 的用途

  1. 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
  2. 动态扩缩容。因为 Docker 容器的开关很方便
  3. 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

Docker局限性

Docker用于应用程序时是最有用的,但并不包含数据。一个容器的镜像通常都很小,不用和存储大量数据,存储可以通过外部挂载等方式使用,比如:NFS、ipsan、MFS等 ,或者docker命令 ,-v映射磁盘分区。这个我们后面的文章会详细讲解。

三、Docker安装

环境:CentOS Linux release 7.9.2009 (Core)

3.1 依赖安装
yum install -y yum-utils device-mapper-persistent-data lvm2
3.2 配置国内docker-ce的yum源(这里用的是阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
ls /etc/yum.repos.d/

配置完,执行 ls /etc/yum.repos.d/ 如果看到docker-ce.repo,说明配置成功。

3.3 安装
yum -y install docker-ce doker-ce-cli containerd.io
3.4 修改/etc/sysctl.conf 配置
vim /etc/sysctl.conf   #插入或修改以下内容
net.ipv4.ip_forward = 1
sysctl -p   #生效
cat /proc/sys/net/ipv4/ip_forward  #查看结果,为1开启成功。
3.5 启动服务并设置开机自启
systemctl start docker ## 启动docker
systemctl enable docker  ## 开机自启
3.6 关闭docker
systemctl stop docker ## 停止docker
systemctl disable docker  ## 关闭开机自启
3.7 验证
docker version  # 查看docker版本信息
docker info # 查看docker详细信息


推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习:

相关文章
|
4月前
|
监控 Linux 持续交付
认识Docker
认识Docker
20 0
|
8月前
|
关系型数据库 MySQL Docker
|
8月前
|
关系型数据库 MySQL 应用服务中间件
Docker
Docker 是一个开源的应用容器引擎,基于 Go语言并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
194 0
|
8月前
|
存储 关系型数据库 Linux
|
8月前
|
NoSQL MongoDB Nacos
Docker的运用
Docker的运用
40 0
|
10月前
|
JavaScript 应用服务中间件 API
Docker
Docker 是一种开源的容器化平台,可以让开发者在容器中快速构建、打包、发布和运行应用程序,从而实现应用程序的快速交付和部署。
338 1
|
运维 Linux Go
首先我们要知道 Docker 是什么?能干什么?
首先我们要知道 Docker 是什么?能干什么?
2188 1
|
运维 安全 Ubuntu
[ docker ] 一篇文章让你掌握 docker
相信大家对docker都不陌生,这篇文章来分享一下个人对docker的理解。 在此之前,我翻阅了很多的资料,也看了不少的文章。 总结来说,就是每个人都会有自己独特的见解,有的是为了跟进先进主流技术,有的由于面试需要,有的由于项目要用等等的。 我总结的也不一定就是最准确的,只能能对大家更好的去理解docker有一些帮助,可以对docker有一个自己的认知。
272 0
[ docker ] 一篇文章让你掌握 docker
|
关系型数据库 MySQL 应用服务中间件
docker
-
216 0