首页 > 编程语言 >启动docker时候怎么向内部程序传入参数

启动docker时候怎么向内部程序传入参数

时间:2023-02-23 08:45:01浏览次数:48  
标签:py 传入 CMD ttt PARAMS 参数 docker python3

启动docker时候怎么向内部程序传入参数

 

启动docker的命令是docker run ******************

他有好多的参数,具体看 https://www.runoob.com/docker/docker-run-command.html,我们想要传参的话使用的是 -e 

需要注意的一点是docker run 命令后面内容的先后顺序,必须 一定 要把镜像名字放到最后!!!

举个例子 : docker run -it -d --name my_container -e PARAMS="我是参数"  my_image      # 橙色这些参数位置随意, 蓝色(即镜像名字一定放最后)

我们这里实现传参是通过环境变量实现的,这里的  -e PARAMS="我是参数" ,PARAMS是在Dockerfile中指定的

我举个简单的例子 ,  假设我要将tttt文件中的代码创建docker,tttt文件中有ttt.py文件(启动文件)  ,此时 Dockerfile需要与tttt文件夹在同一目录下

# ttt.py 如下

复制代码
from sys import argv
import os
if "__main__"==__name__:
    print(argv[1])
    print(type(argv[1]))
    print("Hello World!")
复制代码

# Dockerfile 如下:

复制代码
FROM docker.io/python:3.6MAINTAINER tianye
# 设置容器时间
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENV LANG C.UTF-8         # 设置编码
ENV PATH=$PATH:/usr/local/lib/python3.6/    
ENV PYTHONPATH $PATH     # 配置环境变量

ENV PARAMS=""      # 给我们要传的参数一个初始值

#代码添加到code文件夹
ADD ./tttt/ /test/code/tttt/
#设置code文件夹为工作目录
WORKDIR /test/code/tttt/
CMD python3 ttt.py $PARAMS
复制代码

# 创建镜像并启动容器

docker build -t my_image .
docker run -it -d --name my_container -e PARAMS="hahaha"  my_image  # my_image 放最后  这里hahaha 加不加引号 无所谓
docker logs -f --tail 200 my_container

Dockerfile中 最后一行 $PARAMS 会解析为一个变量获取其值,也就是 docker run传入的参数 "hahaha", 在python程序中通过 argv[1] 就可以获取到我们传入的"hahaha"  ! 

 

!!!需要注意的一点是Dockerfile 中CMD的用法,如果我们不传参那么写法有很多

如: CMD ["python3", "ttt.py"]     CMD [python3, ttt.py]     CMD "python3" "ttt.py"     CMD python3 ttt.py 都没问题

但是要传参的话:  我们的参数   $PARAMS  是万万不能用 " " 的,不然Dockerfile会认为是普通字符串

CMD ["python", "ttt.py", $PARAMS]        (×)    原因可能是字符串和变量放到一个列表时,字符串优先级高,直接将 $PARAMS当作一个字符串处理

CMD [python3, ttt.py, $PARAMS]      (×)    

CMD "python3" "ttt.py" $PARAMS    (√,推荐!) 

CMD python3 ttt.py $PARAMS    (√)

 

 

 

 

 

 

 

 CMD [] 形式,中括号中 必须用逗号分割;  如果不用中括号,不能用逗号分割! OK 结束!

 参考:https://blog.csdn.net/qq_38983728/article/details/98741935

   https://www.runoob.com/docker/docker-run-command.html

标签:py,传入,CMD,ttt,PARAMS,参数,docker,python3
From: https://www.cnblogs.com/mayongjie/p/17146636.html

相关文章

  • Docker 快速学习手册及相关笔记 附带一些问题解决方案
    参考与前言Docker官方教程【英文】:https://docs.docker.com/get-started/WindowsDocker安装|菜鸟教程(runoob.com)Docker教程|菜鸟教程Docker并非是一个......
  • docker 本地linux环境调试 .net 代码 —— debugging dockerized .NET core applicat
    原文:HowtoDebugDockerized.NETCoreAppsinVSCode(freecodecamp.org) vscoderundockercommand:dockerimagebuild--pull--file"C:\[path]/[projectN......
  • docker 部署oracle
    一、获取oracledocker-imagehttps://github.com/oracle/docker-imagesgitclonehttps://github.com/oracle/docker-images.git将oracle安装包放到对应的目录下面[ro......
  • Docker入门学习
    一、安装Docker(Linux)#1、yum包更新到最新yumupdate#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yuminstall......
  • docker run指定gpu运行
    要在dockerrun命令中指定GPU,您需要使用--gpus标志。例如,要在容器中使用所有可用的GPU,您可以运行以下命令:dockerrun--gpusallyour_image您还可以使用以下选......
  • golang WEB框架Hertz --- 获取参数
    安装Hertz命令行工具请确保您的Go版本在1.15及以上版本,笔者用的版本是1.18配置好GO的环境后,按照Hertz的命名行工具goinstallgithub.com/cloudwego/hertz/cmd/hz@lates......
  • centos7.6 k8s 1.23.2 docker version 23.0.1 init
      dockerpullregistry.aliyuncs.com/google_containers/kube-apiserver:v1.23.2kubeadminit--kubernetes-version=v1.23.2--image-repositoryregistry.aliyuncs......
  • ASEMI低压MOS管ASE50N03参数,ASE50N03封装
    编辑-ZASEMI低压MOS管ASE50N03参数:型号:ASE50N03漏极-源极电压(VDS):30V栅源电压(VGS):20V漏极电流(ID):50A功耗(PD):60W储存温度(Tstg):-55to150℃静态漏源导通电阻(RDS(ON)):5.8m......
  • 使用剩余参数完成不定长参函数定义 es6 230222
    需求定义一个方法接收任意多个参数返回它们的和技能点在形参前加上三个点可以让这个形参变成 数组这个数组可以接收无限多个数据我们可以在方法体中遍历数组进行想要的操作......
  • Android使用volley发送带参数的post请求
    用参数方式可以解决E/Volley: [777] BasicNetwork.performRequest: Unexpected response code 500 for XXXXX1、StringRequest: 2、JSONRequest:   简......