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 yess
初始化:
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 写得能看了。