上篇中我们以一个非常的例子简述了下docker给我们带来的便利。然而尽管如此,但docker那些镜像能提供的服务毕竟是纯粹的,我们在做项目的过程中不免用到各种不同的服务、扩展包或组件等。
因此,基于docker 我们会面临以下两种情况:一种是须在某个镜像的基础上安装其他服务或者扩展包;一种是须集合多个镜像的服务。对于第一种情况,建议使用dockerfile文件;第二种情况,建议使用docker-compose。接下来将简单介绍下另外两个docker相关神器:dockerfile和docker-compose。
一、Dockerfile:
1、定义:是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。
2、解释:当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,Docker程序在读取Dockerfile时,将这些指令翻译成真正的linux指令, 然后生成定制的image。dockerfile指令见:http://www.docker.org.cn/article/114.html
3、举例:
FROM nginx:1.9 MAINTAINER dockerADD nginx.conf /etc/nginx/nginx.conf ADD conf.d/* /etc/nginx/conf.d/ RUN mkdir -p /var/www/static RUN apt-get -y update RUN apt-get -y install python-pip RUN apt-get -y install vim RUN apt-get -y install cron
RUN mkdir -p /search/nginx ADD . /search/nginx WORKDIR /search/nginx RUN crontab rotlog_crontab
该dockerfile是在镜像nginx:1.9的基础上,修改原始配置文件和服务配置文件,同时安装pip、vim、cron组件、并配置好crontab运行的任务。
二、Docker-compose:
1、定义:Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application’s services. Then, using a single command, you create and start all the services from your configuration.
2、解释:compose 是被用来运行多个容器的docker应用,通过compose,你可以用compose 文件配置你的各种应用服务,然后,通过运行一条指令,你可以以你的配置创建和启动所有服务。
3、安装:pip install docker-compose
4、举例:
version: '2'
services:
ngx:
build: nginx(nginx为生成ngx镜像的dockerfile所在相对路径)
image: ngx:latest
ports:
- "8016:8006"
command: /bin/bash -c "nginx -g 'daemon off;'"
volumes_from:
- web
links:
- web:search_web
depends_on:
- web
web:
build: .
image: base:latest
working_dir: /search/search
volumes:
- .:/search
command:
gunicorn -c guni.conf search.wsgi:application
links:
- redis:search_redis
- mysql:search_mysql
depends_on:
- redis
- mysql
redis:
ports:
- "6378:6379"
image: redis
command: redis-server --appendonly yes
mysql:
ports:
- "33061:3306"
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=passwdissearch
- MYSQL_DATABASE=search
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci该docker-compose文件创建了一个使用mysql、redis、nginx服务的python web服务。
5、运行:最简洁的指令:docker-compose up(需在docker-compose文件所在目录执行)。如需使用参数,可以通过使用帮助指令:docker-compose --help 进行查看。
Copyright © 2021.aoyanming个人博客站
发表评论