Docker学习1.0-初步了解

初步了解

1. 什么是Docker

大型项目组件较多,运行环境也较为复杂,部署时会有以下问题:

 - 每个组件,依赖关系复杂,容易出现兼容性问题
 - 开发、测试、生产环境差异,如操作系统不一致

1.1 解决依赖兼容问题

 - 将  应用  的Lib(函数库)、Deps(依赖)、配置与应用一起打包,形成可移植的镜像
 - 将每个应用放到一个隔离容器去运行(沙箱机制),避免互相干扰

沙箱机制:创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。其为一个独立的虚拟环境,可以用来测试不受信任的应用程序或上网行为。
沙箱就是一个限制应用程序对系统资源的访问的运行环境。
内部程序的执行不影响外部程序的运行

局限性:只适用于同一个操作系统

操作系统结构
在这里插入图片描述
不同的程序应用(操作系统),封装的函数库可能不同,如果更换操作系统后,再执行函数,可能会报错

1.2 解决环境差异问题

 - 将 用户程序 与所需要的 系统函数库 一起打包
 - Docker运行到不同的操作系统时,直接 基于打包的函数库 ,借助于操作系统的Linux内核运行

1.3 总结

Docker是一个快速交付应用、运行应用的技术:
1、可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
2、运行时利用沙箱机制形成隔离容器,各个应用互补干扰
3、启动、移除都可以通过一行命令完成,方便快捷

2. Docker和虚拟机的区别

虚拟机是在操作系统中模拟硬件设备,然后运行另一个操作系统。
利用Hypervisor技术,模拟计算机的各种硬件,在此基础上安装各种操作系统,从而安装各种应用。
两者差别如下

|特性    |     Docker             |                     虚拟机                   |
|性能    |直接调用操作系统内核(线程)|先调用虚拟的操作系统执行,后调用真实的操作系统执行|
|硬盘占用|    一般为MB             |                    一般为GB                  |
|启动    |      秒级              |                       分钟级                 |

2.1 总结

Docker和虚拟机的差异:
1、Docker是一个系统进程;虚拟机是在操作系统中的操作系统
2、Docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

3. Docker架构

3.1 镜像和容器

镜像(Image):Docker将应用程序及其所需依赖、函数库、环境、配置等文件打包在一起,称为镜像。(多个文件)
容器(Container):镜像中的应用程序运行后形成的进程就是容器,Docker会给容器做隔离,对外不可见。
容器拥有独立资源、文件系统等,容器可以读镜像文件,复制一份到自己的容器内部,容器产生的数据也写在容器自己的文件系统内。镜像只读

3.2 Docker和DockerHub

DockerHub:是Docker镜像的托管平台。又称Docker Registry。

3.3 Docker架构

Docker是一个CS架构
服务端(server):Docker守护进程docker daemon,负责处理Docker指令,管理镜像、容器等
客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令
在这里插入图片描述

3.4 总结

 - 镜像:将应用程序及其依赖、环境、配置打包在一起
 - 容器:镜像运行起来就是容器,一个镜像可以运行 多个容器
 - Docker结构:服务端(接受命令或远程请求,操作镜像或容器)
			  客户端(发送命令或请求到服务端)
 - DockerHub:一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry

4. CentOs安装Docker

4.1 卸载

yum remove docker \
	docker-client \
	docker-client-latest \
	docker-common \
	docker-latest \
	docker-latest-logrotate \
	docker-logrotate \
	docker-selinux \
	docker-engine-selinux \
	docker-engine \
	docker-ce

4.2 安装Docker

# 安装工具
yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
#更新镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast
# 安装docker -ce 为社区免费版
yum install -y docker-ce

4.3 配置镜像

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://n0dwemtq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

4.4 启动Docker

启动Docker应用需要用到各种端口,为了方便使用,此处关闭防火墙

# 关闭
systemctl stop firewalld
# 禁止自启
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld
# 查看是否安装成功
docker -v
# 启动
systemctl start docker
# 查看状态
systemctl status docker
# 停止
systemctl stop docker
# 重启
systemctl restart docker

最后

以上是学习 黑马程序员《微服务技术全栈教程》的学习笔记


版权声明:本文为m0_60942412原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。