初学docker第一周-创新互联

1、namespace、cgroup在容器中的作用
  • namespace是linux系统底层的概念,在内核层实现,即有一些不同类型的命名空间被部署在核内各个docker容器运行在同一个docker主进程并且共用同一个宿主机系统的内核,各个docker容器运行在宿主机的用户空间,每个容器都要有类似于虚拟机一样的相互隔离的运行空间,但是容器技术是在一个进程内实现运行指定服务的运行环境,并且还可以保护宿主机内核不受其他进程的干扰和影响,比如文件系统空间、网络空间、进程空间等。
    namespace六种隔离类型
    MNT Namespace 提供瓷片挂载点和文件系统的隔离能力
    IPC Namespace提供进程间通信的隔离能力
    UTS Namespace 提供主机名隔离能力
    PID Namespace 提供进程隔离能力
    Net Namespace提供网络隔离能力
    User Namespace 提供用户隔离能力

    10年积累的成都做网站、网站设计、外贸营销网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有龙安免费网站建设让你可以放心的选择与我们合作。
  • cgroup全称Linux control groups
    Linux Cgroups的全称是Linux Control Groups
    主要作用限制一个进程组能够使用的资源上限, 包括CPU、内存、磁盘、网络带宽等
    能够对进程进行优先级设置,以及进程挂起和恢复等操作

2、编排工具及依赖技术总结

容器编排通常包括容器管理、调度、集群定义和服务发现等功能,编排工具有:

  • Docker sware: docker 开发的容器编排引擎 kubernetes:

  • google领导开发的容器编排引擎,内部项目为borg,而且同时支持docker和CoreOS

  • mesos+marathon:
    通用的集群组员调度平台,mesos(资源分配)与marathon(容器编排平台)一起提供容器编排引擎功能。

    Docker容器的依赖技术有容器网络、服务发现、容器监控、数据管理、日志收集。

3、基于dockerfile制作一个nginx镜像
1、  # 创建环境目录
 mkdir dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}} -pv
 cd dockerfile/web/nginx/  && mkdir  all-in-one 
2 、# 基于centos环境构建
 docker pull centos 
3、 # 临时启动一个容器用于获取配置文件
 docker run -it docker.io/centos  /bin/bash
 docker cp 3bc5baed6234:/apps/nginx/conf/nginx.conf  .
4、构建系统层,安装必备的基础软件包
 [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、准备源码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、编译执行NGINX,Dockerfile中追加
RUN cd /usr/local/src/nginx-1.16.1 && ./configure --prefix=/apps/nginx  --with-http_sub_module && make && make install 
7、自定义修改nginx配置,需要创建用户
RUN useradd nginx -u 2022
ADD nginx.conf  /apps/nginx/conf/nginx.conf
ADD code.tar.gz  /data/nginx/html
8、配置nginx自启动,Dockerfile中追加
EXPOSE 80 443
CMD ["/apps/nginx/sbin/run_nginx.sh"]
9、准备nginx 启动脚本
[root@harbor-server2 all-in-one]# cat run_nginx.sh 
#!/bin/bash
echo "nginx starting....."
/apps/nginx/sbin/nginx

使用脚本方式构建镜像

[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、镜像构建总结

完整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

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:初学docker第一周-创新互联
文章地址:http://myzitong.com/article/dgdhps.html