首页 > 其他分享 >docker中的Dockerfile

docker中的Dockerfile

时间:2024-03-14 21:24:40浏览次数:29  
标签:RUN py zeng 镜像 docker Dockerfile

什么是Dockerfile

Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像

Dockerfile的命令

    FROM 基础镜像 	       #基于哪个基础镜像来构建
    MAINTAINER lqz 	     # 声明镜像的创建者
    ENV key value 	     # 设置环境变量 (可以写多条)
    RUN command 	     #是Dockerfile的核心部分(可以写多条)
    ADD source_dir/file dest_dir/file 	#将宿主机的文件复制到镜像内,如果是一个压缩文件,将会在复制后自动解压
    COPY source_dir/file dest_dir/file 	# 和ADD相似,但是如果有压缩文件并不能解压
    WORKDIR lqz 	# 设置工作目录,运行起这个容器,来到的路径就是这个路径
    
    RUN   # 启动并运行容器执行的命令

使用小案例

# 构建一个带vim的centos:7镜像,根路径下有/zeng/ss.py
# 创建Dockerfile文件
vim Dockerfile

# 书写以下内容
FROM centos:centos7
MAINTAINER zeng
ENV name zeng
RUN yum install vim -y
RUN mkdir /zeng
RUN touch /zeng/ss.py
RUN echo 'print(1)' > /zeng/ss.py
COPY ./aa.txt /zeng/aa.txt
WORKDIR /zeng

# 基于dockerfile构建镜像,不要忘了 .   基于当前路径下的Dockerfile 构建镜像
docker build -t='centos_zeng_vim' . 

# 基于这个镜像运行容器
docker images

# 进入到容器
docker run -id --name xx centos_zeng_vim

# 验证vim,和文件夹,文件是否存在
docker exec -it xx /bin/bash

# 案例2
FROM centos:centos7
MAINTAINER zeng
ENV name zeng
RUN mkdir /zeng
RUN touch /zeng/ss.py
RUN echo 'input()' > /zeng/ss.py
WORKDIR /zeng
CMD ['python' './ss.py'] # 运行容器时会默认加上 /bin/sh -c

# 基于dockerfile构建镜像,不要忘了 .   基于当前路径下的Dockerfile 构建镜像
docker build -t='centos_py' . 
docker images

# 基于这个镜像运行容器
docker run -id --name yy centos_py python /zeng/ss.py

# 进入到容器
docker exec -it yy /bin/bash
# 查看环境变量

# python看
os.environ.get('name')

# shell看
echo $name

常用和不常用命令

# https://zhuanlan.zhihu.com/p/419175543?utm_id=0

FROM: 指定基础镜像
RUN: 构建镜像过程中需要执行的命令。可以有多条。docker build
*CMD:添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改
*ENTRYPOINT:同CMD,但这个一定会被执行,不会被覆盖修改。
MLABELAINTAINER:表明镜像的作者。将被遗弃,被LABEL代替。
EXPOSE:设置对外暴露的端口。
*ENV:设置执行命令时的环境变量,并且在构建完成后,仍然生效
*ARG:设置只在构建过程中使用的环境变量,构建完成后,将消失
ADD:将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件
COPY:将本地文件或目录拷贝到镜像的文件系统中。
VOLUME:添加数据卷
USER:指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
WORKDIR:设置工作目录

标签:RUN,py,zeng,镜像,docker,Dockerfile
From: https://www.cnblogs.com/wellplayed/p/18073996

相关文章

  • 【Docker】-- 使用docker部署Springboot+vue项目到虚拟机
    虚拟机系统:CentOS7连接虚拟机工具:MobaXterm以下在安装好虚拟机和docker基础上操作。安装docker:【Docker】--如何安装docker-CSDN博客一、部署Mysql1、安装mysqldocker中执行:dockerrun-d\--namemysql\-p3306:3306\-eTZ=Asia/Shanghai\-eMYSQL_......
  • linux系统对于docker容器的监控
    容器监控容器监控原生命令操作问题容器监控三剑客CAdvisorInfluxDBGranfanacompose编排监控工具新建目录创建CIG.yml文件启动docker-compose测试容器监控CAdvisor+InfluxDB+Granfana原生命令操作dockerstats问题通过dockerstats命令可以很方便的看到当......
  • linux系统创建私有容器仓库和docker容器的资源限制
    私有仓库创建和资源限制创建私有仓库docker资源限制系统压力测试工具stresscpu资源限制限制CPUShare限制CPU核数CPU绑定mem资源限制限制IO创建私有仓库上传harbor压缩包解压下载docker-compose进入解压后的目录修改配置文件mvharbor.yml.tmplharbor.ymlv......
  • docker_03days
    迁移备份#镜像从哪来的?1dockerpull拉的2通过容器打包成镜像-centos镜像运行成容器---》装了vim-把装了vim的容器---》打包成镜像-以后拿到这个镜像--》再运行成容器,都会带vim命令3Dockerfile构建#容器保存为......
  • docker基础知识
    Docker容器基础介绍和操作-清白之年980410-博客园<linkrel="stylesheet"href="/css/blog-common.min.css?v=g-c5Yfdgh3oAoyQibjhmJ6ylVcBcMRHNIG6JkF70hpY"/><linkid="MainCss"rel="stylesheet"href="/skins/mountainink......
  • Linux下安装Docker
    Ubuntu安装Docker环境Ubuntu安装Docker环境的方法,在Linux服务器上运行docker用于开发测试通过Ubuntu自带的apt存储库在安装Docker引擎首次在新主机运行之前,需要更新Dockder存储库,然后你在存储库安装或更新Docker更新Dockerapt存储库sudoapt-getupdatesudoapt-......
  • 使用docker搭建kasm desktop
    Kasm是一种基于Docker的解决方案,它可以提供Web应用程序和桌面环境的即时访问。使用Kasm,你可以通过Web浏览器在任何设备上安全地访问应用程序和桌面环境。下面将详细介绍如何使用DockerCLI和DockerCompose两种方式搭建KasmDesktop,并解释每个参数的作用。使用DockerCLI搭......
  • 使用docker搭建mongodb
    使用DockerCLI搭建MongoDB1.运行MongoDB容器首先,我们使用以下命令来启动一个MongoDB容器:dockerrun-itd--namemongodb_comm-v$PWD/data:/data/db-p27017:27017mongo:4.4--auth参数解释:-itd:这三个参数通常一起使用,i表示交互式模式,t分配一个伪......
  • linux使用docker安装nexus
    nexus安装命令 拉取镜像dockerpulldocker.io/sonatype/nexus3修改目录权限chown-R200/data/maven-data/使用docker启动,挂载本地目录卷dockerrun-tid-p9081:8081--restart=always--namenexus-eNEXUS_CONTEXT=nexus-v/data/maven-data/:/nexus-datadoc......
  • oracle linux 9安装docker失败
    报错信息如下[root@CHEN~]#dockerrun-p3307:3306--namemysql8.0-eMYSQL_ROOT_PASSWORD=root-dmysql:8.0EmulateDockerCLIusingpodman.Create/etc/containers/nodockertoquietmsg.Error:netavark:unabletoappendrule'-d10.88.0.0/16-jACCEPT�......