本文已参与「新人创作礼」活动,一起开启掘金创作之路
Docker概述
Docker的出现
开发和运维
-
传统的开发:开发jar--->环境配置等一些问题交给运维来配置(这样一来增加了整个项目的难度)
-
现在的开发:开发打包部署一套流程做完
正因为docker的出现让项目开发的环境问题变得简单😜
有了docker的我们只需要将源代码和环境一起打包即可轻而易举的解决环境问题
docker是正式发行日期是在2013年,这是一个基于
golang语言编写的开源的应用容器引擎
logo:
介绍Docker
隔离
隔离(docker的核心思想):docker的logo就是一个鲸鱼头上驮着许多集装箱,这里的集装箱就充分的发挥了隔离这一思想
Docker和虚拟机的对比
共同点
都是虚拟化技术
不同点
| 特性 | 普通虚拟机 | Docker |
|---|---|---|
| 跨平台 | 通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行 | 支持的系统非常多,各类 windows 和 Linux 都支持 |
| 性能 | 性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了 | 性能好,只虚拟软件所需运行环境,最大化减少没用的配置 |
| 自动化 | 需要手动安装所有东西 | 一个命令就可以自动部署好所需环境 |
| 稳定性 | 稳定性不高,不同系统差异大 | 稳定性好,不同系统都一样部署方式 |
虚拟机:
docker:
小结:
- 容器是没有内核的,容器的应用是运行在宿主机的内核下的
- 与虚拟机相比,docker最大的优势就是类似于一个轻量的虚拟机,你想要的功能都有,不想要的功能一个也没有
- 每个容器都是独立的,他们之间互不影响,相互隔离,每个容器之间都有自己的文件系统
DevOps(开发运维)
应用更快速的交付和部署
-
传统:读文档,一堆文档
-
docker:打包镜像发布测试,一键运行
更便捷的升级和扩缩容
-
有了docker后我们升级环境不需要一个一个升级再做联调测试,只需将整个容器升级即可
-
扩缩容:项目打包为一个镜像,如果服务器A性能达到瓶颈,我们要水平扩展,负载均衡,我们此时只需将镜像直接放到服务器b上运行即可(容器之间也能进行交互)
-
均衡负载:分摊到多个操作单元上进行执行

更简单的运维
- 在容器化之后,开发和运维环境基本一致,不会出现在开发那里可以到部署时发行不行
更高效的利用计算机资源
- docker是内核级别的虚拟化,可以在一个物理机上运行多个容器实例
Docker组成与安装
Docker的基本组成
- docker的架构图:

-
Images(镜像):
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务
tomocat镜像===> run ===>tomacat01容器(提供给服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
- Containers(容器):
Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。启动,停止,删除,基本命令。
- Registry(仓库):
仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库
- Docker daemon(守护进程):
一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。
- Client(客户端):
简单来说就是你输入命令的窗口
安装Docker
- Ubuntu
# 1.如果有docker那么可以这样卸载
sudo apt-get remove docker docker-engine docker.io containerd runc
# 2.更新包索引并安装包,以允许通过 HTTPS 使用存储库
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 3.添加 Docker 的官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 4.使用以下命令设置稳定存储库。要添加夜间或测试存储库,请在下面的命令中的单词后添加单词或(或两者)nightly test stable
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 5.安装最新版本的 Docker 引擎和容器 docker-ce ce是社区 ee是企业版
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 6.检测是否安装成功
docker version
或者
sudo docker run hello-world
若要安装特定版本的 Docker 引擎,请在存储库中列出可用版本,然后选择并安装:
a.列出存储库中可用的版本:
b.使用第二列中的版本字符串安装特定版本,例如 .5:18.09.1~3-0~ubuntu-xenial
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
- CentOS
# 1.卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2.需要的安装包
sudo yum install -y yum-utils
# 3.设置仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo (这是国外的)
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里云的)
# 4.更新yum软件包索引
sudo yum makecache fast
# 5.安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
# 6.启动docker
sudo systemctl start docker
# 7.检测是否安装成功
docker version
或者
sudo docker run hello-world
若要安装特定版本的 Docker 引擎,请在存储库中列出可用版本,然后选择并安装:
a.列出存储库中可用的版本:
返回的列表取决于启用了哪些储存库,并且特定于您的 CentOS 版本(由本示例中的后缀指示)。
.el7
b.按特定版本的完全限定包名称安装特定版本,该名称是包名 () 加上版本字符串(第 2 列),从第一个冒号 () 开始,直到第一个连字符,用连字符 () 分隔。例如。docker-ce``:``-``docker-ce-18.09.1
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io