系统环境
- Centos7 64位
docker安装
centos下安装docker非常简单
首先移除可能的旧版本(可选)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
接着安装安装docker-ce依赖环境
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加docker-ce官方安装包
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
然后安装docker-ce
sudo yum install docker-ce
其他环境的安装请参考官方文档
配置DNS
在/etc/docker/daemon.json 文件中添加下列内容
{
"dns": ["114.114.114.114", "8.8.8.8"]
}
定义一个测试用的容器
mkdir app && cd app
创建一个app目录,接着创建三个文件名称如下
- requirements.txt
- app.py
- Dockerfile
requirement.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
Dockerfile是docker的核心文件,必不可少
# 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"]
创建docker容器
如果上面的一切配置正常,那么使用ls
命令,应该在app目录下出现三个文件
Dockerfile app.py requirements.txt
接着使用docker build 命令创建一个python容器(ps: 注意命令最后面的符号.)
sudo docker build -t hello-docker .
验证容器是否创建成功
sudo docker image ls
出现了下面的字样,则创建成功
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-docker latest a74bf93b68c9 26 minutes ago 132 MB
如果遇到error creating overlay mount to /var/lib/docker/overlay2 错误,请参考这里
运行
首先重启docker服务
sudo /bin/systemctl restart docker.server
接着运行docker,把宿主机环境的4000端口转发到hello-docker环境中的80端口
sudo docker run -p 4000:80 hello-docker
验证
curl localhost:4000
出现结果如下,则说明docker运行成功
<h3>Hello World!</h3><b>Hostname:</b> 79b3ed825e21<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>