docker离线安装

 安装依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源:
sudo yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
列出当前可用的Docker版本
sudo yum list docker-ce.x86_64 --showduplicates |sort -r


安装docker-ce
sudo yum clear all yum makecache fastyum -y install docker-ce

启动:
systemctl start docker

查看版本:
docker version

更新系统
yum -y update

重启防火墙

firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

chmod 777 resolv.conf

CentOS8 修改并更新源,解决yum无法使用问题(基础环境:CentOS Linux release 8.1.1911 (Core) )

1. 备份旧的配置文件

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ 这里是改为阿里云的

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
3.生成缓存

 yum makecache


搜索:docker search -s 10 java
下载:docker pull
列表:docker images
删除:docker rmi
保存:docker save
docker镜像管理:
https://hub.docker.com/
125761565
125761565@qq.com

搭建本地镜像管理库:
新建并启动一个Docker Registry 2.0。
docker run -d -p 5000:5000 --restart=always --name registry2 registry:2

 


Matrxi-Web是一个前后端分离的管理系统:
https://github.com/forezp/matrix-web


Docker可视化管理工具:

docker run -d --privileged -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer

如开启了SELinux,可执行如下命令启动:

docker run -d --privileged -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer


查ip:
ip addr show

可使用CTRL-p CTRL-q 断开容器连接并离开

命令返回有关网络的信息:
docker network inspect

1,自动下载并安装适应系统版本的Compose:
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2,为安装脚本添加执行权限

chmod +x /usr/local/bin/docker-compose

3,测试安装结果。
docker-compose --version

4,Compose命令补全工具
curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose -o/etc/bash_completion.d/docker-compose

5,docker-compose help build 查看帮助
停止指定服务的容器:
docker-compose kill eureka

更多:

http://www.itmuch.com/categories/Docker/

 

压测工具stress

下载:

docker pull lorel/docker-stress-ng:latest
latest:Pullingfrom lorel/docker-stress-ng
c52e3ed763ff:Pull complete 
a3ed95caeb02:Pull complete 
7f831269c70e:Pull complete 
Digest: sha256:c8776b750869e274b340f8e8eb9a7d8fb2472edd5b25ff5b7d55728bca681322
Status:Downloaded newer image for lorel/docker-stress-ng:latest

使用:

 

docker run --name stress -it --rm lorel/docker-stress-ng:latest stress --help
--name 指定lorel/docker-stress-ng:latest所启动的测试得容器名称为stress
--it:打开一个伪终端,并提供交互式
--rm:容器停止即删除
lorel/docker-stress-ng:latest:压测stress工具镜像名称
stress:lorel/docker-stress-ng:latest镜像内所内置的命令,必须使用此命令来指定--help支持的选项

常用参数:

--cpu N:启动几个子进程来做压测,默认一个进程使用一个CPU核心,选项可简写为-c N
docker run --name stress -it --rm lorel/docker-stress-ng:latest stress --help | grep  "cpu N"
-c N,--cpu N            start N workers spinning on sqrt(rand())

--vm N:启动几个进程来做匿名页压测,选项可简写为-m N
docker run --name stress -it --rm lorel/docker-stress-ng:latest stress --help | grep  "vm N"
-m N,--vm N             start N workers spinning on anonymous mmap

--vm-bytes N:为--vm N指定的进程提供内存分配,每个进程可以分配到的内存数量,默认为256M
docker run --name stress -it --rm lorel/docker-stress-ng:latest stress --help | grep  "vm-bytes N"
--vm-bytes N       allocate N bytes per vm worker (default256MB)

注:

1.为需要限制容器内的应用提前做好压测,例如Nginx容器自身所占内存空间,以及预算业务量大小所需占用的内存空间,进行压测后,才能进入生产环境使用;
2.保证宿主机内存资源充足,监控及时上报容器内的内存使用情况,一旦容器所占用的内存不足,立刻对容器内存限制做调整或者打包此容器为镜像到其它内存充足的机器上进行启动;
3.如果物理内存充足,尽量不要使用swap交换内存,swap会导致内存计算复杂。
设置内存选项
注意:可限制的内存单位:b、k、m、g;分别对应bytes、KB、MB、GB

-m or --memory=:容器能使用的最大内存大小,最小值为4M
--memory-swap=:容器能够使用swap内存的大小,使用—memory-swap选项必须要使用—memory选项,否则—memory-swap不生效
--memory-swappiness:默认情况下,主机可以把容器使用的匿名页swap出来,你可以设置一个0-100之间的值,代表swap出来的比例,如果此值设置为0,容器就会先使用物理内存,能不用就不用swap空间,如果设置为100,则反之,能用swap就会用,哪怕有一丝可以用到swap空间的可能性就会使用swap空间
--memory-reservation:预留的一个内存空间,设置一个内存使用soft limit,如果docker发现主机内存不足,会执行OOM操作,这个值必须小于—memory设置的值
--kernel-memory:容器能够使用kernel memory大小,最小值为4M
--oom-kill-disable:是否运行OOM的时候杀死容器,只有设置了-m或者-memory,才可以设置此值,值为flase或者true,设置为false之后当此容器的内存溢出的时候就会对此容器执行kill操作,否则容器会耗尽主机内存,而且导致主机应用被杀死,如果这个容器运行的应用非常重要,就把—oom-kill-disable设置为true,就是禁止被oom杀掉

--memory-swap详解: swap:交换内存 ram:物理内

 

 

查看内存大小:

 

 

 

限制容器内存

使用docker的--memory选项来限制容器能够使用物理内存的大小,使用stress命令的选项--vm指定启动几个占用内存的进程和每个占用内存进程所占用的内存空间大小 我们指定了容器最多使用物理内存512M,启动两个占用内存的进程,每个进程分别占用512M的空间,那么两个进程理论上需要占用1024的空间,我们只给了1024的空间,显然是不够的:

docker run --name stress-memory  -it --rm -m 512M  lorel/docker-stress-ng:latest stress --vm 2--vm-bytes 512Mstress-ng: info:[1] defaulting to a 86400 second run per stressorstress-ng: info:[1] dispatching hogs:2 vm

使用docker stats命令来查看容器硬件资源的使用情况 可以看到我们的stress-memory容器的总内存为512M,使用了500多点,但为超过521M,内存占用的百分比为99.3%:

 

 

 

使用htop命令来查看资源情况:

 

 

 

限制容器swap内存

设置oom时是否杀掉进程

Docker CPU限制

查看CPU核心数以及编码:

 

 

 

设置CPU选项

--cpu-shares:共享式CPU资源,是按比例切分CPU资源;比如当前系统上一共运行了两个容器,第一个容器上权重是1024,第二个容器权重是512, 第二个容器启动之后没有运行任何进程,自己身上的512都没有用完,而第一台容器的进程有很多,这个时候它完全可以占用容器二的CPU空闲资源,这就是共享式CPU资源;如果容器二也跑了进程,那么就会把自己的512给要回来,按照正常权重1024:512划分,为自己的进程提供CPU资源。如果容器二不用CPU资源,那容器一就能够给容器二的CPU资源所占用,如果容器二也需要CPU资源,那么就按照比例划分,这就是CPU共享式,也证明了CPU为可压缩性资源。--cpus:限制容器运行的核数;从docker1.13版本之后,docker提供了--cpus参数可以限定容器能使用的CPU核数。这个功能可以让我们更精确地设置容器CPU使用量,是一种更容易理解也常用的手段。-cpuset-cpus:限制容器运行在指定的CPU核心;运行容器运行在哪个CPU核心上,例如主机有4个CPU核心,CPU核心标识为0-3,我启动一台容器,只想让这台容器运行在标识0和3的两个CPU核心上,可以使用cpuset来指定。

限制CPU Share

启动stress压测工具,并使用stress命令加--cpu选项来启动四个进程,默认一个进程占用一颗CPU核心:

docker run --name stress-share  -it --rm --cpu-shares 512  lorel/docker-stress-ng:latest stress -c 2stress-ng: info:[1] defaulting to a 86400 second run per stressorstress-ng: info:[1] dispatching hogs:2 cpu

压测工具会吃掉俩个核心的所有CPU资源 再次打开一个窗口,使用htop命令来查看硬件资源损耗情况 我们一共开了两个进程,默认会占用两个cpu核心,每个核心的资源为100%,两个也就是为200%,由于没有指定限制在某个CPU核心上,所以它是动态的跑在四核CPU核心数,但是stress占用CPU的资源不会超出200%:

 

 

 

再次打开一个窗口,使用docker top container也可以查看到两个进程一共消耗了多少cpu资源:

 

 

 

限制CPU核数

我们使用docker的--cpus选项来限制cpu运行的核心数,使用stress命令的选项--cpu来限制启动的进程数 显示cpu只运行两个核心数,也就是只能运行200%CPU资源,启动4个进程,也就是讲这4个进程只能跑在200%的cpu资源上:

docker run --name stress-cpus  -it --rm --cpus 2  lorel/docker-stress-ng:latest stress -c 4stress-ng: info:[1] defaulting to a 86400 second run per stressorstress-ng: info:[1] dispatching hogs:4 cpu

使用htop命令查看cpu占用资源 可以看到四个进程,但是跑在了四颗cpu上面,但是每颗cpu只运行了50%左右的资源,4*50也就是200%左右的cpu资源:

 

使用docker top container也可以查看到四个进程一共消耗了多少cpu资源:

 

限制容器运行在指定核心

我们使用docker的--cpuset-cpus选项来指定cpu运行在哪个核心上,使用stress的选项--cpu来指定启动的进程数 我们指定4个进程运行在编号为0和2的cpu上:

docker run --name stress-cpuset  -it --rm --cpuset-cpus=0,2  lorel/docker-stress-ng:latest stress -c 4stress-ng: info:[1] defaulting to a 86400 second run per stressorstress-ng: info:[1] dispatching hogs:4 cpu

使用htop查看系统硬件占用资源 可以看到和预期一样,占用了第一颗和第三颗cpu,每个进程占用cpu资源为50%,总资源为200%,两颗cpu的量:

 

点击查看原文

 

posted on 2020-06-09 16:47  让代码飞  阅读(672)  评论(0)    收藏  举报

导航

一款免费在线思维导图工具推荐:https://www.processon.com/i/593e9a29e4b0898669edaf7f?full_name=python