欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker入门-1

程序员文章站 2022-07-14 08:52:16
...

第一部分:测试docker环境

查看docker版本

docker --version

查看更多安装信息

docker info

测试跑一个简单的官方自带例子

docker run hello-world

 列出所有的镜像

docker image ls

列出所有的容器 

docker container ls --all

第二部分 容器 

用Dockerfile定义容器

# 用官方Python做一个父镜像
FROM python:2.7-slim
# 设置工作目录/app
WORKDIR /app
# 拷贝当前目录内容到容器的/app目录下
COPY . /app
# 安装在requirements.txt指定的程序包
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# 暴露容器80端口供容器外可用
EXPOSE 80
# 定义一个环境变量
ENV NAME World
# 当容器启动是跑app.py
CMD ["python", "app.py"]

requirements.txt 内容中的安装包 

Flask
Redis

app.py python脚本程序内容如下

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)

构建

将Dockerfile、app.py、 requirements.txt三个文件放在同一目录下。

docker build -t friendlyhello .

运行 -p 4000:80 宿主机的4000端口映射容器的80端口 

docker run -p 4000:80 friendlyhello

登陆阿里云的私有registry 

docker login [email protected] registry.cn-hangzhou.aliyuncs.com

将构建的镜像上传到阿里云registry

docker tag dk/mysecondapp registry.cn-hangzhou.aliyuncs.com/dk-aliyun-st-repo/dk-st-repo/dk/mysecondapp:1.0 [缺省是latest]
docker push registry.cn-hangzhou.aliyuncs.com/dk-aliyun-st-repo/dk-st-repo/dk/mysecondapp:1.0

 

从阿里云registry拉取并运行

docker pull registry.cn-hangzhou.aliyuncs.com/dk-aliyun-st-repo/dk-st-repo
docker run -p 8888:5000 --name mysecondapp registry.cn-hangzhou.aliyuncs.com/dk-aliyun-st-repo/dk-st-repo