zoukankan      html  css  js  c++  java
  • Docker 入门(Mac环境)- part 2 容器(container)

    part-2 容器(container)

    简介

    Docker架构有三个层面,从高到低如下:

    • stack(栈)
    • services(服务)
    • containers(容器)

    现在接触的这些在容器这一层里,类似于底层的基础;服务的话就是在此基础上实现了哪些功能/服务;更高层的栈则是定义了这些服务内在的一些交互

    docker的优势

    以往开发一个东西,在本机开发后还要去服务器上去部署,就涉及到各种环境的配置,各种依赖软件的安装,很麻烦;docker相当于提供了一个类集装箱的服务,把这些东西都打包好,提供标准的服务,你把集装箱搬到这个船上,那个码头上,他都可以放在那里,提供开发好的服务;要把这些东西打包,当然就需要配置,配置文件就称之为 dockerfile;也就是说:dockerfile决定了容器中的环境,而这个环境是与系统环境隔离的。

    docker示例

    1. 某文件夹下创建一个Dockerfile文件,内容如下:
    # Use an official Python runtime as a parent image
    FROM python:2.7-slim
    
    # Set the working directory to /app
    WORKDIR /app
    
    # Copy the current directory contents into the container at /app
    ADD . /app
    
    # Install any needed packages specified in requirements.txt
    RUN pip install --trusted-host pypi.python.org -r requirements.txt
    
    # Make port 80 available to the world outside this container
    EXPOSE 80
    
    # Define environment variable
    ENV NAME World
    
    # Run app.py when the container launches
    CMD ["python", "app.py"]
    
    1. 创建requirements.txt和app.py文件,内容分别是
    Flask
    Redis
    
    from flask import Flask
    from redis import Redis, RedisError
    import os
    import socket
    
    # Connect to Redis
    redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        try:
            visits = redis.incr("counter")
        except RedisError:
            visits = "<i>cannot connect to Redis, counter disabled</i>"
    
        html = "<h3>Hello {name}!</h3>" 
               "<b>Hostname:</b> {hostname}<br/>" 
               "<b>Visits:</b> {visits}"
        return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=80)
    
    1. 编译(build),docker build -t friendlyhello .
    2. 运行app,docker run -p 4000:80 friendlyhello
    3. 查看 docker image ls,可以看到friendlyhello这个image
    4. 浏览器访问 localhost:4000,可以看到我们用flask写的这个app
    5. 可以使用后台模式启动这个app,命令是docker run -d -p 4000:80 friendlyhello
    6. 后台模式启动的app可以使用 docker container stop container_id 来关闭
    7. 查看docker正在运行的容器,docker ps, 和Linux的ps 一样,也可以加上-a的参数来查看全部

    分享docker 镜像

    git对应有github,docker对应有dockerhub;先注册一个dockerhub账号,然后就可以分享了;

    1. docker login登陆账号
    2. docker tag image来打标签,类似于docker tag friendlyhello wang/get-started:part2
    3. docker push username/repository:tag,来push镜像
    4. 拉取然后运行镜像 docker run -p 4000:80 username/repository:tag
  • 相关阅读:
    quartz CronExpression表达式
    nginx配置文件说明
    mysql的日期输出格式列出来
    linux配置定时备份mysql数据库
    Nginx 配置
    查看mysql 服务有哪些ip地址在连接。
    对HelloWorld进行探究
    SpringBoot热部署与启动速度优化
    SpringBoot 快速入门
    初始SpringBoot
  • 原文地址:https://www.cnblogs.com/wswang/p/9285145.html
Copyright © 2011-2022 走看看