Docker

【命令】

删除容器:docker rm

删除镜像:docker rmi

从tar中加载镜像:docker load -i xxx.tar

容器重新提交成镜像:docker commit 容器名 新的镜像名

清空缓存(所有未使用的资源、镜像):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来禁止省略号的显示

 

选项

说明

-f--force

强制删除 正在运行的容器(等价于先 docker stop 再删除)。

-l--link

删除容器的链接(但不删除源容器)。

-v--volumes

同时删除与容器关联的 匿名卷(即未指定名称的卷)。

-s--stop-time

强制停止容器前的等待时间(秒),默认 10 秒。

-q--quiet

仅输出已删除容器的 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'; 这也可以直接在表里查询 SELECT event_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

清空:FLUSHALL

【镜像】

如果需要下载官方包,但国内一般没梯子是下不到的,所以在前面增加m.daocloud.io/,例如m.daocloud.io/docker.io/library/mysql,网站为https://github.com/DaoCloud/public-image-mirror

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

posted @ 2025-09-10 11:22  若白驹过隙  阅读(19)  评论(0)    收藏  举报