美文网首页docker
02-自动构建镜像

02-自动构建镜像

作者: UncleZ_strive | 来源:发表于2019-12-09 13:16 被阅读0次

1.dockerfile自动构建docker镜像

类似ansible剧本,大小几kb 手动做镜像:大小几百M+
dockerfile 支持自定义容器的初始命令
dockerfile主要组成部分:​ 基础镜像信息 FROM centos:6.9​ 制作镜像操作指令 RUN yum install openssh-server -y​ 容器启动时执行初始命令 CMD ["/bin/bash"] dockerfile常用指令:

FROM  这个镜像的妈妈是谁?(指定基础镜像)
MAINTAINER 告诉别人,谁负责养它?(指定维护者信息,可以没有)
LABLE      描述,标签
RUN 你想让它干啥(在命令前面加上RUN即可)
ADD 给它点创业资金(会自动解压tar)  制作docker基础的系统镜像
WORKDIR 我是cd,今天刚化了妆(设置当前工作目录)
VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)
EXPOSE 它要打开的门是啥(指定对外的端口)(-P 随机端口)
CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换)
dockerfile其他指令: 
COPY 复制文件(不会解压)rootfs.tar.gz
ENV  环境变量(密码,其他信息)
ENTRYPOINT  容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数)
基于centos6.9构建nginx镜像
[root@docker01 kod]# cat ../nginx_dockerfile/dockerfile 
FROM centos:6.9

RUN echo "192.168.37.200 mirrors.aliyun.com" >>/etc/hosts
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
RUN yum install nginx -y
WORKDIR /usr/share/nginx/html
ADD xiaoniao .
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

基于nginx镜像构建可道云

1.编写dockerfile

[root@docker01 kod]# cat dockerfile 
FROM centos6.9_nginx:v1

RUN echo "192.168.37.200 mirrors.aliyun.com" >>/etc/hosts
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

RUN yum install nginx php-fpm php-gd php-mbstring unzip -y
ADD www.conf /etc/php-fpm.d/www.conf
RUN rm -f /etc/nginx/conf.d/*
ADD kod.conf /etc/nginx/conf.d/kod.conf
ADD init.sh /init.sh

RUN mkdir /html
WORKDIR /html
RUN curl -o  kod.zip http://192.168.37.200/191127/kodexplorer4.40.zip
RUN unzip kod.zip 
RUN chown -R nginx:nginx /html
EXPOSE 80
CMD ["/bin/bash","/init.sh"]

2.还需三个配置文件


image.png
[root@docker01 kod]# cat init.sh 
#!/bin/bash
service php-fpm start
nginx -g 'daemon off;'

2:docker-compose(单机版的容器编排工具)

ansible剧本 yml
yum install -y docker-compose(需要epel源)
cd my_wordpress/ vi docker-compose.yml

[root@docker01 zabbix]# cat docker-compose.yml 
version: '3'

services:
   mysql-server:
     image: mysql:5.7
     restart: always
     command: --character-set-server=utf8 --collation-server=utf8_bin
     environment:
       MYSQL_ROOT_PASSWORD: root_pwd
       MYSQL_DATABASE: zabbix
       MYSQL_USER: zabbix
       MYSQL_PASSWORD: zabbix_pwd
   
   zabbix-java-gateway:
     image: zabbix/zabbix-java-gateway:latest
     restart: always 

   zabbix-server:
     depends_on:
       - mysql-server
       - zabbix-java-gateway
     image: zabbix/zabbix-server-mysql:latest
     ports:
       - "10051:10051"
     restart: always
     environment:
       DB_SERVER_HOST: mysql-server 
       MYSQL_DATABASE: zabbix 
       MYSQL_USER: zabbix 
       MYSQL_PASSWORD: zabbix_pwd 
       MYSQL_ROOT_PASSWORD: root_pwd 
       ZBX_JAVAGATEWAY: zabbix-java-gateway 

   zabbix-web:
     depends_on:
       - mysql-server
       - zabbix-server
     image: zabbix/zabbix-web-nginx-mysql:latest
     ports:
       - "80:80"
     restart: always
     environment:
       DB_SERVER_HOST: mysql-server 
       MYSQL_DATABASE: zabbix 
       MYSQL_USER: zabbix 
       MYSQL_PASSWORD: zabbix_pwd 
       MYSQL_ROOT_PASSWORD: root_pwd 

直接在目录下执行
docker-compose up 启动容器
docker-compose down 停止容器并删除
docker-compose stop 停止容器
docker-compose start 启动容器
docker-compose restart 重启容器

3.容器间的互联(--link 是单方向的!!!)

docker run -d -p 80:80 nginx​
docker run -it --link quirky_brown:web01 qstack/centos-ssh /bin/bash​
ping web01​lb ---> nginx 172.17.0.4 --> db01 172.17.0.3​ --> nfs01 172.17.0.2​
使用docker运行zabbix-server

docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -d mysql:5.7 \
      --character-set-server=utf8 --collation-server=utf8_bin

docker run --name zabbix-java-gateway -t \
      -d zabbix/zabbix-java-gateway:latest

docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:latest

docker run --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

相关文章

网友评论

    本文标题:02-自动构建镜像

    本文链接:https://www.haomeiwen.com/subject/ijrrgctx.html