当前位置:   article > 正文

Docker基础入门与安装实践_docker官网

docker官网

【1】Docker是什么

Docker官网:http://www.docker.com
Docker中文网站:https://www.docker-cn.com/
Docker Hub官网: https://hub.docker.com/

Docker 是一个开源的应用容器引擎,基于Go 语言并遵从Apache2.0协议开源。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。
在这里插入图片描述
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。

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

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

如下Docker架构图示:
在这里插入图片描述

Docker是如何工作的?

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

在这里插入图片描述

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

① 传统虚拟技术

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

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

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

② docker的优点

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

Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
在这里插入图片描述

Docker 和传统虚拟化方式的不同之处:

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

为什么docker比VM快?

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

(2)docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。避免引寻、加载操作系统内核比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了这个过程,因此新建一个docker容器只需要几秒钟。
在这里插入图片描述


③ Docker的优势

更快速的应用交付和部署

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

更便捷的升级和扩缩容

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

更简单的系统运维

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

更高效的计算资源利用

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

【3】Docker的核心概念

Docker镜像(Images)

Docker 镜像是用于创建Docker 容器的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
在这里插入图片描述

Docker容器(Container)

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

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

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


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

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

Docker仓库(Registry)

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

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等

这里写图片描述

使用步骤一般如下:

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

Docker支持以下的CentOS版本:

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

【4】Centos6.8下安装Docker

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

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

官方参考手册:https://docs.docker.com/install/linux/docker-ce/centos/
官方中文参考手册:https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/#prerequisites

① 前提安装

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

uname -r
  • 1

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

yum update 
  • 1

Docker 要求在 CentOS 系统上运行时,系统的内核版本需高于或等于 3.10。具体来说:

  • Docker CE(社区版)支持 64 位版本的 CentOS 7 及以上版本,并且内核版本不低于 3.10。CentOS 7 满足这一要求。
  • 对于 CentOS 6.5 或更高版本,虽然理论上 Docker 可以运行在这些系统上,但前提是系统必须是64位的,并且内核版本至少为 2.6.32-431 或更高。不过,考虑到CentOS 6已经到达维护期结束,使用较新版本的CentOS更受推荐。

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

yum install -y epel-release
  • 1

安装gcc gcc-c++

yum -y install gcc gcc-c++
  • 1

② 安装docker

命令如下:

yum install -y docker-io
  • 1

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

 yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm
  • 1

如果提示无法打开,可以手动下载安装:
在这里插入图片描述
下载后执行如下命令进行安装:

rpm -ivh docker-engine-1.7.1-1.el6.x86_64.rpm
  • 1

安装后的配置文件:

vim   /etc/sysconfig/docker
  • 1

在这里插入图片描述

③ 启动/停止docker

# 启动
service docker start

#停止
service docker stop

#设置服务开机自启
chkconfig docker on
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

④ 进行验证

[root@localhost softinstall]# docker version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d
OS/Arch (client): linux/amd64
Get http:///var/run/docker.sock/v1.19/version: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

前面看着正常,最后有个问题Get http:///var/run/docker.sock/v1.19/version: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?,是不是很慌?

看到别人google一下发现一篇文章的解决方案:http://stackoverflow.com/questions/27216473/docker-1-3-fails-to-start-on-rhel6-5

You may have to enable the public_ol6_latest repo in order to get this package.

sudo yum-config-manager --enable public_ol6_latest
  • 1

And then install the package:

sudo yum install device-mapper-event-libs
  • 1

大胆测试了一下,完美解决:

[root@localhost softinstall]# service docker stop
Stopping docker:                                           [  OK  ]
[root@localhost softinstall]# service docker start
Starting docker:                                           [  OK  ]
[root@localhost softinstall]# service docker status
docker (pid  17341) is running...
[root@localhost softinstall]# service docker restart
Stopping docker:                                           [  OK  ]
Starting docker:                                           [  OK  ]

[root@localhost softinstall]# docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-253:0-2752761-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 305.7 MB
 Data Space Total: 107.4 GB
 Data Space Available: 50.25 GB
 Metadata Space Used: 733.2 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.117-RHEL6 (2016-12-13)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.32-431.el6.x86_64
Operating System: <unknown>
CPUs: 8
Total Memory: 15.58 GiB
Name: localhost.localdomain
ID: LCNF:4BPB:VNZT:NBZE:YUZN:NXMA:K72A:YWOA:264I:LMZC:BUTE:E6NP

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

【5】Centos7下安装docker

① 基础环境准备

安装gcc gcc-c++

yum -y install gcc gcc-c++
  • 1

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

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

卸载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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2
  • 1

设置stable镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 1

更新yum软件包索引

yum makecache fast
  • 1

② 安装DOCKER CE

命令如下:

yum -y install docker-ce
#或如下
yum -y  install docker-ce docker-ce-cli containerd.io
  • 1
  • 2
  • 3

③ 将docker设置为开机启动

命令如下:

systemctl enable docker
  • 1

④ docker的启动与停止

命令如下:

systemctl start docker
systemct stop docker
  • 1
  • 2

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

⑤查看运行状态

命令如下:

systemctl status docker
  • 1

图示如下:
这里写图片描述

⑥ docker version验证

docker version
  • 1

⑦ docker run hello-world进行测试

命令如下:

docker run hello-world
  • 1

在这里插入图片描述
docker run做了什么?
在这里插入图片描述

⑧ 卸载

systemctl stop docker
yum -y remove docker-ce
rm -rf /var/lib/docker
  • 1
  • 2
  • 3

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

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

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

按照以下步骤操作。

  • 查询已安装的docker
   yum list installed |grep docker
  • 1
  • 卸载
  yum -y remove docker.x86_64
  • 1
  • 重装
#centos6.8下是docker-io
  yum install -y docker-io
  • 1
  • 2
  • 重新启动
 service docker start
  • 1
  • 查看新docker版本
[root@localhost mydocker]# docker version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d
OS/Arch (server): linux/amd64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

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

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

在这里插入图片描述
Centos6.8下docker配置文件为:/etc/sysconfig/docker

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

other_args="--registry-mirror=https://你自己的账号加速信息.mirror.aliyuncs.com"
  • 1

在这里插入图片描述
重新启动docker服务

service docker restart
  • 1

可以使用ps命令检查下:

[root@localhost ~]# ps -ef|grep docker
root      28108      1  0 12:44 pts/0    00:00:00 /usr/bin/docker -d --registry-mirror=https://XXX.mirror.aliyuncs.com
root      28163  26988  0 12:45 pts/0    00:00:00 grep docker
  • 1
  • 2
  • 3

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

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

① 修改配置文件

vim  /etc/docker/daemon.json
  • 1

② 添加配置

{
  "registry-mirrors": ["https://05hzrxh8.mirror.aliyuncs.com"]
}
  • 1
  • 2
  • 3

③ 重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/964341
推荐阅读
相关标签
  

闽ICP备14008679号