Docker 这几年非常火,只不过对于我这种基本不接触业务的人而言,平时很少会用到 Docker,自己写项目愿意用 Python 的 virtualenv 就不错了。

对于 Docker,个人了解很肤浅,这里不过是想记录一下自己偶尔需要用到的命令,方便自己使用而已。


Docker

Dockerfile 基本配置如下:

FROM docker-images
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENV NUM_WORKS 4
CMD ['python3', 'main.py']

通过 Dockerfile 来创建 Docker image:

docker build -t my-image

运行:

docker run -p 4000:80 my-image

Docker 里面各种带 : 的,前面表示的是外部的,后面是镜像里面的。

停止:

docker container stop container_id

其他相关命令:

docker container ls
docker container rm
docker image ls -a
docker tag <image> username/repository:tag
docker push username/repository:tag
docker run username/repository:tag

Service

docker-compose.yml 基本配置如下:

version: "3"
services:
    web:
        image: username/repository:tag
        deploy:
            replicas: 5
            resources:
                limits:
                    cpus: "0.1"
                    memory: 50M
            restart_policy:
                condition: on-failure
        ports:
            - "80:80"
        volumes:
            - "/home/username/data:/data"
    redis:
        image: redis
        ports:
            - "6379:6379"
        volumes:
            - "/home/docker/data:/data"
        command: redis-server --appendonly yes

初始化:

docker swarm init

运行:

docker stack deploy -c docker-compose.yml your_app_name

其他:

docker service ls
docker service ps your_app_name
docker stack rm your_app_name
docker swarm leave --force

Compose

docker-compose up -d --build
docker-compose stop

启动镜像,在镜像里面修改并提交:

docker run --name ubuntu_bash -i -t ubuntu-python35 /bin/bash
# do something in cmd
docker commit container_id username/repository:tag

还有 Swarm 管理和监控等,因为我平时也不用,所以就不写了。

我发现官方文档比以前好一点了,起码 Tutorial 写得能看了。