dockerfile 说明

1、FROM scratch 表示 从头 build 一个image
2、FROM centos:7 表示通过centos7 build一个image(通过官方的base image 构建一个新的image)

LABEL:定义dockerfile 中的 metadata。
LABEL maintainer =“谁谁 作者”
LABEL version=“1.0”
LABEL description=“this is demo image”

RUN yum update && yum instal -y vim
python-dev
&& 将多个命令合并成一行, 反斜杠\表示回行。
WORKDIR :设定当前工作目录
WORKDIR /root
WORKDIR /test # 如果没有此test 目录则自动创建
WORKDIR myDIR
RUN PWD 输出结果为:/test/myDIR
(注意:请尽量使用绝对路径)

ADD 和 COPY
主要用于:将本地文件添加或者copy到docker image 目录中。
add 可以添加文件到指定目录,或者解压缩。

ADD hello / 表示:将hello 这个文件 添加到 docekr image 目录中
ADD demo.tar.gz 表示:添加到image 根目录 并且解压

WORKDIR /root
ADD hello demo/ 表示/root/demo/hello

WORKDIR /root
COPY hello test/

add 和copy 是将本地文件添加到 docker image 中
如果是远程文件或者目录 那么需要使用 run curl 或者 run wget

ENV :表示环境变量 (environment)
例子:
ENV MYSQL_Version 5.8
run yum install -y mysql-server=“${MYSQL_Version}”
&& rm -rf /var/lib/apt/lists/*

尽量使用 环境变量 ,在docker file

VOLUME 和 EXPOSE
存储 和网络

CMD and ENTRYPOINT and run
RUN:执行名利并创建新的image layer
CMD:设置容器启动后默认执行的命令和参数
ENTRYPOINT:设置容器启动时运行的命

docker github image
https://github.com/docker-library

dockerfile 官方说明文档:
https://docs.docker.com/engine/reference/builder/

Shell 和 exce 方式

shell format

RUN  yum install -y vim
CMD echo "hello docker"
Entrypoint echo "hello docker"

exec 格式
run [“yum” ,“install” ,“-y”,“vim”]
cmd [“/bin/echo”,“hello docker”]
entrypoint [“/bin/echo”,“hello docker”]

dockerfile1
FROM centos
ENV name docker

1、创建Dockerfile (注意 D大写)

FROM centos
ENV name mydocker
ENTRYPOINT echo “hello $name”
2.运行 docker build
docker build -t 某某/sdfadsf .
3. 执行 docker run
docker run 某某/sdfadsf
将会输出:hello mydocker

指定dockerfile 路径文件
docker build -t myapp:dev -f Dockerfile-prod myapp/
myapp :表示:REPOSITORY
dev :表示tag
FROM centos
ENV name mydockerfiledev
ENTRYPOINT [“/bin/bash”,“-c”,“echo hello $name”]
[“/bin/bash” 表示要执行的bash路径
“-c” 指定参数
,“echo”,"hello n a m e " ] :具体参数输出: [ v a g r a n t @ 10 d o c k e r d e m o ] name"] :具体参数 输出:[vagrant@10 dockerdemo] name"]:具体参数输出:[vagrant@10dockerdemo] docker run myapp:dev
hello mydockerfiledev

CMD
1.容器启时默认执行的命令
2.如果docker run 指定了其他命令,CMD 命令被忽略
3.如果定义了多个cmd,只有最后一个会执行。
example:
FROM centos
ENV name DockermyCmd
CMD echo “hello $name”
CMD echo “hello $name second cmd”
命令:docker run -it myapp:dev /bin/bash
会不输入任何内容,因为:指定执行了。/bin/bash
ENTRYPOINT
1.容器以应用程序或者服务的形式运行
2.不会忽略,一定会执行
3.最好的方式:写一个shell脚本作为ENTRYPOINT
copy docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT [“docker-entrypoint.sh”]
EXPOSE 23ss
CMD [“mogodb”]

删除所有运行过的container
docker rm $(docker ps -qa)

安装 python pip 尝试多种方式不成功
此方法成功 python2.7.5
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py

python get-pip.py

Dockerfile

FROM python:2.7
LABEL maintainer=“wentr@1341.com”
RUN pip install flask
COPY app.py /app/
WORKDIR /app
EXPOSE 5000
CMD [“python”,“app.py”]

运行:docker run -d bd1db720e132 ;-d 表示后台服务运行

进入container 中:docker exec -it badc9c8b5aeb /bin/bash

正在运行的container 的ip :docker exec -it badc9c8b5aeb ip a

停止运行的container :docker container stop

日志:docker log id

查看运行进程:ps -ef | grep python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dockerfile是一个文本文件,其中包含用于构建Docker镜像的指令和配置。使用Dockerfile可以自动化构建和部署Docker镜像,确保每个环境中运行的应用程序具有相同的配置和依赖项。 以下是一个基本的Dockerfile示例: ``` # 基础镜像 FROM ubuntu:latest # 作者信息 MAINTAINER Your Name <your.email@example.com> # 更新APT源并安装依赖 RUN apt-get update && \ apt-get install -y python3 python3-pip # 将项目文件复制到容器中 COPY . /app # 设置工作目录 WORKDIR /app # 安装依赖 RUN pip3 install -r requirements.txt # 设置容器启动时执行的命令 CMD ["python3", "app.py"] ``` 使用Dockerfile构建镜像的步骤如下: 1. 在Dockerfile所在的目录中创建一个名为“Dockerfile”的文件。 2. 编写Dockerfile,包括FROM、MAINTAINER、RUN、COPY、WORKDIR、CMD等指令。 3. 使用docker build命令构建镜像,例如: ``` docker build -t myimage:latest . ``` 这里的“myimage”是镜像的名称,“latest”是标签,“.”表示Dockerfile所在的当前目录。 4. 运行构建的镜像: ``` docker run -it --rm myimage ``` 这里的“-it”表示交互模式,“--rm”表示容器停止后自动删除,“myimage”是构建的镜像的名称。 注意事项: - Dockerfile中的每个指令都会生成一个新的镜像层,因此应尽量避免在一个指令中执行多个操作。 - 使用“COPY”指令将应用程序文件复制到容器中时,应仅复制必需的文件,以减小镜像的大小。 - 在构建镜像时,可以使用“--no-cache”选项来禁止使用缓存,以确保使用最新的代码和依赖项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值