一点点docker笔记

安装docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://dockerhub.azk8s.cn"
],
"insecure-registries" : [
"hub-mirror.c.163.com",
"mirror.baidubce.com",
"dockerhub.azk8s.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装docker-compose

1
2
sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

利用Dockerfile定制镜像

1
2
3
4
5
6
7
8
9
10
11
# flask部署
FROM python:3.7

COPY . /code
WORKDIR /code

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && pip install -r /code/requirements.txt
# 如果太慢了再加上这句 不然镜像站有可能同步不全导致包安装失败
# -i https://pypi.tuna.tsinghua.edu.cn/

CMD gunicorn app:app -c gunicorn.conf.py --error-logfile /log/gunicorn.log
1
2
3
docker build -t 'name' .
docker run -it 'name'
docker run -d 'name'
COPY复制文件
CMD容器启动命令
ENV设置环境变量
WORKDIR指定工作目录

常用指令

  • docker image/container ls 列出所有镜像/容器
  • docker rm … 删除镜像
  • docker attach … 进入容器
  • docker ps -a 列出所有的container包括没有运行的

docker-compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# flask redis nginx mysql部署
version: '3.6'

services:
web:
build: .
container_name: web
volumes:
- ../logs:/log
depends_on:
- db
- redis
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=mx/58MFuLJ6^%.q
volumes:
- ./config/mysql:/docker-entrypoint-initdb.d
nginx:
image: nginx:1.17
volumes:
- ./config/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- web
ports:
- 8888:80
redis:
image: redis:5.0.8
volumes:
- ./config/redis/redis.conf:/etc/redis/redis.conf
command: redis-server
privileged: true
  • build 利用Dockerfile编译的目录
  • image 镜像
  • volumes 目录映射关系
  • depend_on 依赖于 当依赖启动后本service才能启动
  • port 开放的端口映射
  • environment 环境变量
  • privileged 权限
  • command 自带命令行

常用指令

  • docker-compose start
  • docker-compose stop
  • docker-compose top

奇技淫巧

列出所有的容器 ID

1
docker ps -aq

停止所有的容器

1
docker stop $(docker ps -aq)

删除所有的容器

1
docker rm $(docker ps -aq)

删除所有的镜像

1
docker rmi $(docker images -q)

docker1.3之后的资源清理

1
2
docker image prune --force --all # 删除所有不使用的镜像
docker container prune -f # 删除所有停止的容器