docker
概念
docker,go语言开发,使用阿帕奇2.0开源
简单理解即为,在docker中开发应用及依赖包,再将其打包为轻量级、可移植容器中,再进行发布
容器化技术不是模拟的一个完整的操作系统
容器是没有自己内核的,也没有虚拟的硬件
容器使用沙箱机制,主要优势:开销极低
沙箱机制:将应用程序放置在一个单独的环境中运行,每个运行环境都是独立的,不会对现有系统产生影响
docker在17.03版本后 分为CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
DevOps(开发、运维)
–应用更快速的交付和部署
docker(打包镜像 发布测试 一键运行)
–更便捷的升级和扩容
将一个项目打包为一个镜像、,扩展 服务器A | 直接在B中运行即可
–更简单的系统运维
在容器化/在使用docker后 开发中,测试环境是高度一致的
–更高效的计算资源利用
docker是内核级别的虚拟化;不需要管理程序支持
可以在一个物理机上运行很多容器实例比如tomcat kabana 一起运行(容器性能压榨至极致)
docker基本组成
docker中名词概念
-docker基本组成
–镜像(lmage):
类似于一个模板,通过这个模板创建一个容器;
比如tomcat镜像===》 run ==》tomcat01(提供服务)
通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中)
–容器(container):
利用容器技术,独立运行一个或者一组应用,通过镜像创建的,
启动、停止、删除基本命令
–仓库(repository):
存放镜像地方
仓库分为:公有仓库和私有仓库
docker hub(国外)
国内:阿里云(都有容器服务器;配置镜像加速)、华为云
阿里云镜像加速流程
安装docker及阿里云镜像加速
-安装docker
[root@server6 /]# uname -r 查看虚拟机版本
3.10.0-693.el7.x86_64
[root@server6 /]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[root@server6 ~]# yum -y install yum-utils
[root@server6 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@server6 ~]# yum -y install docker-ce docker-ce-cli containerd.io
[root@server6 ~]# systemctl start docker
[root@server6 ~]# docker version //查看docker内核信息
[root@server6 ~]# docker run hello-world //下载镜像
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:7e02330c713f93b1d3e4c5003350d0dbe215ca269dd1d84a4abc577908344b30
Status: Downloaded newer image for hello-world:latest
Hello from Docker! ##获取docker镜像
This message shows that your installation appears to be working correctly.
[root@server6 ~]# docker images //查看刚刚下载的docker镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 14 months ago 13.3kB
--卸载docker
---卸载依赖
[root@server6 ~]# yum -y remove docker-ce docker-ce-cli containerd.io
---卸载目标资源
[root@server6 ~]# rm -rf /var/lib/docker // /var/lib/docker docker的默认工作路径
--------------------------------------------------------------------------------------------
-配置阿里云镜像加速
查看图片 docker阿里云镜像加速-01 以及 02
注: 需自己去阿里云官方平台开通购买且只可自己使用
docker-run命令运行原理
docker工作原理
docker与虚拟机VM区别
run命令流程及docke原理
-docker底层原理
–docker是怎么工作的
docker是一个c/s结构(client-server)系统,docker的守护进程运行在主机上,通过socket从客户端访问!
dockerserver 接收到 docker-client的指令,就会执行这个命令!【结合docker工作原理图片】
-docker为什么比vm快 【结合 docker与虚拟机vm区别图片】
虚拟机是在硬件上跑服务;而docker是直接运行在单独隔离的容器;
docker有着比虚拟机更少的抽象层;
docker利用的是宿主机的内核,vm需要是guest os。
所以说,新建一个容器的时候,docker不需要虚拟机那样的重新加载一个操作系统内核,避免引导。
虚拟机是加载guest os,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,为秒级
附:NS(mnt) 文件系统隔离
容器在chroot 之后限制了进程只能读写指定的目录,NS的namespace 则是文件的挂载和卸载只跟namespace 有关系,跟其他的namespace 是透明的。