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等技术内容,点击立即学习:

相关文章
|
6月前
|
缓存 Linux 调度
Docker介绍
Docker介绍
193 0
|
3天前
|
存储 运维 安全
docker使用
总之,Docker 的使用为软件开发和部署带来了极大的便利。通过合理地运用 Docker 技术,可以提高开发效率、降低运维成本、增强系统的稳定性和可扩展性。随着技术的不断发展,Docker 将在更多领域发挥重要作用,成为现代软件开发和运维的重要工具之一。
26 6
|
6月前
|
存储 运维 持续交付
|
5月前
|
存储 弹性计算 数据安全/隐私保护
|
5月前
|
Linux Go Docker
Docker介绍(二)
Docker是基于Go语言的开源容器平台,利用Linux内核的namespace、cgroups和UnionFS等技术实现在Linux上运行。它分为社区版(Docker-CE)和企业版(Docker-EE),在CentOS上可安装Docker-CE。Docker的核心技术包括镜像,它是包含应用及环境的可执行文件,用于创建容器。常用镜像操作有搜索、查看、下载、删除、保存备份、导入、重命名和检查。
|
关系型数据库 MySQL Docker
|
运维 Java 程序员
【docker】对docker的理解
【docker】对docker的理解
|
运维 持续交付 开发者
Docker 的前世今生
Docker 的前世今生
59 0
|
存储 Kubernetes 负载均衡
Docker
是一个开源的容器化平台,它可以让开发者和系统管理员轻松地创建、部署和运行应用程序。Docker使用操作系统级别的虚拟化技术,可以将应用程序及其依赖项打包到一个称为Docker容器的单个可移植包中,从而实现应用程序的隔离、移植性和可重复性。
2694 2
|
存储 运维 Kubernetes
为什么会有docker?Docker 是什么?
深入剖析Kubernetes学习笔记
150 0
下一篇
无影云桌面