【命令】
删除容器:docker rm
删除镜像:docker rmi
从tar中加载镜像:docker load -i xxx.tar
清空缓存(所有未使用的资源、镜像):docker system prune -a
清空构建缓存(中间层):docker builder prune -a
导出镜像:docker save -o D:\xxx.tar xxx:1.0
docker save -o /home/xxx.tar redis mysql rebbit
生成镜像:docker build -t xxx . 注意:这个.是必须的
docker-compose -p xxx build
查看容器基本信息:docker inspect 容器ID或者名称
docker inspect redis:7.0.4 | grep -i "version"
查询镜像:docker search docker.1ms.run/openresty
镜像适用于哪些平台:docker buildx imagetools inspect docker.1ms.run/openresty/openresty:alpine
日志:docker logs 容器ID或者名称
获取启动命令:docker inspect ac92f79748c1 | grep -A 200 "Cmd"
只下载适用于ARM的镜像:docker pull --platform linux/arm64 docker.1ms.run/hashicorp/consul
重命名镜像名及Tag:
docker tag docker.1ms.run/hashicorp/consul consul
docker rmi docker.1ms.run/hashicorp/consul
查看容器的环境变量:docker exec <容器ID> env
docker exec <容器ID> uname -m
查看镜像架构:docker inspect centos7_1:1 | grep -i "architecture"
查看镜像详细信息(包括历史层、环境变量等)
docker inspect <镜像ID或名称:标签>
查看镜像构建历史
docker history <镜像ID或名称:标签> --no-trunc来禁止省略号的显示
选项 |
说明 |
---|---|
|
强制删除 正在运行的容器(等价于先 |
|
删除容器的链接(但不删除源容器)。 |
|
同时删除与容器关联的 匿名卷(即未指定名称的卷)。 |
|
强制停止容器前的等待时间(秒),默认 |
|
仅输出已删除容器的 ID,不显示其他信息。 |
【Mysql】
登录mysql:docker exec -it 容器名称 mysql -u root -p
查看全部用户:SELECT User, Host FROM mysql.user;
查看全部数据库:SHOW DATABASES;
查看全部表:SHOW TABLES;
创建用户:CREATE USER 'user1'@'%' IDENTIFIED BY '123456';
赋权限: GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%';
导出mysql(全部):docker exec -it <容器名或容器ID> mysqldump -u 用户名 -p'密码' 数据库名 > 导出文件名.sql,例如 docker exec -it 12131ffedfv mysqldump -u root -p'123456' DB > /home/dbo.sql
导出mysql(只数据):docker exec -it <容器名或容器ID> mysqldump -u 用户名 -p'密码' --no-create-info 数据库名 > 导出文件名.sql
导出mysql(结构):docker exec -it <容器名或容器ID> mysqldump -u 用户名 -p'密码' --no-data 数据库名 > 导出文件名.sql
导出mysql(多个):docker exec -it <容器名或容器ID> mysqldump -u 用户名 -p'密码' --databases 数据库1 数据库2 > 导出文件名.sql
导出mysql(所有):docker exec -it <容器名或容器ID> mysqldump -u 用户名 -p'密码' --all-databases > 导出文件名.sql
开启监管服务:
在my.cnf插入 [mysqld] general_log = 1 general_log_file = /var/log/mysql/general.log # 必须与容器内路径一致 log_output = FILE # 确保输出到文件 停止并删除现有容器 docker stop mysql docker rm mysql原有命令重新创建容器 # 在宿主机创建日志目录(如果不存在) mkdir -p /宿主机路径/mysql-logs # 例如 /opt/mysql-logs# 重新启动容器,挂载目录并设置权限 docker run -d \--name mysql-container \-v /宿主机路径/mysql-logs:/var/log/mysql \ # 挂载宿主机目录到容器内的日志路径-e MYSQL_ROOT_PASSWORD=你的密码 \--restart always \mysql:你的版本 \--general-log=1 \--general-log-file=/var/log/mysql/general.log进入mysql # 检查日志配置 SHOW VARIABLES LIKE 'general_log'; SHOW VARIABLES LIKE 'general_log_file'; SHOW VARIABLES LIKE 'log_output';测试 SELECT 'docker log test' AS test;查看日志文件
也可以直接敲命令 SET GLOBAL general_log = ON;
SET GLOBAL general_log_file = '/var/lib/mysql/general.log'; SET GLOBAL log_output = 'FILE'; 或者你也可以 SET GLOBAL log_output = 'TABLE'; 这也可以直接在表里查询 SELECTevent_time,
user_host,
command_type,
CONVERT(argument USING utf8mb4) AS sql_text
FROM mysql.general_log
【Redis】
进入容器:docker exec -it 容器名称 redis-cli
输入密码:Auth 密码
查询Key:KEYS *
获取值:字符串类型可以用GET ,比如GET NAMEKEYS,如果是Hash类型,可以用HGETALL
持久化
# 1. 开启 AOF 持久化(混合持久化基于 AOF 机制) appendonly yes# 2. 开启混合持久化(Redis 4.0+ 支持,默认开启) aof-use-rdb-preamble yes# 3. AOF 重写触发条件(满足任一即触发,触发时生成混合文件) auto-aof-rewrite-percentage 100 # AOF 文件体积比上次重写后增长 100% auto-aof-rewrite-min-size 64mb # AOF 文件最小体积达到 64MB
清空AOF:进入容器后,执行BGREWRITEAOF
查看文件:docker exec -it 容器名称 ls -l /data
【镜像】
dockers.1ms.run docker.xuanyuan.me
如果需要对镜像进行自定义操作,例如一个ubuntu:24.04,希望对他增加一些基础包再导出
1、下载镜像:docker pull ubuntu:24.04
2、运行镜像:docker run -it --name ubuntu2404-build ubuntu:24.04 bash
3、切换源:sed -i 's|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list
4、安装想要的一些包
apt-get update
apt-get install -y build-essential cmake g++ gdb make ninja-build git
5、退出:exit
6、提交更改成新镜像:docker commit ubuntu2404-build ubuntu:24.04-cxx
7、导出:docker save -o /root/new-ubuntu-2404.tar.gz ubuntu:24.04-cxx
【Dockerfile】
安装hadolint对Dockerfile进行语法检查:docker pull hadolint/hadolint:lasted
检查语法:docker run --rm -v "D:/test" -w /work hadolint:latest Dockerfile
【WSL】
如果持续生成镜像导致C盘空间很少,这是因为WSL不会自动收缩
可以如一下进行操作
首先 docker system prune -a
然后
Get-ChildItem "$env:LOCALAPPDATA\Docker\wsl" -Recurse -File -ErrorAction SilentlyContinue |
Sort-Object Length -Descending |
Select-Object -First 5 FullName, @{Name='GB';Expression={[math]::Round($_.Length/1GB,2)}}
得到类型的结果
FullName GB
------ --
C:\Users\you\AppData\Local\Docker\wsl\data\ext4.vhdx 42.31
然后压缩WSL
关闭Docker Desktop
wsl --shutdown
diskpart
select vdisk file="C:\Users\<你>\AppData\Local\Docker\wsl\data\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit