Docker初探(centos7)

系统环境

  • 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>

发表评论