dockerfile 的使用

1.先创建一个dockersfile

#当你写下FROM centos:7的时候,你就要想着,在这以后的每一步操作都是在centos 7系统镜像中进行的操作,
#你以前是怎么部署应用的,那么请按照你以前的步骤一步一步来就好。
FROM ubuntu:15.10
#声明镜像制作者
MAINTAINER yetongxue <yeli.studio@qq.com>
#设置时区
ENV TZ "Asia/Shanghai"

# 设置系统环境变量DOCKER_SRC
ENV DOCKER_SRC=mysite
# 设置系统环境变量DOCKER_HOME
ENV DOCKER_HOME=/root
# 设置系统环境变量DOCKER_PROJECT
ENV DOCKER_PROJECT=/root/project

#这句指令相当与:cd /root
WORKDIR $DOCKER_HOME
#紧接着在root目录下面创建了两个文件夹
RUN mkdir media static

#安装应用运行所需要的工具依赖pip,git好像没用上,mysql客户端,
#nc是一个网络工具,端口检测脚本wait-for-it.sh里面有使用这个软件
RUN yum -y install epel-release && \
    yum -y install python-pip && \
    yum -y install git nginx gcc gcc-c++ python-devel && yum -y install mysql && \ 
    yum -y install mysql-devel && yum install nc -y && yum clean all && \
    pip install --upgrade pip

# cd $DOCKER_PROJECT
WORKDIR $DOCKER_PROJECT
# . 表示当前目录,一是Dockerfile所在的目录,二是刚刚设置的DOCKER_PROJECT目录,
#这一步操作将会把项目中application目录下的所有文件拷贝到镜像目录DOCKER_PROJECT=/root/project下面
COPY ./ ./
#这一步安装python依赖软件django、Pillow、mysql-python、uwsgi、django-ckeditor。
#补充,-i 是修改pip源,默认的源速度很慢,经常卡在这里。
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
#暴露端口8000,到时候执行docker run 的时候才好把宿主机端口映射到8000
EXPOSE 8000
#赋予start_script执行权限
RUN chmod u+x start_script
#容器启动后要执行的命令
ENTRYPOINT ["./start_script"]

如何使用dockersfile 生成镜像,并跑容器

1.进入Dockerfile 所在目录

docker build -t  test:v1 .

#-t  打一个tage
#test:v1  镜像的 名称和  版本
# .  dockerfile 所在目录  .代表当前目录

2.查看生成的镜像

[root@192 haha]# docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test              v1                  8bafa1ec5a61        7 minutes ago       950 MB

3.使用镜像构建运行容器

[root@192 haha]# docker run -dit  -p 9001:9005 --name demo1 test:v1 



#-d: 后台运行容器,并返回容器ID;
#-i: 以交互模式运行容器,通常与 -t 同时使用;
#-p 端口
#9001对外暴露的端口
#9005 容器内部的端口
# --name  新容器的名称
# test:v1  使用的镜像

docker run :创建一个新的容器并运行一个命令

语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

  • -d: 后台运行容器,并返回容器ID;

  • -i: 以交互模式运行容器,通常与 -t 同时使用;

  • -P: 随机端口映射,容器内部端口随机映射到主机的高端口

  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • --name="nginx-lb": 为容器指定一个名称;

  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

  • -h "mars": 指定容器的hostname;

  • -e username="ritchie": 设置环境变量;

  • --env-file=[]: 从指定文件读入环境变量;

  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

  • -m :设置容器使用内存最大值;

  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container:<name|id> 四种类型;

  • --link=[]: 添加链接到另一个容器;

  • --expose=[]: 开放一个端口或一组端口;

  • --volume , -v: 绑定一个卷

实例

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。

docker run --name mynginx -d nginx:latest

使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。

docker run -P -d nginx:latest

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

docker run -p 80:80 -v /data:/data -d nginx:latest

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。

$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/#

 

4.查看容器运行状态

[root@192 haha]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
b517b9b84565        test:v1           "sh ./run_web.sh"        12 minutes ago      Exited (1) 12 minutes ago                       demo1

语法

docker ps [OPTIONS]

OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

     

  • --format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • --no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

列出最近创建的5个容器信息。

6查看容器的日志

[root@192 haha]# docker logs b517b9b84565

posted on 2019-12-24 14:55  王大拿  阅读(207)  评论(0)    收藏  举报

导航