zoukankan      html  css  js  c++  java
  • 20170605

    Creating the Dockerfile to Automatically Build the Image:

    1.启动一个容器:

    docker run -i -t -p 7000:80 centos7:cg /bin/bash

    注释:centos7:cg这个镜像是在busybox +sshd+systemd+epel还加了监控工具sar+netstat等的镜像

      在镜像中的操作:    

    41 yum update
    42 yum -y install tar git curl nano wget dialog net-tools
    43 yum -y install build-essential
    44 yum install -y python python-dev python-distribute python-pip
    45 yum install -y python python-dev python-distribute python-pip
    46 yum install -y python python-dev*
    47 yum install -y python-pip*
    48 yum provides python-pip
    49 yum provides pip
    50 yum provides pip
    51 yum search pip
    52 pip
    53 yum -y install pip
    54 yum -y install pip*
    55 yum -y --enablerepo=epel install python-pip
    56 pip install flask
    57 pip install --upgrade pip
    58 pip install flask
    59 mkdir my_application
    60 cd my_application
    61 vi app.py

      cat app.py

    from flask import Flask
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        return "Hello World!"
    
    if __name__ == "__main__":
        app.run()


    62 vi requirements.txt
    63 pip install cherrypy
    64 vi server.py

    # Import your application as:
    # from app import application
    # Example:
    
    from app import app
    
    # Import CherryPy
    import cherrypy
    
    if __name__ == '__main__':
    
        # Mount the application
        cherrypy.tree.graft(app, "/")
    
        # Unsubscribe the default server
        cherrypy.server.unsubscribe()
    
        # Instantiate a new server object
        server = cherrypy._cpserver.Server()
    
        # Configure the server object
        server.socket_host = "0.0.0.0"
        server.socket_port = 80
        server.thread_pool = 30
    
        # For SSL Support
        # server.ssl_module            = 'pyopenssl'
        # server.ssl_certificate       = 'ssl/certificate.crt'
        # server.ssl_private_key       = 'ssl/private.key'
        # server.ssl_certificate_chain = 'ssl/bundle.crt'
    
        # Subscribe this server
        server.subscribe()
    
        # Start the server engine (Option 1 *and* 2)
    
        cherrypy.engine.start()
        cherrypy.engine.block()

    65 mkdir app
    66 python server.py
    67 pwd
    68 history

    最后在容器中的结构:

    /my_application
        |
        |- requirements.txt  # File containing list of dependencies
        |- /app              # Application module (which should have your app)
        |- app.py            # WSGI file containing the "app" callable
        |- server.py         # Optional: To run the app servers (CherryPy)

    2.现在开始创建Dockerfile:

    [root@node ~]# cat Dockerfile
    ############################################################
    # Dockerfile to build Python WSGI Application Containers
    # Based on jt
    ############################################################

    # Set the base image to Ubuntu
    FROM centos7:cg

    # File Author / Maintainer
    MAINTAINER Maintaner Name

    # Add the application resources URL
    #RUN echo "deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -sc) main universe" >> /etc/apt/sources.list

    # Update the sources list
    RUN yum update

    # Install basic applications
    RUN yum install --enablerepo=epel -y tar git curl nano wget dialog net-tools

    # Install Python and Basic Python Tools
    RUN yum install --enablerepo=epel -y python python-dev python-distribute python-pip
    #genxin
    RUN pip install --upgrade pip
    # Copy the application folder inside the container
    ADD /my_application /my_application

    # Get pip to download and install requirements:
    RUN pip install -r /my_application/requirements.txt

    # Expose ports
    EXPOSE 80

    # Set the default directory where CMD will execute
    WORKDIR /my_application

    # Set the default command to execute
    # when creating a new container
    # i.e. using CherryPy to serve the application
    CMD python server.py &
    [root@node ~]#

    注意这里:ADD /my_application /my_application

    我们可以换成:

    RUN git clone [application repository URL]
    至此我们用dockefile成功构建了一个镜像并访问成功
    docker build -t my_application_img .

    [root@node ~]# docker run -p 7001:80 -i -t --name jt my_application_img
    [02/Jun/2017:20:05:49] ENGINE Bus STARTING
    [02/Jun/2017:20:05:49] ENGINE Started monitor thread 'Autoreloader'.
    [02/Jun/2017:20:05:49] ENGINE Started monitor thread '_TimeoutMonitor'.
    [02/Jun/2017:20:05:49] ENGINE Serving on http://0.0.0.0
    [02/Jun/2017:20:05:49] ENGINE Bus STARTED

     

     好了,成功用dockerfile发布了一个小代码

    私有仓库搭建:

    mkdir -p /opt/data/registry

    因为是centos7所以都要在所有节点上修改:

    vi /usr/lib/systemd/system/docker.service
    ExecStart=/usr/bin/dockerd --insecure-registry 192.168.36.151:5000

    systemctl daemon-reload

    systemctl restart docker

    启动一个注册容器:

    docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

    为上传镜像打个标签:

    docker tag busybox 192.168.36.151:5000/test

    另外一个机器上面测试成功:

    [root@node ~]# docker pull 192.168.36.151:5000/test
    Using default tag: latest
    Trying to pull repository 192.168.36.151:5000/test ...
    latest: Pulling from 192.168.36.151:5000/test
    Digest: sha256:32a0e4c673002bd7d4585587fb06ae9826cda9808317561b790ebef374bbb312

  • 相关阅读:
    The commands of Disk
    How to build a NFS Service
    Apache的dbutils的架构图
    Spring使用ThreadLocal解决线程安全问题
    NIO流程
    Servlet 生命周期、工作原理
    forward和redirect的区别
    笔记:Java 性能优化权威指南 第9、10、11章 GlassFish、Web应用、Web Service、EJB性能调优
    几个关于Java内存泄露方面的面试题
    MAT 检测 Java内存泄露检测
  • 原文地址:https://www.cnblogs.com/Jt00/p/6943687.html
Copyright © 2011-2022 走看看