Docker基础入门与安装实践

网友投稿 252 2022-10-19

Docker基础入门与安装实践

【1】Docker是什么

Docker官网:​​Docker中文网站:​​Docker Hub官网: ​​是一个开源的应用容器引擎,基于Go 语言并遵从Apache2.0协议开源。

容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

Docker支持将软件编译成一个镜像,​​然后在镜像中各种软件做好配置,将镜像发布出去​​​,​​其他使用者可以直接使用这个镜像​​。运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操作系统,安装好后什么都有了。

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境,就是我们前面说到的集装箱。

【2】Docker与传统虚拟技术对比

① 传统虚拟技术

虚拟机(virtual machine)就是带环境安装的一种解决方案。

它可以在一种操作系统里面运行另一种操作系统,比如在Windows 系统里面运行Linux 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。

虚拟机的缺点:1 资源占用多 2 冗余步骤多 3 启动慢

② docker

由于前面虚拟机存在这些缺点,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,​​容器内没有自己的内核,而且也没有进行硬件虚拟​​。因此容器要比传统虚拟机更为轻便。每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

为什么docker比VM快?

(1)docker有着比虚拟机更少的抽象层。由亍docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。

③ Docker的优势

更快速的应用交付和部署

传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。

更便捷的升级和扩缩容

随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。

更简单的系统运维

应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。

更高效的计算资源利用

Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。

【3】Docker的核心概念

Docker镜像(Images)

Docker容器(Container)

​​容器是独立运行的一个或一组应用。容器是用镜像创建的运行实例​​。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

docker客户端(Client):客户端通过命令行或者其他工具使用​​Docker API​​(与Docker 的守护进程通信。

docker主机(Host):一个物理或者虚拟的机器用于执行Docker 守护进程和容器。

Docker仓库(Registry)

仓库(Repository)是集中存放镜像文件的场所。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(、网易云 等

使用步骤一般如下:

1)、安装Docker2)、去Docker仓库找到这个软件对应的镜像;3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;4)、对容器的启动停止就是对软件的启动停止;

Docker支持以下的CentOS版本:

CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本

【4】Centos6.8下安装Docker

目前,CentOS 仅发行版本中的内核支持 Docker。

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

官方参考手册:官方中文参考手册:前提安装

Docker 要求CentOS 系统的内核版本高于3.10,可以使用如下命令检测:

uname -v

如果版本低于3.10,可以使用如下命令更新:

yum update

(​​Centos6.8下需要这一步​​)Docker使用EPEL发布,RHEL系的OS首先要确保已经持有EPEL仓库,否则先检查OS的版本,然后安装相应的EPEL包

yum install -y epel-release

安装gcc gcc-c++

yum -y install gcc gcc-c++

② 安装docker

命令如下:

yum install -y docker-io

可能会遇到:​​No package docker-io available.​​错误,那么不妨直接试试如下命令:

yum install 启动docker

service docker start

【5】Centos7下安装docker

安装gcc gcc-c++

yum -y install gcc gcc-c++

卸载旧版本(如果没有则不需要)

yum -y remove docker docker-common docker-selinux docker-engine

卸载2018.3的官网版本

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

设置stable镜像仓库

yum-config-manager --add-repo makecache fast

② 安装DOCKER CE

命令如下:

yum -y install docker-ce#或如下yum -y install docker-ce docker-ce-cli containerd.io

③ 将docker设置为开机启动

命令如下:

systemctl enable docker

④ docker的启动与停止

命令如下:

systemctl start dockersystemct stop docker

与Centos7以前版本不同的是,这里使用 ​​systemctl+动作名+服务名​​​ 进行操作。而Centos6(及以前)则使用 ​​service+服务名+动作名​​ 进行操作。

⑤查看运行状态 命令如下:

systemctl status docker

docker version

⑦ docker run hello-world进行测试

命令如下:

docker run hello-world

⑧ 卸载

systemctl stop dockeryum -y remove docker-cerm -rf /var/lib/docker

【5】Segmentation Fault or Critical Error encountered. Dumping core and aborting.

如果遇到这个问题说明装错了。

Segmentation Fault or Critical Error encountered. Dumping core and aborting.Aborted (core dumped)

按照以下步骤操作。

查询已安装的docker

yum list installed |grep docker

卸载

yum -y remove docker.x86_64

重装

#centos6.8下是docker-io yum install -y docker-io

重新启动

service docker start

查看新docker版本

[root@localhost mydocker]# docker versionClient version: 1.7.1Client API version: 1.19Go version (client): go1.4.2Git commit (client): 786b29dOS/Arch (client): linux/amd64Server version: 1.7.1Server API version: 1.19Go version (server): go1.4.2Git commit (server): 786b29dOS/Arch (server): linux/amd64

【6】Centos6.8下配置Docker镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决。

去​​阿里云官网​​-登录账号-控制台-产品与服务-容器镜像服务-镜像加速器获取你的加速器地址。

修改该配置文件将获得的自己账户下的阿里云加速地址配置进去,如下所示

other_args="--registry-mirror=docker restart

可以使用ps命令检查下:

[root@localhost ~]# ps -ef|grep dockerroot 28108 1 0 12:44 pts/0 00:00:00 /usr/bin/docker -d --registry-mirror= 28163 26988 0 12:45 pts/0 00:00:00 grep docker

【7】Centos7下配置阿里云加速

Centos7下配置文件为​​/etc/docker/daemon.json​​。

① 修改配置文件

vim /etc/docker/daemon.json

② 添加配置

{ "registry-mirrors": ["重启服务

sudo systemctl daemon-reloadsudo systemctl restart docker

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:剑指Offer之Java算法习题精讲数组与二叉树
下一篇:DockerFile使用与自定义镜像详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~