官方脚本一键安装 docker&docker compose
一键安装命令
curl -fsSL https://get.docker.com | bash -s docker
在最新版的官方脚本默认安装docker compose, 只需要注意的是新版的命令去 docker compose 除了连接符,而不是 docker-compose.
注意 在 docker compose 这个命令中,compose 不是参数,也不是选项,它是 docker CLI 的一个子命令 (subcommand)。区别于 docker-compose是一个独立可执行文件,所以调用方式直接是 docker-compose up -d,新版的命令是docker compose。
docker 组添加当前用户
sudo usermod -aG docker $USER && newgrp docker
解释:
usermod -aG docker $USER把当前用户加入到docker组。newgrp docker立即切换到新的组,而不需要重新登录终端。执行后,就能直接运行docker命令而无需sudo。
转发 docker-compose 到 docker compose
为了兼容旧脚本,特别是现在使用 AI 编写或更改 docker compose 时,还需要使用到 docker-compose这条命令,官方建议的方法是使用 shim,把 docker-compose 转给 docker compose
# 创建一个可执行脚本放到 PATH 中优先的位置
sudo tee /usr/local/bin/docker-compose >/dev/null <<'EOF'
#!/usr/bin/env bash
exec docker compose "$@"
EOF
sudo chmod +x /usr/local/bin/docker-compose
比起 shell 的alias,脚本/可执行文件对非交互式环境(如 CI、Makefile、systemd)也生效,更稳妥
如果必须 100% 与旧脚本/工具保持一致,可在 shim 中使用 --compatibility
# /usr/local/bin/docker-compose
#!/usr/bin/env bash
exec docker compose --compatibility "$@"
关于shim
- 在 上面的使用中,可以理解为 shim 就是一个很小的可执行脚本(或可执行文件),它的任务就是“接力”——收到命令后,把参数原封不动地转交给真正的命令。
- 更广义的 shim 概念:它可以是脚本、动态库、甚至一层 API 包装器,只要它起到“兼容中间层”的作用,都叫 shim。
