4.dockerfile

Dockerfile pour créer un format miroir-Dockerfile

1. FROM    // Spécifiez sur quelle image de base est basée

Format FROM <nom de l'image> ou FROM <nom de l'image>: <label>

tel que

DES centos

FROM centos: dernier

2. MAINTAINER   // Spécifier les informations sur l'auteur

Format MAINTAIN <nom> 

tel que

MAINTAINER notre   [email protected]

3.    Instruction d'opération RUN // Mirror

Le format est RUN <commande> ou RUN ["executable", "param1", "param2"],

tel que

RUN yum installer httpd

RUN ["/ bin / bash", "-c", "echo bonjour"]

4. CMD   // Trois formats:

CMD ["exécutable", "param1", "param2"]

Commande CMD param1 param2

CMD ["param1", "param2"]

RUN et CMD se ressemblent, mais CMD est utilisé pour spécifier la commande utilisée au démarrage du conteneur, il ne peut y en avoir qu'une.

tel que

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

5. EXPOSER  

Le format est EXPOSE <port> [<port> ...], tel que

EXPOSER 22 80 8443

Ceci est utilisé pour spécifier le port à mapper. Par exemple, nous avons démarré sshd et nginx à l'intérieur du conteneur, nous devons donc exposer les ports 22 et 80. Cela doit fonctionner avec -P (majuscule), c'est-à-dire que lors du démarrage du conteneur, vous devez ajouter -P pour qu'il soit automatiquement attribué, et l'hôte attribuera automatiquement une adresse IP. Si vous souhaitez spécifier un port spécifique, vous pouvez également utiliser -p (minuscule) pour le spécifier.

6. ENV  

Formatez ENV <key> <valeur>, tel que  

CHEMIN ENV / usr / local / mysql / bin: $ PATH

Il s'agit principalement de fournir une variable d'environnement pour l'instruction RUN suivante, nous pouvons également définir certaines variables personnalisées

ENV MYSQL_version 5.6

7. AJOUTER  

Format ajouter <src> <dest>

Copiez un fichier ou un répertoire local dans un répertoire du conteneur. Où src est le chemin relatif du répertoire dans lequel se trouve le Dockerfile, il peut également s'agir d'une URL.

tel que

拷贝 AJOUTER <conf / vhosts> </ usr / local / nginx / conf>

AJOUTER une connexion URL

8. COPIER  

Le format est le même que pour ajouter

L'utilisation est la même que celle d'ajout, la différence est qu'elle ne prend pas en charge les URL

9. Le   format ENTRYPOINT est similaire à CMD

La commande à exécuter au démarrage du conteneur est très similaire à CMD et une seule prend effet. Si vous écrivez plusieurs commandes, seule la dernière prend effet.

La différence avec CMD est la suivante: CMD peut être écrasé par la commande d'exécution du docker, mais pas ENTRYPOINT.

Par exemple, le nom du conteneur est aming

Nous spécifions le CMD suivant dans le Dockerfile:

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

La commande pour démarrer le conteneur est docker run aming Cela produira un test

Si la commande pour démarrer le conteneur est docker run -it aming / bin / bash, rien ne sera affiché

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


Je suppose que tu aimes

Origine blog.51cto.com/12922638/2595876
conseillé
Classement