4.dockerfile

Dockerfile para crear un formato espejo-Dockerfile

1. FROM    // Especifique en qué imagen base se basa

Formato FROM <nombre del espejo> o FROM <nombre del espejo>: <etiqueta>

como

DESDE centos

DESDE centos: último

2. MAINTAINER   // Especifique la información del autor

Formatear MAINTAIN <nombre> 

como

MANTENIMIENTO nuestro   [email protected]

3. RUN    // Instrucción de operación espejo

El formato es RUN <comando> o RUN ["ejecutable", "param1", "param2"],

como

EJECUTAR yum instalar httpd

EJECUTAR ["/ bin / bash", "-c", "echo hola"]

4. CMD   // Tres formatos:

CMD ["ejecutable", "param1", "param2"]

Comando CMD param1 param2

CMD ["param1", "param2"]

RUN y CMD se parecen, pero CMD se usa para especificar el comando que se usa cuando se inicia el contenedor; solo puede haber uno.

como

CMD ["/ bin / bash", "/ usr / local / nginx / sbin / nginx", "-c", "/usr/local/nginx/conf/nginx.conf"]

5. EXPONER  

El formato es EXPOSE <puerto> [<puerto> ...], como

EXPONER 22 80 8443

Esto se usa para especificar el puerto que se asignará. Por ejemplo, hemos iniciado sshd y nginx dentro del contenedor, por lo que necesitamos exponer los puertos 22 y 80. Esto debe funcionar con -P (mayúscula), es decir, al iniciar el contenedor, debe agregar -P para que se asigne automáticamente, y el host asignará automáticamente una IP. Si desea especificar un puerto específico, también puede usar -p (minúsculas) para especificar.

6. ENV  

Formatee ENV <clave> <valor>, como  

RUTA ENV / usr / local / mysql / bin: $ RUTA

Es principalmente para proporcionar una variable de entorno para la instrucción RUN posterior, también podemos definir algunas variables personalizadas

ENV MYSQL_version 5.6

7. AÑADIR  

Formatear agregar <src> <dest>

Copie un archivo o directorio local en un directorio del contenedor. Donde src es la ruta relativa del directorio donde se encuentra el Dockerfile, también puede ser una URL.

como

拷贝 AÑADIR <conf / vhosts> </ usr / local / nginx / conf>

AÑADIR conexión de URL

8. COPIA  

El formato es el mismo que agregar

El uso es el mismo que add, la diferencia es que no admite url

9. El   formato ENTRYPOINT es similar a CMD

El comando a ejecutar cuando se inicia el contenedor es muy similar a CMD, y solo uno entra en vigor, si escribe varios comandos, solo el último entra en vigor.

La diferencia con CMD es: CMD se puede sobrescribir mediante el comando docker run, pero ENTRYPOINT no.

Por ejemplo, el nombre del contenedor es aming

Especificamos la siguiente CMD en el Dockerfile:

CMD ["/ bin / echo", "prueba"]

El comando para iniciar el contenedor es docker run aming Esto generará una prueba

Si el comando para iniciar el contenedor es docker run -it aming / bin / bash, no se generará nada

ENTRYPOINT不会被覆盖,而且会比CMD或者docker run指定的命令要靠前执行

ENTRYPOINT ["echo", "test"]

docker run -it aming  123

则会输出 test  123 ,这相当于要执行命令  echo test  123 

10. VOLUME

格式  VOLUME ["/data"]

创建一个可以从本地主机或其他容器挂载的挂载点。

11. USER  

格式 USER daemon

指定运行容器的用户

12. WORKDIR  

格式 WORKDIR  /path/to/workdir

指定当前工作目录,相当于cd命令

为后续的RUN、CMD或者ENTRYPOINT指定工作目录


Dockerfile创建镜像 – Dockerfile示例

先下载nginx的配置文件

wget http://www.apelearn.com/study_v2/.nginx_conf

vim Dockerfile //内容如下

## Set the base image to CentOS
FROM centos
# File Author / Maintainer
MAINTAINER aming [email protected]
# Install necessary tools
RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel
# Install Nginx
ADD http://nginx.org/download/nginx-1.8.0.tar.gz .
RUN tar zxvf nginx-1.8.0.tar.gz
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.8.0 && ./configure --prefix=/usr/local/nginx && make && make install
RUN rm -fv /usr/local/nginx/conf/nginx.conf
COPY .nginx_conf /usr/local/nginx/conf/nginx.conf或者ADD http://www.apelearn.com/study_v2/.nginx_conf /usr/local/nginx/conf/nginx.conf
# Expose ports
EXPOSE 80
# Set the default command to execute when creating a new container
ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /etc/passwd


创建镜像:

docker build -t centos_nginx  .

❶ docker build:用于使用Dockerfile创建镜像,其实就是去找Dockerfile

❷ -t指定新镜像的名字

❸ 后边这个点意思是当前路径,指的是刚才编辑的Dockerfile的路径,指定路径build就回去这个路径下找dockerfile

docker  images //可以看到我们新建的镜像

启动一下刚刚Dockerfile创建完的镜像并映射8088端口

docker run -itd -p 8088:80 centos_nginx bash


用Docker compose部署服务

docker compose可以方便我们快捷高效地管理容器的启动、停止、重启等操作,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像、数据卷、网络模式、监听端口等信息。我们可以在一个compose文件中定义一个多容器的应用(比如jumpserver),然后通过该compose来启动这个应用。

安装compose方法如下

下载最新的compose

curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

给权限

chmod 755 /usr/local/bin/docker-compose

docker-compose version 查看版本信息

[root@localhost ~]# docker-compose version
docker-compose version 1.17.0-rc1, build a0f95af
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)从1.6.0以后就是2版本了。Version 2支持更多的指令。Version 1没有声明版本默认是"version 1"。Version 1将来会被弃用。


用Docker compose部署服务 – 示例

vim docker-compose.yml //加入以下内容

version: "2"
services:
  app1://第一个容器的名字
    image: centos_nginx//对应的镜像
    ports://就是你要映射的端口-p
      - "8080:80"
    networks://使用哪个网络(在下边driver处定义,不定义默认就是bridge)
      - "net1"
    volumes://目录映射-v//下边是本地的目录和容器的目录做映射,如果只写一个data那他就是一个数据卷,用来做分享
      - /data/:/data
  app2:第二个容器名字
    image: centos_with_nettool//对应的镜像
    networks:
      - "net2"
    volumes:
      - /data/:/data1
    entrypoint: tail -f /etc/passwd//为了让容器一直启动,上边镜像不加是因为他是用Dockerfile创建的镜像,他里边就有一个这样的语句。
networks:
  net1:
    driver: bridge
  net2:
    driver: bridge

docker-compose up -d 启动容器

docker-compose stop关闭

docker-compose ps 查看启动镜像

docker-compose 删除镜像

docker-compose --help 查看使用方法

关于docker-compose语法的参考文档 http://www.web3.xin/index/article/182.html


Supongo que te gusta

Origin blog.51cto.com/12922638/2595876
Recomendado
Clasificación