1.docker简介
docker定义
根据官方的定义,Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。引用网图:
docker解决了什么问题
解决了应用程序本地运行环境与生产运行环境不一致的问题
解决了应用程序资源使用的问题,docker会一开始就为每个程序指定内存分配和CPU分配
让快速扩展、弹性伸缩变得简单
docker技术边界
docker是容器化技术,针对的是应用及应用所依赖的环境做容器化。遵循单一原则,一个容器只运行一个主进程。多个进程都部署在一个容器中,弊端很多。比如更新某个进程的镜像时,其他进程也会被迫重启,如果一个进程出问题导致容器挂了,所有进程都将无法访问。再根据官网的提倡的原则而言,容器 = 应用 + 依赖的执行环境而不是像虚拟机一样,把一堆进程都部署在一起。
docker给我们带来了哪些改变
引用网图:
软件交付方式发生了变化
替代了虚拟机
改变了我们体验软件的模式
降低了企业成本
促进了持续集成、持续部署的发展
促进了微服务的发展
docker和虚拟机的区别
引用网图:
\1. vm(虚拟机)与docker(容器)框架,直观上来讲vm多了一层guest OS,同时Hypervisor会对硬件资源进行虚拟化,docker直接使用硬件资源,所以资源利用率相对docker低
\2. 服务器虚拟化解决的核心问题是资源调配,而容器解决的核心问题是应用开发、测试和部署。
\3容器技术严格来说并不是虚拟化,没有客户机操作系统,是共享内核的。
docker基本架构
基本架构图
引用网图:
涉及概念
镜像(Image):Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统
容器(Container):容器是独立运行的一个或一组应用,是镜像运行时的实体
客户端(client):Docker 客户端通过命令行或者其他工具使用 Docker SDK(https://docs.docker.com/develop/sdk/)) 与 Docker 的守护进程通信
主机(host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
注册中心(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。DockerHub(https://hub.docker.com)) 提供了庞大的镜像集合供使用。
Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker。
直观感受client请求server
client 通过http协议访问 host
sudo apt install socat socat -v UNIX-LISTEN:/tmp/dockerapi.sock UNIX-CONNECT:/var/run/docker.sock &
这条命令中,-v 用于提高输出的可读性,带有数据流的指示。UNIX-LISTEN 部分是让socat 在一个Unix套接字上进行监听,而UNIX-CONNECT 是让socat 连接到Docker的Unix套接字
docker -H unix://tmp/dockerapi.sock ps
2.docker环境
主机环境
宿主机环境 ubuntu-20.04.4-live-server-amd64,下载地址: https://mirrors.aliyun.com/ubuntu-releases/20.04.4/ubuntu-20.04.4-live-server-amd64.iso
apt 包管理器,镜像源修改:将 http://cn.archive.ubuntu.com/ubuntu 改为 https://mirrors.tuna.tsinghua.edu.cn/ubuntu
两种修改方式:
第一种:在安装虚拟机时,修改图下图:
第二种:已经安装好系统的情况下,修改 /etc/apt/sources.list 将对应的地址替换,替换完成后执行apt-get update。注意:先备份/etc/apt/sourse.list文件
docker安装
基于apt包管理器安装
1.安装
sudo apt install docker.io
2.卸载
sudo apt-get purge doker.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
基于官方文档安装(不推荐)
有三种安装方式: 1. 基于官方存储库安装; 2. 下载软件包安装; 3. 基于官方给出的快捷脚本安装。
使用docker官方存储库安装
1.更新apt包索引,并且安装一些软件使得apt可以通过HTTPS协议访问软件库
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
2.添加docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o
/usr/share/keyrings/docker-archive-keyring.gpg
3.设置一个标准的docker软件仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/dockerarchive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list >
/dev/null
4.更新apt包索引并查看docker可用版本列表
sudo apt-get update
apt-cache madison docker-ce
5.安装特定版本docker语法,例如:5:20.10.16~3-0~ubuntu-focal
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING>
containerd.io docker-compose-plugin
6.安装docker-ce及相关组件
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
7.检查docker engine是否正确安装
docker run hello-world
基于阿里云存储库安装(推荐)
1.安装必要的系统文件
2.安装GPG证书
3.写入软件源信息
4.更新apt包索引并查看docker可用版本列表
5.安装特定版本的docker语法,例如:5:20.10.16~3-0~ubuntu-focal
sudo apt-get update
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING>
containerd.io docker-compose-plugin
6.安装最新版本
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
设置自定义镜像库
/etc/docker/daemon.json
#本人配置的如下没有成功,跑不通网络
{
"registry-mirrors":[
"https://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
#更换这个加速镜像站成功
echo '
{
"registry-mirrors": ["https://docker-proxy.741001.xyz","https://registry.docker-cn.com"]
}
' >/etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker
卸载
1.卸载
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
2.删除相关目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm -rf /etc/docker/
将用户添加到docker组
将用户添加到docker用户组后,不需要每次都输入sudo来执行docker命令了
//将用户从docker用户组中移除 gpasswd -d <username> docker
//将用户添加到docker 用户组
sudo addgroup -a <username> docker
//查看用户信息
id <username>
退出终端,重新连接即可