Docker第一篇:简介和入门安装

Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

可以直接跳过,到安装步骤

Docker的应用场景
  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

DOCKER的组成

虚拟机、容器和镜像

虚拟机:虚拟机在本质上就是在模拟一台真实的计算机设备,同时遵循同样的程序执行方式。虚拟机能够利用“虚拟机管理程序”运行在物理设备之上。反过来,虚拟机管理程序则可运行在主机设备或者“裸机”之上。

主机虚拟机管理程序运行在主机设备的操作系统之上。举例来说,一台运行有OS X的计算机可以在操作系统之上安装虚拟机(例如VirtualBox或者VMware Workstation 8)。该虚拟机并不会直接访问硬件,因此其需要经由主机操作系统(也就是Mac OS X)实现资源获取。

优势:其基本摆脱了对底层硬件的要求。该主机操作系统负责提供硬件驱动程序,而非由虚拟机管理程序自身提供,因此我们认为其具备更理想的“硬件兼容性”。
缺点:这种介于硬件与虚拟机管理程序之间的额外层会带来更多资源消耗,进而降低虚拟机性能表现。

容器:容器通过对“用户空间”的抽象化处理提供操作系统层级的虚拟化机制。

出于各种考量与需求,容器在外观上与虚拟机非常相似。容器会把应用直接运行在宿主机的内核中,这样会比虚拟机有更好的性能。
和虚拟机的共同点:二者皆拥有专有处理空间、能够作为root执行命令、提供专有网络接口与IP地址、允许定制化路由及iptable规则,且可启动文件系统等等。
容器与虚拟机间的最大区别:虚拟机单独使用自己的内核,而各容器系统共享主机系统的内核。默认情况下,容器和宿主机是完全隔离的,最多也只会在配置了的情况下,使用宿主机的hosts文件和端口。
优势:性能优越,因为虚拟机只能通过hypervisor(超级监督者)来间接的使用宿主机资源的虚拟权限。容器可以获得原生的资源使用权限,每个都运行在独立的进程中,不需要额外的内存。

镜像:是轻量的,独立的,可执行的包。镜像属于只读模板,大家可以借此配合Dockerfile中的编写指令集进行容器构建。镜像定义了打包的应用程序以及其相关依赖。这些依赖就好像是其启动时需要运行的进程。

Docker镜像利用Dockerfile实现构建。Dockerfile中的每条指令都会在镜像中添加一个新的“层”,这些层则表现为镜像文件系统中的一个分区——我们可以对其进行添加或者替换。层概念正是Docker轻量化的基础。Docker利用一套Union
File System建立起这套强大的结构:

Docker为基于Linux容器的开源项目,其利用Linux内核中的各项功能——例如命名空间与控制组——以在操作系统之上创建容器,提供对应的底层Linux系统视图,同时也实现了系统隔离:即限制容器的查看与访问范畴。

容器概念并不是什么新鲜事物; 谷歌公司多年来一直在使用自己开发的容器技术。其它Linux容器技术方案还包括Solaris Zones、BSD jails以及LXC,且其都已经拥有多年的发展历史。

概述

从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker容器运行过程中主要提供文件系统视角。例如一个ubuntu:14.04的镜像,提供了一个基本的ubuntu:14.04的发行版,当然此镜像是不包含操作系统Linux内核的。

说到此,可能就需要注意一下,linux内核和ubuntu:14.04Docker镜像的区别了。传统虚拟机安装ubuntu:14.04会包含两部分,第一,某一个Linux内核的发行版本,比如Linux 3.8版本的内核;第二,第一个特定的Ubuntu发行版,这部分内容不包含Linux内核,但是包含Linux之外的软件管理方式,软件驱动,如apt-get软件管理包等。

理解以上内容之后,就可以理解,为什么在一个Linux内核版本为3.8的ubuntu:14.04基础上,可以把Linux内核版本升级到3.18,而ubuntu的版本依然是14.04。最主要的就是:Linux内核版本与ubuntu操作系统发行版之间的区别。

缺点以及安装必备要求

安装docker的先决条件:

  1. 必须是64位CPU架构的计算机,Docker目前不支持32位CPU;
  2. 运行Linux3.8或更高版本内核,CentOS时内核必不小于3.10;
  3. 内核必须支持一种合适的存储驱动,可以是Device Manager、AUFS、vfs、btrfs、以及默认的驱动Device Mapper中的一个;
  4. 内核必须支持并开启cgroup和命名空间namespace功能。

安装常见的情况:
linux安装,window和mac安装可以参考官网的版本安装指导

window最新版本下载[2017-11-9的版本]
https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe

其他容器

容器运行时是执行容器并在节点上管理容器镜像的软件,目前,最广为人知的容器运行时是Docker,但在生态系统中还有其他容器运行时软件,比如Rkt、Containerd和Lxd,Docker实现在于Kubernetes环境中使用。

DOCKER架构及相关概念

从下图可以看出,VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,这使得Docker更加轻量高效,启动容器只需几秒钟之内完成。由于Docker轻量、资源占用少,使得Docker可以轻易的应用到构建标准化的应用中。但Docker目前还不够完善,比如隔离效果不如VM,共享宿主机操作系统的一些基础库等;网络配置功能相对简单,主要以桥接方式为主;查看日志也不够方便灵活。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多;Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。

Docker 架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

运行和交互模式
1、Docker守护进程
Docker守护进程运行在一台主机上,用户不直接和守护进程交互,而是通过Docker客户端交互.
2、Docker客户端
Docker客户端,实际是Docker的二进制程序,是主要的用户与Docker的交互方式。它接收用户指令,并与背后的Docker守护进程交互,如此来回往复.

容器与镜像的关系类似于面向对象编程中的对象与类。

|Docker |面向对象|
|-- -|- -|
|容器| 对象|
|镜像| 类|

这里写图片描述

|概念|说明
|-- -|- -|
|Docker 镜像(Images)|Docker 镜像是用于创建 Docker 容器的模板。
|Docker 容器(Container)|容器是独立运行的一个或一组应用。
|Docker 客户端(Client)|Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。
|Docker 主机(Host)|一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
|Docker 仓库(Registry)|Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
|Docker Machine|Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

基础环境准备

VM12.0创建的虚拟机模拟真实环境
操作系统:centos7.0
安装方式:更新yum镜像库使用最新镜像文件安装

centos7安装步骤

安装前的准备工作

Docker 需要安装在64位系统的CentOS上,而且linux内核至少在3.10版本以上,这个版本的内核在CenOS7上运行. 所以只要安装一个CenOS7 64位的系统就可以了.作为学习,大家只需安装个虚拟机就OK.
可以通过uname -r 来查看linux内核版本

1、用一个用户登录你的机器,这个用户必须拥有sudo或root权限.
2、为了确保你的yum包是最新的,用下面脚本做下更新.

安装yum-config-manager修改yum的资源地址为国内

yum-config-manager: command not found问题
系统默认没有安装这个命令,这个命令在yum-utils 包里,
可以通过命令安装就可以了

yum -y install yum-utils 

强烈建议使用国内源,官方源请在注释中查看。
方式1:执行下面的命令添加ustc的yum 软件源:

$ sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

方式2:一键设置阿里云的资源地址
添加阿里云的Docker仓库:(如果虚拟机不能够连互联网可尝试自己搭建Docker私服,私服搭建详情可自行查看
https://www.cnblogs.com/Eivll0m/p/7089675.html)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum makecache fast
卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine ,使用以下命令卸载旧版本:
$ sudo 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安装

更新 yum 软件源缓存,并安装 docker-ce

$ sudo yum install docker-ce
启动服务DockerCE设置开机自启动
$ sudo systemctl enable docker
$ sudo systemctl start docker

检查配置是不是开机运行

[root@localhost ~]#  chkconfig docker on  
Note: Forwarding request to 'systemctl enable docker.service'.  
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. 

提示要求设置为系统服务并启用

二、问题ransaction check error

1、因为之前已经安装过旧版本的docker,在安装的时候报错如下:
Transaction check error:
file /usr/bin/docker from install of docker-ce-cli-1:19.03.1-3.el7.x86_64 conflicts with file from package docker-common-2:1.13.1-75.git8633870.el7.centos.x86_64
file /usr/bin/dockerd from install of docker-ce-3:19.03.1-3.el7.x86_64 conflicts with file from package docker-common-2:1.13.1-75.git8633870.el7.centos.x86_64
主要是没有按照我上面的步骤 删除掉相应的组件,或者卸载时漏掉了该组件的
2、卸载旧版本的包

$ sudo yum erase docker-common

3、再次安装docker

$sudo  yum install docker-ce
配置镜像加速器

Windows和mac以及1.8之前的版本修改和这里不同请参看docker使用文档

对于使用 systemd 的系统docker1.8之后的版本修改,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

mkdir -p   /etc/docker

vi   /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

##加速器地址:
		腾讯:https://mirror.ccs.tencentyun.com
		中国科技大学:https://docker.mirrors.ustc.edu.cn/
		阿里的在在你注册后会给你生成一个,根据提示操作就可以

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

之后重新启动服务

 service docker restart

注意:添加以后在启动,若果事先已经启动了,添加以后需要重启docker才能生效

验证加速器是否生效
运行

docker info

检查 Registry Mirrors:是否为你自己配置的加速器地址

测试run hello-world

安装完成docker后运行 hello-word,如下提示请不要终止命令,它会自动下载该镜像并安装完成,然后输出hello word

[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world
9a0669468bf7: Pull complete
Digest: sha256:0e06ef5e1945a718b02a8c319e15bae44f47039005530bc617a5d071190ed3fc
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.


建立docker 用户组

默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。
为方便后面的测试我依然使用root权限。

Docker 卸载

  1. 列出你已安装的Docker package.
[root@localhost ~]# yum list installed | grep docker
docker-engine.x86_64                 17.05.0.ce-1.el7.centos         @dockerrepo
docker-engine-selinux.noarch         17.05.0.ce-1.el7.centos         @dockerrepo

  1. 移除这个package
$ sudo yum -y remove docker-engine.x86_64  

这个命令没有移除images、containers、volumes或者你主机上用户创建的配置文件.


[root@localhost ~]# ll /var/lib/docker/
total 4
drwx------. 5 root root  222 Nov  9 21:18 containers
drwx------. 3 root root   21 Nov  9 20:00 image
drwxr-x---. 3 root root   19 Nov  9 20:00 network
drwx------. 9 root root 4096 Nov  9 21:18 overlay
drwx------. 4 root root   32 Nov  9 20:00 plugins
drwx------. 2 root root    6 Nov  9 20:00 swarm
drwx------. 2 root root    6 Nov  9 21:18 tmp
drwx------. 2 root root    6 Nov  9 20:01 tmp-old
drwx------. 2 root root    6 Nov  9 20:00 trust
drwx------. 2 root root   25 Nov  9 20:00 volumes
 
  1. 要删除所有的images、containers、volumes,运行如下命令.
$ rm -rf /var/lib/docker  
  1. 查找和删除任何用户创建的配置文件.

参考资料

centos安装docke
Unable to find image ‘hello-world:latest’ locally如何处理

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Docker入门到实践第三版pdf》是一本非常适合初学者的书籍,通过系统全面的介绍和实践指导,让读者能够快速了解和掌握Docker技术。 本书首先介绍了Docker的基础概念和原理,包括Docker镜像、Docker容器Dockerfile等。通过阅读这些内容,读者可以了解Docker在开发和运维中的优势和应用场景。 随后,本书详细讲解了Docker安装和使用,包括Docker的常用命令、Docker Compose的使用、Docker Swarm和Kubernetes等容器编排工具的介绍。在实践方面,本书提供了许多具体的示例和案例,包括使用Docker进行Web开发、Java开发、Python开发、数据处理等多个方面的应用和实践。 此外,本书还介绍了Docker与云计算、DevOps等技术的结合,详细讲述了Docker如何在现代化开发中发挥作用。 总的来说,本书非常适合想要了解和入门Docker技术的读者,内容详实、易懂、实用性强。无论是开发人员还是运维人员,都可以通过本书快速掌握Docker的基础知识和实践技能。 ### 回答2: 《Docker入门到实践第三版》是一本介绍Docker技术的实用指南。它包括了Docker的基本概念、安装和使用方法、构建Docker镜像以及如何使用Docker容器进行开发和部署的详细内容。该书还介绍了Docker的网络和存储、Docker Compose以及Swarm等高级技术,帮助读者深入了解和掌握Docker的完整技术体系。 该书的第一章介绍了Docker的基础概念和优势,包括Docker的发展历程、Docker与虚拟机的比较、Docker的架构和组件等内容。第二章介绍了Docker安装和配置方法,包括在不同操作系统上的安装方式,以及对Docker引擎的配置和优化。第三章介绍了Docker的基本使用方法,包括如何创建、运行、停止和删除Docker容器,以及如何使用Docker镜像和Dockerfile。 该书的后续章节介绍了如何使用Docker Compose进行多容器应用的部署,如何使用Docker Swarm进行分布式应用的部署和管理,以及如何使用Docker的网络和存储功能进行应用开发和调试。此外,书中还介绍了容器的安全性和性能优化等方面的内容,帮助读者深入理解和掌握Docker技术的细节和高级功能。 总的来说,《Docker入门到实践第三版》是一本非常实用的Docker技术指南,适合初学者和有一定Docker经验的开发者阅读。该书内容详细、实用性强,可以帮助读者快速上手并深入掌握Docker的应用方法和技术细节。 ### 回答3: Docker入门到实践第三版pdf这本书主要介绍了Docker容器技术的基本原理和实践应用。 Docker容器技术是一种轻量级的虚拟化技术。本书首先介绍了Docker的基础知识,比如Docker镜像、Docker容器Docker仓库等。接着详细讲解了Docker安装和配置,包括Linux和Windows平台的安装和配置步骤。 然后本书通过实际案例演示了Docker容器的使用,比如如何构建一个基于Docker的Web应用和数据库应用。此外还介绍了Docker Swarm和Kubernetes等容器编排工具的使用方法。 最后本书讲解了Docker的高级特性,比如DockerfileDocker Compose和Docker网络等。通过本书的介绍,读者可以了解到Docker容器技术的基本概念和实践,使读者能够快速上手Docker容器技术,并应用到实际项目中,提高工作效率。 总之,本书以简明易读、通俗易懂的方式,全面介绍了Docker容器技术的基本概念、实践方法和应用实例,是学习和掌握Docker容器技术的一本好书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值