Docker 使用
本文最后更新于:2021年2月23日 下午
Docker 前几年为了配置数据库接触过一次,仅限于 run
& start
之类。
今天详细看看官方文档,记录一下。
安装1
我使用的系统是 CentOS,内核版本 3.10.0-957.el7.x86_64
:
卸载旧版本
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
安装存储库及依赖包
yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安装最新版 Docker
yum install docker-ce docker-ce-cli containerd.io
检查版本
docker --version
启动
systemctl start docker docker info
常用
列出镜像容器等
docker image ls
docker container ls -a
docker volume ls
这些信息也可以查看
/var/lib/docker
文件夹
删除
docker container rm [CONTAINER ID]
这类指令规律都是相似的
这里我遇到一个问题,ls
显示镜像,但是无法 rm
,会提示 Error: No such image
;
好像是之前残留的问题,如果没有重要的文件可以如下解决:
systemctl stop docker
rm -rf /var/lib/docker
systemctl start docker
排错
有时需要查看 log 方便排错2
docker logs [OPTIONS] CONTAINER
OPTIONS
-f
:跟踪日志输出--since
:显示某个开始时间的所有日志-t
:显示时间戳--tail
:仅列出最新 N 条容器日志
bash
启动新系统容器并连接到当前 bash
:
1 |
|
退出重新连接容器:
1 |
|
构建3
Dockerfile
官网有完整的例子,使用 Dockerfile
构建一个自己的镜像,一般注意如下:
- 尽量使用别人已经构建好的镜像4
- 尽量减少层(layer),我如果理解没错,官方例子是七层
将容器中位置绑定到当前目录5
docker run -p 4000:80 --mount type=bind,source="$(pwd)",target=/home/logs/ hello:v1
关于存储可查看 Manage data in Docker:
- Volumes:存储在
/var/lib/docker/volumes/
- Bind mounts:可绑定本机
- tmpfs mounts:仅存储在内存中
docker-compose.yml
启动服务感觉比 run
更高级一层,可以执行更复杂的配置,比如定义 CPU 占用率等
应用
mysql
使用 docker 本地配置一个 mysql 数据库6:
1 |
|
数据库保存到本地,文件结构如下:
- test
- docker-compose.yml
- mysql
1 |
|
在 test
文件夹下编译容器:
1 |
|
数据库导入:
1 |
|
Docker 使用
https://wishlily.github.io/article/tools/2019/08/14/docker-apply/