精华内容
下载资源
问答
  • 二、根据初始镜像启动容器,安装ananconda # 在这里使用 [-p 宿主机端口:容器端口] 来映射jupyter端口 docker run --name=gpu_test -p 9890:8888 -m 30000MB -d -it --gpus all nvidia/cuda:10.1-cudnn7-devel-...

    一、获取一个初始镜像

    我这里的镜像是需要GPU的,所以我用了这个镜像

    nvidia/cuda:10.1-cudnn7-devel-centos7

    二、根据初始镜像启动容器,安装ananconda

    # 在这里使用 [-p 宿主机端口:容器端口] 来映射jupyter端口
    docker run --name=gpu_test -p 9890:8888 -m 30000MB -d -it --gpus all nvidia/cuda:10.1-cudnn7-devel-centos7 '/bin/bash'
    
    # 进入容器后,安装anaconda
    
    # 1.下载anaconda(我需要的python版本是:3.6)
    wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh
    # 安装anaconda
    sh Anaconda3-5.2.0-Linux-x86_64.sh

     三、根据现有的容器保存镜像

    # 使用 [docker -ps] 查看刚才运行的那个容器的ID
    docker export -o gpu_jupyter.tar 容器ID
    
    # 把这个gpu_jupyter.tar 导入为镜像,这个(gpu:v_1.0是我随便写的,它代表生成镜像的tag)
    docker import gpu_jupyter.tar gpu/gpu_jupyter:v_1.0
    

    四、编写dockerfile

    这个一定要新建一个文件夹,名字随便。然后在文件夹内创建一个名为:Dockerfile 的文件,文件内容如下

    # 这个FROM指定基础镜像,也就是我上面写的gpu/gpu_jupyter:v_1.0
    FROM gpu/gpu_jupyter:v_1.0
    # 指定环境变量
    ENV PATH /data/anaconda/anaconda3/bin:$PATH
    
    # 指定工作路径
    WORKDIR /data/anaconda/work/
    # 启动jupyter
    ENTRYPOINT /data/anaconda/anaconda3/bin/jupyter notebook --ip=0.0.0.0 --allow-root

    五、执行创建镜像命令

    * 可千万别忘了最后那个点

    docker build -t gpu/gpu_jupyter_auto_start:v_1.0 .

    六、使用这个镜像创建容器

    docker run --name=gpu_jupyter_test -p 9890:8888 -d -it --gpus all gpu/gpu_jupyter_auto_start:v_1.0 '/bin/bash'

    七、参考&感谢

    http://www.lwqgj.cn/51.html

    https://www.cnblogs.com/panwenbin-logs/p/8007348.html

    展开全文
  • dockerfile启动多个服务

    2021-06-02 09:07:59
    dockerfile启动多个服务简介linux系统里面启动服务如下:Dockerfile内容如下:start.sh内容如下:制作镜像并启动 简介 通过用dockerfile来制作一个镜像启动多个服务的时候。出现了问题,容器启动,当start.sh启动脚本...

    简介

    通过用dockerfile来制作一个镜像启动多个服务的时候。出现了问题,容器启动后,当start.sh启动脚本执行结束后,发现容器退出运行了。之所以出现这个问题是因为你没有一个一直可以持续运行的前台进程,所以就导致了容器一启动后立马又退出了。然后尝试了好几种方法,发现都不适合我这个,如:在CMD [“bash”,"-c","./start.sh start && tail -f /dev/null"]里面加入tail -f /dev/null"来让他实时打印,发现不行。我的解决办法如下:

    linux系统里面启动服务如下:

    在这里插入图片描述
    apache-activemq-5.15.8文件内容如下:
    在这里插入图片描述
    UltraATUFileParseServer文件夹内容如下:
    在这里插入图片描述
    UltraATUUnzipServer文件夹内容如下:
    在这里插入图片描述
    UltraRemoreServer-GD文件夹内容如下:
    在这里插入图片描述

    Dockerfile内容如下:

    FROM centos
    
    MAINTAINER test@etonetech.com
    
    #在镜像/opt目录下面创建wrapper目录
    RUN mkdir /opt/wrapper
    RUN mkdir /opt/wrapper/apache-activemq-5.15.8
    RUN mkdir /opt/wrapper/UltraATUFileParseServer
    RUN mkdir /opt/wrapper/UltraATUUnzipServer
    RUN mkdir /opt/wrapper/UltraRemoreServer-GD
    
    #在镜像/data目录下创建数据存放路径
    RUN mkdir /data
    RUN mkdir /data/adtpapp
    RUN mkdir /data/adtpapp/atu
    RUN mkdir /data/adtpapp/atu/Dtlog
    RUN mkdir /data/adtpapp/atu/Eclog
    RUN mkdir /data/adtpapp/atu/UltraATUSqlldrServer
    RUN mkdir /data/adtpapp/atu/lteftpdir
    
    ADD ./jdk-8u172-linux-x64.tar.gz /usr/java
    #拷贝宿主机上的zip包至centos镜像里面的/opt/wrapper目录下面,
    #这样拷贝它不会将宿主机上的当前文件夹拷贝到镜像里面,只能拷贝文件夹里面的文件
    #所以要先在镜像里面创建对应的文件名,好像可以加参数-r来实现将当前文件夹也能拷贝过去 COPY -r 不过我没尝试过
    COPY ./apache-activemq-5.15.8 /opt/wrapper/apache-activemq-5.15.8
    COPY ./UltraATUFileParseServer /opt/wrapper/UltraATUFileParseServer
    COPY ./UltraATUUnzipServer /opt/wrapper/UltraATUUnzipServer
    COPY ./UltraRemoreServer-GD /opt/wrapper/UltraRemoreServer-GD
    COPY ./start.sh /opt/wrapper
    
    WORKDIR /opt/wrapper
    RUN chmod -x start.sh
    
    #启动服务
    #ENTRYPOINT ["sh","./start.sh"]
    #CMD ["bash","-c","./start.sh start && tail -f /dev/null"]
    CMD sh /opt/wrapper/start.sh
    
    
    

    start.sh内容如下:

    启动后缀带&表示这是一个后台服务,没有的表示这是一个前台服务(可以有多个后台服务运行,但是只能有一个前台服务运行),我这里让docker容器持续运行,有二种方法,一种是指定你项目中的一个日志文件进行实时输出日志信息,用tail -f就像我下面末尾写的那个,第二种是直接创建一个空文件,然后让用tail -f让他一直实时输出这个空文件,这样这个前台服务就会一直在运行,且容器就不会启动完成后自动退出了。

    #!/bin/bash
    
    sh /opt/wrapper/apache-activemq-5.15.8/bin/activemq start &
    #重新启动UltraATUFileParseServer服务
    #sh /opt/wrapper/UltraATUFileParseServer/bin/UltraATUFileParseServer status
    sh /opt/wrapper/UltraATUFileParseServer/bin/UltraATUFileParseServer start &
    #sh /opt/wrapper/UltraATUFileParseServer/bin/UltraATUFileParseServer stop
    #sh /opt/wrapper/UltraATUFileParseServer/bin/UltraATUFileParseServer restart
    #重新启动UltraATUUnzipServer服务
    #sh /opt/wrapper/UltraATUUnzipServer/bin/UltraATUUnzipServer status
    sh /opt/wrapper/UltraATUUnzipServer/bin/UltraATUUnzipServer start &
    #sh /opt/wrapper/UltraATUUnzipServer/bin/UltraATUUnzipServer stop
    #sh /opt/wrapper/UltraATUUnzipServer/bin/UltraATUUnzipServer restart
    #重新启动UltraRemoreServer服务
    #sh /opt/wrapper/UltraRemoreServer-GD/bin/UltraRemoreServer status
    sh /opt/wrapper/UltraRemoreServer-GD/bin/UltraRemoreServer start &
    #sh /opt/wrapper/UltraRemoreServer-GD/bin/UltraRemoreServer stop
    #sh /opt/wrapper/UltraRemoreServer-GD/bin/UltraRemoreServer restart
    
    #第一种实时打印项目里面的日志信息,其实二种方法一样,这里是让程序以前台服务来运行
    #tail -f /opt/wrappper/UltraATUFileParseServer/logs/upzip.txt
    #第二种创建一个空的
    touch /opt/a
    tail -f /opt/a
    
    

    制作镜像并启动

    然后docker build -t mydocker . 开始制作镜像,这里的.表示dockerfile文件的当前位置。
    在这里插入图片描述
    因为我的的dockerfile文件夹在wrapper文件夹里面而且又是在wrapper文件夹里面执行的这条命令,所以用.表示当前文件指定dockerfile文件位置就可以了。-t 是给自己制作的镜像取名。

    然后用docker images查看自己的镜像文件
    在这里插入图片描述
    注意:这里如果不用-d后台启动的话,程序会一直停留在里面,因为你有用tail -f它会一直显示你的a文件信息,因为你a文件什么也没有所以是空的,所以一直停留在里面不出来,你又不能执行其他操作,只能在重新启动一个xshell连接。
    在这里插入图片描述
    发现docker服务一直在运行,且容器里面的服务也启动了,想要的结果已经达到。
    好了,我的分享就到这里了,希望能对各位有帮助吧。

    展开全文
  • 使用Dockerfile启动容器

    2021-03-21 14:12:43
    文章目录前言一、首先准备好Dockerfile文件及所需的安装包和挂载的配置文件二、执行命令创建images三、启动容器四、查看容器是都正常启动总结 前言 使用docker默认镜像的时候,一个一个安装配置很不方便,使用...


    前言

    使用docker默认镜像的时候,一个一个安装配置很不方便,使用Dockerfile进行一键安装配置环境


    一、首先准备好Dockerfile文件及所需的安装包和挂载的配置文件

    在这里插入图片描述

    Dockerfile文件内容如下:

    FROM centos:8
    MAINTAINER hxf33558@163.com
    #安装相关工具
    #RUN apt-get update && apt-get install vim -y
    RUN yum update -y
    RUN yum -y install vim && yum -y install net-tools && yum -y install wget
    #安装arthas
    RUN mkdir /home/arthas && wget https://alibaba.github.io/arthas/arthas-boot.jar
    # 设置系统编码,不然web接口或日志中文会出现乱码
    ENV LANG C.UTF-8
    #工作目录
    WORKDIR /root
    #在/usr/local下创建jdk目录,用来存放jdk文件
    RUN mkdir /usr/local/jdk
    #在/usr/local/下创建tomcat目录,用来存放tomcat
    RUN mkdir /usr/local/tomcat
    #在/usr/local下创建maven目录,用来存放maven文件
    RUN mkdir /usr/local/maven
    ADD jdk-8u251-linux-x64.tar.gz /usr/local/jdk
    ADD apache-tomcat-9.0.36.tar.gz /usr/local/tomcat
    ADD apache-maven-3.6.3-bin.tar.gz /usr/local/maven
    
    #设置环境变量
    ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_251
    ENV JRE_HOME $JAVA_HOME/jre
    ENV CATALINA_HOME /usr/local/tomcat/apache-tomcat-9.0.36
    ENV MAVEN_HOME /usr/local/maven/apache-maven-3.6.3
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$MAVEN_HOME/bin
    #创建项目目录
    RUN mkdir /home/www && mkdir /home/www/file
    #maven的settings.xml
    COPY settings.xml /usr/local/maven/apache-maven-3.6.3/conf/
    #tomcat的server.xml
    COPY server.xml /usr/local/tomcat/apache-tomcat-9.0.36/conf/
    #拷贝项目到Tomcat的运行目录下
    #COPY /dockerproject/BJ-SBF-TZGL-0.0.1-SNAPSHOT.war /usr/local/tomcat/apache-tomcat-9.0.36/webapps
    #开启内部服务端口
    EXPOSE 8080
    #启动tomcat服务器
    #CMD ["./usr/local/tomcat/apache-tomcat-9.0.36/bin/catalina.sh","run"] 
    #执行start.sh并打印日志
    ENTRYPOINT /usr/local/tomcat/apache-tomcat-9.0.36/bin/startup.sh && tail -f /usr/local/tomcat/apache-tomcat-9.0.36/logs/catalina.out
    
    

    二、执行命令创建images

    (在Dockerfile所在的目录执行,webtomcat9 代表执行完的容器名称,这个 . 就代表当前目录)
    执行:docker build -t webtomcat9 .
    在这里插入图片描述

    三、启动容器

    准备一个shell启动脚本(为了方便,不准备也可以)
    webstart.sh

    #!/bin/sh
    echo "启动WEB环境容器-开始"
    docker run -d -p 8080:8080 --name webtomcat -v /home/docker/server/dockerproject:/usr/local/tomcat/apache-tomcat-9.0.36/webapps -v /home/docker/server/dockerprojectfile:/home/www/file --restart=always webtomcat9
    docker logs webtomcat
    echo "启动WEB环境容器-成功"
    

    执行启动脚本
    sh webstart.sh

    四、查看容器是都正常启动

    docker ps
    在这里插入图片描述docker logs webtomcat
    在这里插入图片描述至此,项目启动成功


    总结

    与大家分享,不足之处,请指正。

    展开全文
  • Dockerfile RUN 同时执行多条命令

    万次阅读 2017-02-08 15:24:30
    Dockerfile RUN 同时执行多条命令Dokcerfile中的命令每执行一条即产生一个新的镜像,当前命令总是在最新的镜像上执行。如下Dockerfile:RUN cd /usr/share/ngnix/html RUN npm install本来是想在/usr/share/nginx/...

    Dockerfile RUN 同时执行多条命令

    Dokcerfile中的命令每执行一条即产生一个新的镜像,当前命令总是在最新的镜像上执行。如下Dockerfile:

    RUN cd /usr/share/ngnix/html
    RUN npm install

    本来是想在/usr/share/nginx/html目录下执行npm install安装相关module的,但是第二条指令的执行目录并没有在我们希望的/usr/share/ngnix/html下,而是重新回到了/bin/sh根目录下执行。那么我们就必须得在同一条RUN指令中执行这两个命令,当然,也可以把相关目录直接拷贝到根目录下,不过这样会造成文件目录混乱,不建议使用这个办法。Dockerfile RUN同时执行多条命令格式如下所示:

    RUN /bin/sh -c 'cd /usr/share/nginx/html/ && npm install'

    要添加更多命令直接在后面添加&& your cmd即可。

    展开全文
  • Dockerfile启动多个服务

    千次阅读 2020-09-15 22:46:00
    docker run --name mycore -p 50001:50001 -p 50002:80 -d mycore docker使用entrypoint执行时报permission denied错误 在Dockerfile中使用指令ENTRYPOINT来执行项目下entrypoint.shshell文件,如下: ENTRYPOINT ...
  • Docker通过DockerFile启动rabbit带延迟队列(DLX)插件 本文使用的是3.7.26版本的RabbitMQ 编写DockerFile FROM rabbitmq:3.7.26-management COPY #{本机插件地址}/rabbitmq_delayed_message_exchange-20171201-...
  • Dockerfile 部署应用执行脚本文件

    千次阅读 2018-04-02 14:17:00
    FROM centos6.6:0.0.1 MAINTAINER syberos:wangmo RUN mv /etc/yum.repos.d/ /etc/yum.repos.d_bak/ && mkdir /etc/yum.repos.d ADD 102.repo /etc/yum.repos.d RUN yum clean all &......
  • Docker: 编写 dockerfile 启动 node.js 应用

    千次阅读 2019-01-18 21:58:34
    编写 Dockerfile 以 express 自动创建的目录为例,目录结构如下: ├── /bin │ └── www ├── /node_modules ├── /public ├── /routes ├── /views ├── package-lock.json ├── package.json ├...
  • Dockerfile文件 FROM mplat:1.0 COPY myproject /opt/myproject RUN chmod 777 /opt/myproject/start.sh EXPOSE 8080 WORKDIR /opt/myproject CMD ["bash","-c","./start.sh start && tail -f /dev/...
  • 1、报错:ImportError: cannot import name ‘cached_property’ from ‘werkzeug’ #安装更高级的版本 ...#在dockerfile中添加 RUN wget http://bootstrap.pypa.io/get-pip.py && python3 get-pip.py ...
  • Dockerfile执行命令

    千次阅读 2020-05-29 17:28:34
    3,CMD: 容器启动后执行默认的命令或参数 《1》RUN --构建时运行 RUN yum install -y vim #Shell命令格式 RUN ["yum","install","-y","vim"] #Exec命令格式,推荐使用这种方式 《2》ENTRYPOINT --启动...
  • /usr/local/bin:$PATH 测试是否安装成功 docker-compose --version 使用docker-compose安装mysql和tomcat 创建docker-compose.yml文件,编辑文件内容如下 常用命令(在docker-compose.yml同一目录下执行命令) 启动容器...
  • 本文讲述构建mysql镜像在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过Dockerfile和shell脚本实现这一过程。 详细步骤 1、首先...
  • Dockerfile

    2021-01-07 07:58:35
    博客内容传送门Dockerfile简介Docker制作jdk镜像 传送门 Docker入门 Docker数据卷 Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile ...利用镜像启动容器默认会执行的命令 Docker制作jdk
  • 这一段,我们在做项目的...否则,对于一个打包好的镜像,还得再startup里面执行catkin_make,这样造成的问题有2个:第一,浪费很多的时间,第二,可能会造成卡死(我们的gazebo开机启动后一直等待模拟无人机的dock...
  • dockerfile

    2017-09-01 10:46:18
    一般地,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动执行指令。 四部分: 指令 基础镜像信息 FROM 维护者信息 MAINTAINER 镜像操作指令 RUN、COPY、ADD、EXPOSE等 容器...
  • DockerFile

    2019-12-02 09:01:09
    Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像, 另外,使用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙 dockerfile基本结构 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,822
精华内容 13,928
关键字:

dockerfile启动后执行