基础教程
2021年5月17日大约 2 分钟Docker
强大的容器技术,前后端都用得着
教程
配置加速器
在 Docker daemon configuration file
中写入
{"registry-mirrors":["http://hub-mirror.c.163.com"]}
# docker 官方中国区镜像
https://registry.docker-cn.com
# 网易镜像
http://hub-mirror.c.163.com
# 阿里云镜像(专属加速)
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
容器使用
# 启动一个 alpine 镜像并指定 name
# -i 交互式操作
# -t 终端
# -d 后台运行
docker run -itd --name alpine_local alpine /bin/sh
# 进入容器
docker exec -it eb4e5f3d4f71 /bin/sh
创建镜像
基于已有的镜像创建
# 在 eb4e5f3d4f71 容器中新增 test.txt 文件,退出容器并提交
docker commit -m "add test.txt" -a "hall" eb4e5f3d4f71 test:0.1
基于 Dockerfile 来创建(推荐)
FROM docker.io/alpine:latest
LABEL version="1.0" maintainer="Hall <logycoconut@github>"
RUN apk upgrade && \\
apk add python3
------------------------------------------------------------
# 注意最后有个点 .
docker image build -t alpine-python3:1 .
导出、加载镜像

# 导出 alpine-python3:1 镜像到当前目录
docker save -o alpine-py3.tar alpine-python3:1
加载镜像

# 加载当前目录的 tar 包
docker load -i alpine-py3.tar
上传镜像
- 创建自己的仓库

- 查看现有的镜像

- 为
alpine-python3
打个标签
docker tag alpine-python3:1 logycoconut/test:0.1

- 推到远程仓库
docker push logycoconut/test:0.1

- 现在任何人都可以下载你上传的镜像了
docker pull logycoconut/test:0.1

清理镜像
# 参数可以是 name 或 id
docker rmi [image]
# 删除所有未被容器使用的镜像
docker image prune -a
# 删除所有未被使用的容器
docker container prune -a
常用镜像安装
Docker安装Alpine
docker run -itd --name alpine-local alpine
Docker安装Redis
docker run -d --name redis-local -p 6379:6379 redis
Docker安装MySQL
docker run -d --name mysql-local -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
Docker安装Nginx
docker run --name nginx-local -p 8080:80 -d nginx
Docker 安装 PostgreSQL
用户名默认为 postgres
docker run -it \
--name postgres \
--restart always \
-e TZ='Asia/Shanghai' \
-e POSTGRES_PASSWORD='12345678' \
-e ALLOW_IP_RANGE=0.0.0.0/0 \
-p 5432:5432 \
-d postgres
镜像管理 Portainer
Portainer容器更新
# 停止旧容器
docker stop portainer
# 删除旧容器
docker rm portainer
# 删除旧镜像
docker rmi portainer/portainer
# 拉取新镜像
docker pull portainer/portainer-ce
# 使用新的镜像启动新的容器
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name portainer portainer/portainer-ce