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

  • 相关阅读:
    angularjs的$on、$emit、$broadcast
    angularjs中的路由介绍详解 ui-route(转)
    ionic入门教程-ionic路由详解(state、route、resolve)(转)
    Cocos Creator 加载使用protobuf第三方库,因为加载顺序报错
    Cocos Creator 计时器错误 cc.Scheduler: Illegal target which doesn't have uuid or instanceId.
    Cocos Creator 构造函数传参警告 Can not instantiate CCClass 'Test' with arguments.
    Cocos Creator 对象池NodePool
    Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)
    Cocos Creator 常驻节点addPersistRootNode
    Cocos Creator 配合Tiled地图的使用
  • 原文地址:https://www.cnblogs.com/Jt00/p/6943687.html
Copyright © 2011-2022 走看看