docker使用---2:dockerfile

# docker基础命令
# 下载基础镜像 docker pull centos
# 创建并启动进入shell docker run --name xxx -it images:tag bash 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# docker run 常用参数 -v:绑定一个卷 --net:指定容器的网络连接类型,默认bridge --shm-size :设置 /dev/shm 的大小,默认值是 64M
# 启动 docker start ID
# 关闭 docker stop ID
# 进入docker环境shell docker exec -it ID /bin/bash
# 查看容器 docker ps -all
# 删除容器 docker rm ID
# 查看镜像 docker images
# 删除镜像 docker rmi ID

# dockerfile基础命令
# FROM 指令用于设置在新映像创建过程期间将使用的容器映像。
# RUN 指令指定将要运行并捕获到新容器映像中的命令。 这些命令包括安装软件、创建文件和目录,以及创建环境配置等。
# COPY 指令将文件和目录复制到容器的文件系统。文件和目录需位于相对于 Dockerfile 的路径中。
# ADD 指令与 COPY 指令非常类似,但它包含更多功能。除了将文件从主机复制到容器映像,ADD 指令还可以使用 URL 规范从远程位置复制文件。
# WORKDIR 指令用于为其他 Dockerfile 指令(如 RUN、CMD)设置一个工作目录,并且还设置用于运行容器映像实例的工作目录。
# CMD指令用于设置部署容器映像的实例时要运行的默认命令。例如,如果该容器将承载 NGINX Web 服务器,则 CMD 可能包括用于启动Web服务器的指令,如 nginx.exe。 如果 Dockerfile 中指定了多个CMD 指令,只会计算最后一个指令。
# ENTRYPOINT 配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。
# ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。
# EXPOSE用来指定端口,使容器内的应用可以通过端口和外界交互。(该映射端口号并无法实现真正的映射,需要在执行run 设置端口)
#dckerFile启动 docker build -f /usr/local/docker_file/Dockerfile -t centos7/python2.7.15:v1 .
#docker build 最后的.是指定镜像构建过程中上下文环境的目录
#docker容器导出为镜像 docker commit container_name image_name:tag
#docker上传镜像docker push image_name

# nginx 使用
# nginx 启动 /usr/local/nginx/sbin/nginx
# nginx 关闭 /usr/local/nginx/sbin/nginx -s stop
# nginx 重启(需要nginx处于运行状态,一般在修改了配置文件后使用) /usr/local/nginx/sbin/nginx -s reload




FROM docker.io/centos:7

MAINTAINER FCJ
MAINTAINER xxxx@qq.com

# 源码安装python2.7.15
# 安装路径:/usr/local/python2.7.15
# 1.1:安装Python2.7.15环境(mini环境没有安装make需要手动安装),先删除自带的python软连接,新增2.7.15软连接,修改yum中的Python地址到python2(该python是原有python版本)
# 1.2: 并将python默认版本更换为2.7.15
# 1.3: python默认版本修改后会导致yum不可用,需要修改/ur/bin/yum和/usr/libexec/urlgrabber-ext-down的python版本为原版本
# 源码安装nginx-1.16.1
# 安装路径:/usr/local/nginx1.16.1
RUN echo "---------- 1:install python env -----------" &&
yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel &&
yum -y install gcc gcc-c++ automake autoconf libtool make wget &&
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz -P /tmp &&
tar -zxvf /tmp/Python-2.7.15.tgz -C /tmp/ &&
mkdir /usr/local/python2.7.15 &&
cd tmp/Python-2.7.15 &&
./configure --enable-optimizations --prefix=/usr/local/python2.7.15 && make && make install &&
unlink /usr/bin/python &&
ln -s /usr/local/python2.7.15/bin/python /usr/bin/python &&
sed -i '1c#!/usr/bin/python2' /usr/bin/yum &&
sed -i '1c#!/usr/bin/python2' /usr/libexec/urlgrabber-ext-down &&
echo "---------- end install python env -----------" &&
echo "---------- 2:install pip -----------" &&
wget https://bootstrap.pypa.io/get-pip.py -P /tmp
python /tmp/get-pip.py
ln -s /usr/local/python2.7.15/bin/pip /usr/bin/pip
echo "---------- end install pip -----------" &&
echo "---------- 3:install uwsgi -----------" &&
pip install uwsgi
ln -s /usr/local/python2.7.15/bin/uwsgi /usr/bin/uwsgi
echo "---------- end install uwsgi -----------" &&
e cho "---------- 3: install nginx ----------" &&
wget http://nginx.org/download/nginx-1.9.9.tar.gz -P /tmp
tar -zxvf /tmp/nginx-1.9.9.tar.gz -C /tmp
cd /tmp/nginx-1.9.9
./configure --prefix=/usr/local/nginx && make && make install &&
echo "---------- end install nginx ----------"

EXPOSE 8090
原文地址:https://www.cnblogs.com/fuchenjie/p/12675458.html