namespace是linux系統(tǒng)底層的概念,在內(nèi)核層實(shí)現(xiàn),即有一些不同類型的命名空間被部署在核內(nèi)各個(gè)docker容器運(yùn)行在同一個(gè)docker主進(jìn)程并且共用同一個(gè)宿主機(jī)系統(tǒng)的內(nèi)核,各個(gè)docker容器運(yùn)行在宿主機(jī)的用戶空間,每個(gè)容器都要有類似于虛擬機(jī)一樣的相互隔離的運(yùn)行空間,但是容器技術(shù)是在一個(gè)進(jìn)程內(nèi)實(shí)現(xiàn)運(yùn)行指定服務(wù)的運(yùn)行環(huán)境,并且還可以保護(hù)宿主機(jī)內(nèi)核不受其他進(jìn)程的干擾和影響,比如文件系統(tǒng)空間、網(wǎng)絡(luò)空間、進(jìn)程空間等。
namespace六種隔離類型
MNT Namespace 提供瓷片掛載點(diǎn)和文件系統(tǒng)的隔離能力
IPC Namespace提供進(jìn)程間通信的隔離能力
UTS Namespace 提供主機(jī)名隔離能力
PID Namespace 提供進(jìn)程隔離能力
Net Namespace提供網(wǎng)絡(luò)隔離能力
User Namespace 提供用戶隔離能力
cgroup全稱Linux control groups
Linux Cgroups的全稱是Linux Control Groups
主要作用限制一個(gè)進(jìn)程組能夠使用的資源上限, 包括CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)帶寬等
能夠?qū)M(jìn)程進(jìn)行優(yōu)先級(jí)設(shè)置,以及進(jìn)程掛起和恢復(fù)等操作
容器編排通常包括容器管理、調(diào)度、集群定義和服務(wù)發(fā)現(xiàn)等功能,編排工具有:
Docker sware: docker 開發(fā)的容器編排引擎 kubernetes:
google領(lǐng)導(dǎo)開發(fā)的容器編排引擎,內(nèi)部項(xiàng)目為borg,而且同時(shí)支持docker和CoreOS
mesos+marathon:
通用的集群組員調(diào)度平臺(tái),mesos(資源分配)與marathon(容器編排平臺(tái))一起提供容器編排引擎功能。
Docker容器的依賴技術(shù)有容器網(wǎng)絡(luò)、服務(wù)發(fā)現(xiàn)、容器監(jiān)控、數(shù)據(jù)管理、日志收集。
1、 # 創(chuàng)建環(huán)境目錄
mkdir dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}} -pv
cd dockerfile/web/nginx/ && mkdir all-in-one
2 、# 基于centos環(huán)境構(gòu)建
docker pull centos
3、 # 臨時(shí)啟動(dòng)一個(gè)容器用于獲取配置文件
docker run -it docker.io/centos /bin/bash
docker cp 3bc5baed6234:/apps/nginx/conf/nginx.conf .
4、構(gòu)建系統(tǒng)層,安裝必備的基礎(chǔ)軟件包
[root@harbor-server2 all-in-one]# pwd
/opt/dockerfile/web/nginx/all-in-one
[root@harbor-server2 all-in-one]# vim Dockerfile
FROM centos:7.8.2003
MAINTAINER "Linfei.Gao 1075983420@qq.com"
RUN yum install -y epel-release && yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
5、準(zhǔn)備源碼nginx包與配置文件
[root@gaolinfei all-in-one]# wget https://nginx.org/download/nginx-1.16.1.tar.gz
Dockerfile中追加
COPY nginx-1.16.1.tar.gz /usr/local/src
6、編譯執(zhí)行NGINX,Dockerfile中追加
RUN cd /usr/local/src/nginx-1.16.1 && ./configure --prefix=/apps/nginx --with-http_sub_module && make && make install
7、自定義修改nginx配置,需要?jiǎng)?chuàng)建用戶
RUN useradd nginx -u 2022
ADD nginx.conf /apps/nginx/conf/nginx.conf
ADD code.tar.gz /data/nginx/html
8、配置nginx自啟動(dòng),Dockerfile中追加
EXPOSE 80 443
CMD ["/apps/nginx/sbin/run_nginx.sh"]
9、準(zhǔn)備nginx 啟動(dòng)腳本
[root@harbor-server2 all-in-one]# cat run_nginx.sh
#!/bin/bash
echo "nginx starting....."
/apps/nginx/sbin/nginx
使用腳本方式構(gòu)建鏡像
[root@harbor-server2 all-in-one]# cat build-command.sh
#!/bin/bash
docker build -t harbor.gaolinfei.com/y73/centos-nginx:1.22.1 .
docker push harbor.gaolinfei.com/y73/centos-nginx:1.22.1
4、鏡像構(gòu)建總結(jié)完整Dockerfile文件
root@gaolinfei all-in-one]# cat Dockerfile
#My first Dockerfile
# base image for Y73 nginx
FROM centos:7.8.2003
MAINTAINER "Linfei.Gao 1075983420@qq.com"
RUN yum install -y epel-release && yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
#COPY nginx-1.16.1.tar.gz /usr/local/src
ADD nginx-1.22.1.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.22.1 && ./configure --prefix=/apps/nginx --with-http_sub_module && make && make install
RUN useradd mynginx -u 2022
ADD nginx.conf /apps/nginx/conf/nginx.conf
ADD code.tar.gz /data/nginx/html
EXPOSE 80 443
ADD run_nginx.sh /apps/nginx/sbin/run_nginx.sh
RUN chmod a+x /apps/nginx/sbin/run_nginx.sh
CMD ["/apps/nginx/sbin/run_nginx.sh"]
```powershell
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧