容器编排技术
容器编排技术
两台docker环境
docker-compose 拖到/usr/local/bin
cd /usr/local/bin
chmod x docker-compose
以nginx为案列 写资源创建模板 yaml格式
mkdir compose_nginx/
cd compose_nginx/
vim Dockerfile
FROM centos:7
#用户信息
MAINTAINER this is nginx image <wang>
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c make
RUN useradd -M -s /sbin/nologin nginx
#下载nginnx软件包
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src
#指定工作目录
WORKDIR nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
#指定http和https端口
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
nginx-1.12.2.tar.gz包拖入同级目录
vi run.sh 同级目录
#!/bin/bash
/usr/local/nginx/sbin/nginx
#nginx镜像可以做了 现在要编排容器 产生镜像和容器建立端口添加页面
cd ..
写编排文件(即创建模板的文件)
vim docker-compose.yaml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 1216:80
- 1218:443
networks:
- abc
volumes:
- ./wwwroot:/usr/local/nginx/html
networks:
abc:
(compose版本号
服务们
Nginx
定义名称
构建镜像
包含 当前目录下的nginx目录(搞不清写绝对路径)
dockerfile下的
暴露端口们
http 80 不加空格(加了空格就是里面的一个字段)
https 443
网络名(相当于vlan划分 自己定义的)
abc
绑定外部容器卷
当前目录底下 有个wwwroot映射(挂载)到容器某路径底下(外部路径可以定义)
这里和nginx对齐可以加httpd服务
命名空间 (自己定义 这么多内容都在这里)
abc)
(wwwroot不需要创建 因为-v了)
docker-compose -f /root/compose_nginx/docker-compose.yaml up -d 切换到任意目录 指定编排的文件(可绝对路径) 让容器跑起来 守护进程(从构建镜像到容器运行)
docker images 有两个镜像nginx和centos7
docker ps -a 有一个容器 并且启动了
cd /root/compose_nginx/
ls
有 wwwroot (是放nginx首页的 没往里写 可以写一个)
vim index.html
<h1>hello world</h1> (这段被容器站点加载,打开看到页面)
真机:http://20.0.0.10:1216 (访问的是容器内部的nginx,nginx用的是首页的数据卷)
自动编排OK
疑问 ifconfig多了 inet 172.18.0.2 一个网段
是docker-compose.yaml中的networks:下的adc(划分了一个子网空间 是)
11.28 networks重新创建了网段 名叫abc 隔离(实际上建立了新网桥)
看容器时哪个网段
docker ps –a
docker exec –it /bin/bash
yum –y install net-tools
ifconfig (容器是用的划分的新网段 创建网络 也安全)