Dockerfile使用

[TOC]

Dockerfile指令

FROM 指定基础镜像

1
FROM centos:centos7.5.1804

from是指定基础镜像,因此dockerfile中FROM是必备指令,必须是第一条指令。

MAINTAINER 指令

1
2
# 维护者信息
MAINTAINER morey88516@gmail.com

RUN 指令 docker容器中运行命令

1
RUN yum install -y gcc gcc-c++ autoconf automake libtool make zlib* libffi-devel

COPY指令 即复制上下文目录 也就是Dockerfile所在的目录中

1
2
3
# Dockerfile文件同目录下(上下文目录) 
# 将python包拷贝到容器目录的 /usr/local/src
COPY Python-3.8.2.tgz /usr/local/src

WORKDIR指令 容器中工作目录 类似于cd

1
2
# 切换目录
WORKDIR /usr/local/src

ENV 设置容器环境变量

1
2
# python3.8/bin目录的下的命令 设置为容器环境变量 
ENV PATH /usr/local/python3.8/bin:$PATH

ADD 指令 添加上下文目录 也就是Dockerfile所在的目录中 文件(hello.py)至容器

1
ADD hello.py /usr/local/script            #容器中的路径 /usr/local/script
docker指令

拉取镜像

1
docker pull python:3.8.2

查看镜像

1
docker images 

运行容器

1
docker start 

后台运行容器 -d 指定容器运行模式

1
docker run -itd --name python:3.8.2 /bin/bash

启动容器 并已命令行方式进入容器

1
docker run -it python:3.8.2 /bin/bash

查看已在运行的容器

1
docker ps -a 

删除容器 -f 强制删除镜像

1
2
docker images
docker rmi -f 镜像id

删除容器进程

1
2
docker ps -a 
docker rm 容器id

docker清理dockerfile构建后缓存

1
docker system prune --volumes

将文件拷贝到容器中 容器id:6a5fadd3fe5b

1
2
# 确保已登录进容器 注意容器id是否正确
docker cp /Downloads/chromedriver_linux64.zip 6a5fadd3fe5b:/usr/local/script

将容器中的文件拷贝出来到主机上 容器id:736e09bc1479

1
2
# 在主机上执行 不是容器中
docker cp 736e09bc1479:/usr/locals/script/screenshot.png /opt/

构建镜像,在Dockerfile文件所在目录执行

1
docker build -t nginx:v1 .

运行构建的自定义镜像

1
docker run -d --name cloudewise -v /usr/local/script:/usr/local/script cloudewise:v1

基于shell的自定义镜像运行 用于程序测试

1
docker run cloudewise:v1 /bin/sh -c "python3 /usr/local/script/hello.py"
Dockerfile实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Version 0.1
# 基础镜像
FROM centos:centos7.5.1804

# 维护者信息
MAINTAINER morey88516@gmail.com

# 系统编译依赖软件
RUN yum install -y gcc gcc-c++ autoconf automake libtool make zlib* libffi-devel

# 定制化编译安装python3.8至镜像
COPY Python-3.8.2.tgz /usr/local/src
WORKDIR /usr/local/src
RUN tar -xf Python-3.8.2.tgz
WORKDIR Python-3.8.2
RUN ./configure --prefix=/usr/local/python3.8 && make && make install
ENV PATH /usr/local/python3.8/bin:$PATH
RUN python3 -m pip install --upgrade pip

# 创建工作目录
RUN mkdir /usr/local/script
# 将 程序文件 pip依赖文件 复制到工作目录
ADD requirements.txt /usr/local/script
ADD hello.py /usr/local/script
# 程序依赖库 添加进镜像
RUN pip3 install openpyxl python-telegram-bot selenium==4.7.2
# 拉取excel文件存放位置
VOLUME /usr/local/script
# 切换至工作目录
WORKDIR /usr/local/script
# 测试python程序
CMD ["python3", "hello.py"]

Dockerfile使用
https://moreylee.github.io/2023/01/31/Dockerfile使用/
作者
morey
发布于
2023年1月31日
许可协议