ubuntu20.04 部署docker容器

docker容器性能瓶颈分析及调优 docker容器性能很差_docker容器性能瓶颈分析及调优

Docker 是什么?

  • 我们常说的“Docker”,指的是容器化技术,用于支持创建和使用 Linux容器;
  • 一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上;
  • 容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以很容易地在机器和数据中心运行。

为什么用Docker

容器技术之前,火热的技术是虚拟机技术,而其最典型的代表就是 VMWareOpenStack

而Docker技术走热的原因,说白了就是“轻”,一种轻量化虚拟技术;

Docker的优缺点

1.启动时间

虚拟机虽然可以隔离出很多子电脑,但是占用空间大,启动慢;

而容器技术不需要虚拟整个操作系统,只需要虚拟一个小规模的环境,启动速度很快,几秒就能完成。

2.性能

Docker容器共享宿主机内核,系统级虚拟化,占用资源少,没有Hypervisor层开销,性能基本接近物理机;

虚拟机需要Hypervisor层支持,具有完整的GuestOS(虚拟操作系统),虚拟化开销大,因而降低性能,没有容器性能好

3.占用开销

此外,它占的空间很小,容器只需要MB级甚至KB级。

虚拟机一般要几GB到几十GB的空间

4.安全性

Docker容器由于共享宿主机内核,只是进程级隔离,因此隔离性和稳定性不如虚拟机,Docker容器具有一定权限访问宿主机内核,存在一定安全隐患;

Docker的三大核心

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

Docker镜像,就像一个完整的文件包,它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器的实质是进程,它运行与独属于自己的命名空间,类似在一个独立于宿主下的系统上操作(相当于小虚拟机),这种特性使得容器封装的应用比直接在宿主运行更加安全。

镜像构建完成后,可以很容易的在当前宿主机上运行;但是如果需要在其他服务器上使用这个镜像呢?

这时候就需要仓库,它的工作就是用来存放、发放镜像的——也就是所说的“Docker Registry

简而言之:一个 Docker Registry 中可以包含多个仓库Repository);每个仓库可以包含多个标签Tag);每个标签对应一个镜像。

Ubuntu20.04下部署Docker环境

1.安装

建议直接看官方文档

卸载旧版本

如果之前有安装过,建议清楚一下配置

sudo apt-get remove docker
sudo apt-get remove docker-engine
sudo apt-get remove docker.io

脚本安装

用APT安装比较麻烦,还要证书啥的;

而在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

我们建立一个文件夹,执行第一条命令下载脚本

docker容器性能瓶颈分析及调优 docker容器性能很差_用户组_02

然后运行脚本,并指定镜像,安装成功

docker容器性能瓶颈分析及调优 docker容器性能很差_Docker_03

建立用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

sudo groupadd docker

将当前用户加入 docker 组:

sudo usermod -aG docker $USER

docker容器性能瓶颈分析及调优 docker容器性能很差_ubuntu_04

测试是否安装成功

docker run --rm hello-world

docker容器性能瓶颈分析及调优 docker容器性能很差_docker_05

常用命令

启动Docker

sudo systemctl enable docker
sudo systemctl start docker

关闭Docker

sudo systemctl stop docker

Docker部署clash

准备配置文件:config.yaml

docker容器性能瓶颈分析及调优 docker容器性能很差_ubuntu_06

部署Clash核心

Clash 有官方的 Docker 部署教程,以及完整的配置项说明文档。有兴趣深入了解的可以看看,咱们简单粗暴点略过 docker-compose 直接上命令

进到我们新建的文件夹:

sudo docker run -d --name=clash -v "$PWD/config.yaml:/root/.config/clash/config.yaml" -p "7890:7890" -p "9090:9090" --restart=unless-stopped dreamacro/clash

docker容器性能瓶颈分析及调优 docker容器性能很差_docker容器性能瓶颈分析及调优_07

图形化控制台

1.在线控制台

http://yacd.haishan.me/

2.本地部署

git clone -b gh-pages https://github.com/haishanh/yacd.git

这是 yacd 作者编译好的版本,克隆下来之后用浏览器访问其中的 index.html 即可

docker容器性能瓶颈分析及调优 docker容器性能很差_docker容器性能瓶颈分析及调优_08

3.docker 部署

Run: docker run -p 1234:80 -d --rm haishanh/yacd

docker容器性能瓶颈分析及调优 docker容器性能很差_用户组_09

4.一点小问题

本地部署yacd后,点击index.html,发现网页是空白的,按F12查看报错信息:

docker容器性能瓶颈分析及调优 docker容器性能很差_docker容器性能瓶颈分析及调优_10

发现是因为谷歌浏览器不能通过本地文件的路径:file://XXX 去访问,只能通过http://xxx 的形式访问,所以报错

docker容器性能瓶颈分析及调优 docker容器性能很差_用户组_11

docker容器性能瓶颈分析及调优 docker容器性能很差_ubuntu_12

然后我们直接通过下面的URL:http://127.0.0.1:8887/访问就行了;

不过还是在线访问简单!!!

参考博客:https://luckytdx.com/index.php/archives/58/