Docker 是容器技术。 是搭建基础设施不可缺少的技术,必须会。
- 镜像(Image)
- 容器(Container)
- 仓库(Docker Hub)
能用 centos 7 就用 7,别给自己找不愉快。
uname -r
sudo yum update
curl -fsSL https://get.docker.com/ | sh
systemctl start docker
docker run hello-world
概念: FROM、RUN、COPY 等
基本操作:
- 定义镜像
- 构建镜像
- 运行容器
定义镜像
FROM nginx
COPY ./xxx /app
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
构建镜像
cd nginx/
docker build -t nginx:v3 .
运行容器
docker run --name webserver -d -p 80:80 nginx:v3
USER root
WORKDIR /app
ENV NODE_VERSON 8.4
VOLUME /data
EXPOSE 80
Docker 最佳实践,不向 Container 写数据,使用 Volume 写入宿主。
docker pull
docker run --name webserver -d -p 80:80 nginx
docker ps
docker stop xxx
docker exec -it webserver bash
概念: service、project 。
基本操作:
- 代码
- Dockerfile
- docker-compose.yml
- docker-compose up
- docker-compose down
app.py
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
count = redis.incr('hits')
return 'Hello World! 该页面已被访问 {} 次。\n'.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
Dockerfile
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]
docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
运行
cd app/
docker-compose up
docker-compose dowm
以上