Docker——Docker基础+Docker安装
Posted Pakho`
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker——Docker基础+Docker安装相关的知识,希望对你有一定的参考价值。
Docker基础+Docker安装
Docker概述
- Docker 是一个开源的应用容器引擎,基于
Go 语言
并遵从 Apache2.0 协议开源 - Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现
虚拟化
- 容器是完全使用
沙箱机制
,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低 - Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了
- 一个完整的Docker有以下几个部分组成:
- DockerClient客户端
- Docker Daemon守护进程
- Docker Image镜像
- DockerContainer容器
- Docker基于容器技术的轻量级虚拟化解决方案
- “Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人
Docker的基本组成
- 镜像(Image)
- docker镜像就好比是一个模板,可以通过这个模板来创建容器服务
- 容器(Container)
- Docker利用容器技术,独立运行一个或多个应用,通过镜像来创建的
- 启动,停止,删除,基本命令
- 目前可以把容器理解为简易的Linux系统
- 仓库(repository)
- 存放镜像的地方
- 仓库分为公有仓库和私有仓库
使用Docker的优势
- 更高效的利用系统资源
- docker对系统资源的利用率更高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机往往可以运行更多数量的应用
- 更快速的启动时间
- 传统的虚拟机技术启动应用服务往往需要数分钟,而docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到
秒级
,甚至毫秒级
的启动时间,大大的节约了开发测试,部署
的时间
- 传统的虚拟机技术启动应用服务往往需要数分钟,而docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到
- 一致的运行环境
- 对开发和运维人员来说,最希望就是一次创建和部署,可以在任意的地方运行
- (定制应用镜像来实现集成、持续支付、部署。开发人员可以通过dockerfile来进行镜像构建,并结合持续集成系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署)
- 而且使用dockerfile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像
- 更轻松的迁移
- 由于docker确保了执行环境的一致性,使得应用的迁移更加的容易
- docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云、甚至是笔记本、其运行结果是一致的
- 因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
- 更轻松的维护和拓展
- docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得十分简单
既可以直接在生产环境使用,又可以作为基础进一步定制
,大大的降低了应用服务的镜像制作成本
- Docker优势摘自Docker的6大优势
安装Docker
#环境查看
[root@docker /]# uname -r #系统内核3.10以上
3.10.0-862.el7.x86_64
[root@docker /]# cat /etc/os-release
- 卸载旧的版本
[root@docker /]# yum remove docker \\
docker-client \\
docker-client-latest \\
docker-common \\
docker-latest \\
docker-latest-logrotate \\
docker-logrotate \\
docker-engine
- 通过仓库安装
#安装基本的依赖包
[root@docker /]# yum install -y yum-utils
- 设置镜像仓库
默认是国外的,需要设置国内阿里云镜像
[root@docker /]# yum-config-manager \\
--add-repo \\
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker前更新yum软件包索引
[root@docker /]# yum makecache fast
- 安装docker
- 基于ce:社区版安装,同时
官方推荐社区版
- 基于ce:社区版安装,同时
[root@docker /]# yum -y install docker-ce docker-ce-cli containerd.io
- 启动docker
[root@docker /]# systemctl start docker
#查看版本
[root@docker /]# docker version
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:58:10 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: b0f5bc3
Built: Wed Jun 2 11:56:35 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.6
GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285d
runc:
Version: 1.0.0-rc95
GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
docker-init:
Version: 0.19.0
GitCommit: de40ad0
#测试hello world
[root@docker /]# docker run hello-world
#寻找本地镜像 没有找到helloword的镜像
Unable to find image 'hello-world:latest' locally
#从library拉取镜像
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:9f6ad537c5132bcce57f7a0a20e317228d382c3cd61edae14650eec68b2b345c
Status: Downloaded newer image for hello-world:latest从library拉取镜像
#拉取完成后显示Hello from Docker
Hello from Docker!
#查看当前系统内的镜像
[root@docker /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 3 months ago 13.3kB
- 了解,卸载docker
- docker默认工作路径
/var/lib/docker
- docker默认工作路径
yum remove docker-ce docker-ce-cli containerd.io #卸载依赖
rm -rf /var/lib/docker #删除资源
rm -rf /var/lib/containerd #删除容器
阿里云镜像加速
[root@docker /]# mkdir -p /etc/docker
[root@docker /]# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://k68iw3ol.mirror.aliyuncs.com"]
}
EOF
{
"registry-mirrors": ["https://k68iw3ol.mirror.aliyuncs.com"]
}
[root@docker /]# systemctl daemon-reload
[root@docker /]# systemctl restart docker
回顾hello world流程
- docker run hello-world 回车启动
- docker会在本地寻找是否存在镜像
- 如果存在则立即运行
- 如果不存在,则前往仓库下载
- 如果仓库不存在镜像返回错误
- 如果存在,则理解下载,然后立即运行
分析Docker底层原理
Docker是怎么工作的?
- Docker是一个Client-Server的结构的系统,Docker的守护进程运行在主机上(也可称为宿主机) 通过Socket从客户端访问
- Docker Server 接受到来自Docker-Client的命令,就会执行这个命令!
Docker为什么比虚拟机快?
- docker有着比虚拟机更少的抽象层
- docker利用的是宿主机的内核,vm需要是Guest OS。
- 所以说,新建一个容器的时候,docker不需要想虚拟机一样重新加载一个操作系统内核,避免引导性的操作,
- 虚拟机是加载Guest OS,分钟级别的,
- 而docker是利用当前宿主机的操作系统,省略了这个复杂的过程,秒级的!
以上是关于Docker——Docker基础+Docker安装的主要内容,如果未能解决你的问题,请参考以下文章