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

相关文章
|
运维 NoSQL Redis
Docker-基本了解
Docker-基本了解
80 3
|
存储 监控 开发者
Docker详解,你知道的和不知道的都在这儿
@[TOC](目录) Docker 是一个开源的容器化平台,允许开发者将应用程序和所有其依赖项打包成一个轻量级、可移植的容器,以便在任何地方运行。Docker 采用了 Linux Namespace 和 cgroups 等技术,实现了高度的资源隔离和安全保障,使得容器化应用得以快速、高效地部署和运行。 本文将详细介绍 Docker 的架构、原理和应用,包括以下内容: 1. Docker 的架构和原理 2. Docker 的安装和使用 3. Docker 的基本命令和操作 4. Docker 的容器管理 5. Docker 的网络管理 6. Docker 的存储管理 7.
155 0
|
2月前
|
存储 运维 安全
docker使用
总之,Docker 的使用为软件开发和部署带来了极大的便利。通过合理地运用 Docker 技术,可以提高开发效率、降低运维成本、增强系统的稳定性和可扩展性。随着技术的不断发展,Docker 将在更多领域发挥重要作用,成为现代软件开发和运维的重要工具之一。
54 6
|
2月前
|
存储 监控 安全
docker可能存在的问题有哪些?
【10月更文挑战第28天】docker可能存在的问题有哪些?
144 0
|
4月前
|
安全 Linux 虚拟化
Docker到底是什么?为什么它这么火!
如果你是数据中心或云计算IT圈子的人,这一年多来应该一直在听到普通的容器、尤其是Docker,关于它们的新闻从未间断过。
57 9
|
7月前
|
存储 弹性计算 数据安全/隐私保护
|
8月前
|
Linux Go 开发者
Docker(一):认识Docker
Docker(一):认识Docker
|
8月前
|
运维 监控 开发者
什么是docker
Docker
60 0
|
Java Linux 虚拟化