Skip to content

Instantly share code, notes, and snippets.

@ThaddeusJiang
Created July 27, 2018 02:50
Show Gist options
  • Save ThaddeusJiang/11ad6996a82522a08b614250327bdd76 to your computer and use it in GitHub Desktop.
Save ThaddeusJiang/11ad6996a82522a08b614250327bdd76 to your computer and use it in GitHub Desktop.
Docker

Docker

Docker 是容器技术。 是搭建基础设施不可缺少的技术,必须会。

主要概念

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Docker Hub)

使用

CentOS 7 安装 Docker

能用 centos 7 就用 7,别给自己找不愉快。

uname -r 

sudo yum update
curl -fsSL https://get.docker.com/ | sh

systemctl start docker
docker run hello-world

使用 Dockerfile 制定运行环境

概念: FROM、RUN、COPY 等

详细教程

基本操作:

  1. 定义镜像
  2. 构建镜像
  3. 运行容器

定义镜像

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

Dockerfile 其他

USER root

WORKDIR /app

ENV NODE_VERSON 8.4

VOLUME /data

EXPOSE 80

Docker 最佳实践,不向 Container 写数据,使用 Volume 写入宿主。

操作 Container

docker pull

docker run --name webserver -d -p 80:80 nginx

docker ps 

docker stop xxx

docker exec -it webserver bash

简单的 Container 互联,可以使用 docker-compose。

概念: service、project 。

复杂的示例

基本操作:

  1. 代码
  2. Dockerfile
  3. docker-compose.yml
  4. docker-compose up
  5. 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

复杂的 Container 互联,使用 Kubernetes。

教程

以上

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment