docker介绍与配置

蒸汽
蒸汽
发布于 2024-11-17 / 29 阅读
1
0

docker介绍与配置

1.docker简介

docker定义

根据官方的定义,Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。引用网图:

image-20241117084312806.png

docker解决了什么问题

解决了应用程序本地运行环境与生产运行环境不一致的问题

解决了应用程序资源使用的问题,docker会一开始就为每个程序指定内存分配和CPU分配

让快速扩展、弹性伸缩变得简单

docker技术边界

docker是容器化技术,针对的是应用及应用所依赖的环境做容器化。遵循单一原则,一个容器只运行一个主进程。多个进程都部署在一个容器中,弊端很多。比如更新某个进程的镜像时,其他进程也会被迫重启,如果一个进程出问题导致容器挂了,所有进程都将无法访问。再根据官网的提倡的原则而言,容器 = 应用 + 依赖的执行环境而不是像虚拟机一样,把一堆进程都部署在一起。

docker给我们带来了哪些改变

引用网图:

  1. 软件交付方式发生了变化

  2. 替代了虚拟机

  3. 改变了我们体验软件的模式

  4. 降低了企业成本

  5. 促进了持续集成、持续部署的发展

  6. 促进了微服务的发展

docker和虚拟机的区别

引用网图:

\1. vm(虚拟机)与docker(容器)框架,直观上来讲vm多了一层guest OS,同时Hypervisor会对硬件资源进行虚拟化,docker直接使用硬件资源,所以资源利用率相对docker低

\2. 服务器虚拟化解决的核心问题是资源调配,而容器解决的核心问题是应用开发、测试和部署。

\3容器技术严格来说并不是虚拟化,没有客户机操作系统,是共享内核的。

docker基本架构

基本架构图

引用网图:

涉及概念

  1. 镜像(Image):Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统

  2. 容器(Container):容器是独立运行的一个或一组应用,是镜像运行时的实体

  3. 客户端(client):Docker 客户端通过命令行或者其他工具使用 Docker SDK(https://docs.docker.com/develop/sdk/)) 与 Docker 的守护进程通信

  4. 主机(host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器

  5. 注册中心(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。DockerHub(https://hub.docker.com)) 提供了庞大的镜像集合供使用。

  6. 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

image-20241117084757886.png

2.docker环境

主机环境

  1. 宿主机环境 ubuntu-20.04.4-live-server-amd64,下载地址: https://mirrors.aliyun.com/ubuntu-releases/20.04.4/ubuntu-20.04.4-live-server-amd64.iso

  2. 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. 官方文档:https://docs.docker.com/engine/install/ubuntu/

  2. 有三种安装方式: 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>

退出终端,重新连接即可



评论