Docker概述与安装
一、Docker 概述
1.1 Docker 为什么会出现?
Docker 的 思想就是来源集装箱!
隔离:Docker核心思想,打包装箱,就应用程序和开发环境打包成一个Docker镜像,而且可以打包多个,类似与集装箱的方式,且每个箱子之间是隔离的。
并且Docker可以通过隔离机制,将服务器的利用到极致。
1.2 Docker的历史
虚拟机也是属于虚拟化技术,Docker 容器技术,也是一种虚拟化技术
但是Docker 非常小巧,运行速度也比虚拟机快几个数量级。
Docker 是基于GO语言开发的(B站也是GO语言开发的)
Docker 的 官网:https://www.docker.com/
仓库地址:https://hub.docker.com/ 可以 git push pull 镜像,类似与github
1.3 Docker 能什么
传统虚拟机技术:

Docker 容器技术:
比较Docker 和 虚拟机技术的不同
-
传统虚拟机,虚拟出一个硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
-
容器内的应用直接运行在宿主机的内同,容器是没有自己的内核的,也没有虚拟我们的硬件,所以很轻便。
-
每个容器间是互相隔离,每个容器内都有一个属性自己的文件系统,互不影响。
优点:
-
DevOps(开发、运维)
-
应用更快捷的交付和部署
-
更快捷的升级和扩缩容
-
更简单的系统运维
-
容器化之后,开发和测试环境都是高度一致的。
-
更高效的计算资源利用
-
Docker 是内核级别的虚拟化,可以在物理机(虚拟机)上运行很多容器实例,服务器性能可以被利用到极致(再次强调)
一核两G的虚拟机运用Docker之后可以运行几十个Tomcat!!!!!?????
1.4 Docker 的名词概念
Docker的基本组成
-
镜像(image)
docker镜像类似于一个 模板,可以通过这个模板创建容器服务
通过这个镜像可以创建多个容器,最终服务运行或者项目运行,就是在容器中。
-
容器(container)
利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。
包括启动,停止,删除等基本命令
目前可以把容器理解为一个简易的linux 系统。
-
仓库(repository)
仓库就是存放镜像的地方,仓库分公有和私有,国外的有Docker Hub,国内阿里云等,都需要配置镜像加速。
二、Docker安装
2.1 Docker安装
以linux环境为例,
#1.卸载旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#2.安装需要的jar包
yum install -y yum-utils
#3.设置镜像的仓库
#默认国外镜像仓库######24年8月11日补充,国内不能访问docker镜像源了,这里不用执行
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#阿里云镜像仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast
#4.安装docker docker-ce社区 ee企业版
yum install docker-ce docker-ce-cli containerd.io
#也可以安装指定版本的
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
#24年8月11日补充,如果出现拉去镜像失败,可以编辑/etc/docker/daemon.json文件,然后重启一下systemctl restart docker
{
"registry-mirrors" :
[
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
]
}
#5.启动docker 这个命令说明docker是个服务
systemctl start docker
查看docker 版本可以确定是否安装成功
docker version
测试运行,运行命令,会先从远程仓库中拉取hello-world镜像。看到Hello from Docker!,说明成功了。
#6.运行hello-world镜像
docker run hello-world
#7.查看hello-world镜像
docker images
[root@izuf67znusfv5r0k1fzac9z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 6 months ago 13.3kB
如果你不再需要Docker了,可以彻底卸载它
#8.卸载docker
#卸载软件和以依赖
yum remove docker-ce docker-ce-cli containerd.io
#删除文件夹默认的工作目录
rm -rf /var/lib/docker
2.2 配置镜像加速
-
找到容器镜像服务
-
镜像加速地址
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://d6ikb873.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker
解释一下这段命令
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://d6ikb873.mirror.aliyuncs.com"] } EOF #等价于 touch /etc/docker/daemon.json vim /etc/docker/daemon.json # 然后将下列配置复制粘贴,最后wq保存 { "registry-mirrors": ["https://d6ikb873.mirror.aliyuncs.com"] }
-
2024年8月28日补充
由于docker最近中国地区不能访问官方镜像源,如果不能拉去镜像,可以通过其他源,注意需要重启docker。
{ "registry-mirrors" : [ "https://docker.m.daocloud.io", "https://d6ikb873.mirror.aliyuncs.com", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud" ] }
2.3 回顾HelloWorld流程
2.4 底层原理
Docker 是怎么工作的?
Docker 是一个 Client - Server 结构的系统 ,Docker 的守护进程运行在主机上,通过Scoket从客户端访问 DockerServer接收到 Docker-Client 的指令,就会执行这个命令!
Docker 为什么比VM快?
1、Docker有着比虚拟机更少的抽象层
2、docker 利用的是宿主机的内核,vm需要Guest OS
可以学习玩命令再回过头来看这些原理会简单一些