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