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.还需三个配置文件
![](https://img.haomeiwen.com/i18915598/8635143ca8876248.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 web01lb ---> 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
网友评论