使用数据卷的好处在于:容器被移除了,重新运行一个新容器,直接挂载原来的数据卷就可了,数据不会丢失
# 移除容器 docker rm -f mysql2 # 重新运行新的容器,并挂载原来的数据卷 docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -d -v mysqldata:/var/lib/mysql -v mysqlconfig:/etc/mysql mysql:5.7.32 Redis可参考官方文档:Redis
需要注意的是:Redis 需要在镜像名称即 redis:5.0.10 的后面添加 redis-server --appendonly yes ,以此覆盖镜像默认的命令
docker run --name redis -p 6379:6379 -d redis:5.0.10 # 停止容器,防止端口占用 docker stop redis # 开启持久化 redis-server --appendonly yes # 开启后,持久化生成的 aop 文件会被放入容器中的 /data 目录中 docker run --name redis2 -p 6379:6379 -d -v redisdata:/data redis:5.0.10 redis-server --appendonly yes # 可以使用 Redis Desktop Manager 等工具,通过宿主机 ip 连接,进行测试 清理容器 # 查看容器列表可以看到很多容器 docker ps # -a 可以看到所有的容器,包括已经停止的 docker ps -a # 如果忘记了参数或者命令可以在命令后面加上 --help,会有提示 docker ps --help # 可以看到:-q, --quiet Only display container IDs,即:-q参数仅输出容器id,结合 -a,可以输出所有容器的 id docker ps -aq # 结合 rm -f 就可以移除所有的容器了 docker rm -f $(docker ps -aq) # 清除没有用到的数据卷,有重要数据要谨慎 docker volume prune docker我们可以通过下面的命令,来找到 docker 的位置
whereis docker # 我这里执行返回的结果是:docker: /usr/bin/docker /etc/docker /usr/libexec/docker /usr/share/man/man1/docker.1.gz可以看到 docker 的可执行文件位于 /usr/bin,这个路径存在环境变量 PATH 中,所以我们可以在任意路径 使用 docker 命令
Docker 是 C/S 架构模式(客户端-服务器),所以上面的 docker 实际上是 Docker 的客户端,Docker 的服务器是 Docker Deamon 对应的就是 dockerd,也在这个目录下,Deamon 就是 Docker 引擎,Docker 客户端通过 Docker API 与 Deamon 进行通信
docker 是一个可执行程序,包含了许多命令,输入
docker --help会将 Usage(用法)、Option(选项)、Commands(命令)都展示出来,Management Commands 也s是 Commands。每个命令可能会有它自己的子命令、选项
# run 命令有许多的选项 docker run --help # volume 命令有许多子命令,例如:ls, rm, inspect docker volume --help 命令梳理使用 --help 参数,就可以查询到到对应命令的使用方法,所以我们只要理解 Docker 命令的框架即可,不用记忆命令细节
对镜像进行操作:images, rmi, search
对容器进行操作:run, stop, start, restart, exec, logs, top
其他:ps, cp, info, pull, version
还有一些 Management Commands,例如:image, network, volume
这些命令都是名词,即要操作的对象,而具体的操作通过其子命令指定,语义更加清晰
image 常用子命令:ls, rm, prune
network 常用子命令:create, ls, inspect, rm, prune
volume 常用子命令:同上面 network 的四个
【编程不良人】Docker容器技术&Docker-Compose实战
Docker组件
Docker 组件之间的关系