1、docker的安装(Ubuntu)
1.1、 设置存储库
若是已安装旧版本的docker, 请卸载:sudo apt-get remove docker docker-engine docker.io containerd runc
1.1.1、更新apt索引
sudo apt-get update
1.1.2、安装依赖
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
1.1.3、添加docker官方的GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
在进行此步时,出现了sudo: unable to resolve host iZ2ze4512bfzoapfvch6btZ,这是因为机器不能反向解析 打开主机上的 /etc/hosts 添加: 127.0.0.1 【hostname】# 【hostname】用主机名替代 可在/etc/hostname中修改主机名,sudo shutdown -r now重启过后完成主机名修改
验证添加成功:
sudo apt-key fingerprint 0EBFCD88
1.1.4、 设置存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) \stable"
1.2、安装dockerCE
1.2.1 更新apt索引
sudo apt-get update
1.2.2、安装最新版本的dockerCE和containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
1.2.3、通过运行hello-world验证是否正确安装了dockerCE
sudo docker run hello-world
1.2.4、卸载dockerCE
1、卸载dockerCE软件包
sudo apt-get purge docker-ce
2、主机上的图像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:
sudo rm -rf /var/lib/docker
1.3、在docker中运行应用
1.3.1、创建工作目录
mkdir dockerwork
进入:
cd dockerwork
1.3.2、 创建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
COPY . /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"]
有关DockerFile的解释可见这里
其中 WORKDIR表示工作目录, COPY是把当前目录下(.)的内容复制到 /app
其中包含两个未建立的文件:requirements.txt & app.py 其内容如下:
requirements.txt
Flask
Redis
app.py
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.3.3、构建应用程序
docker build --tag=friendlyhello .
1.3.4、运行应用程序
docker run -p 4000:80 friendlyhello
这是运行一般程序的步骤,要构建django项目,请到这里