我基本所有的服务全都是靠docker+nginx解决,性能上没问题,也不用担心装各种东西把系统环境搞得乱七八糟,甚至相互冲突。docker安装和使用也极为简便。但是我看到有人用1panel装docker再卸载1panel,且不说这样装的docker是不是最新的、官方的、干净的,这不是脱裤子放屁吗。所以我来说说要怎么安装docker。
我只用debian系统举例,实际上这就是官方文档里面的,我复制粘贴稍微修改的,docker官方清清楚楚的给了一步一步的教程,指路。建议还是按照这个来安装。直接一句一句或者几句一起复制粘贴都可以。
安装依赖
apt update
apt install ca-certificates curl gnupg -y
获取仓库
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
安装主体
apt update
apt install docker-ce docker-ce-cli containerd.io -y
systemctl enable --now docker
想要以非root用户运行docker,直接在非root用户下运行
sudo usermod -aG docker $USER
完成。除非你的debian系统有问题(例如缺少重要系统依赖,非官方,已经安装过其他版本docker等等),不然这个步骤不会出任何问题。最新的docker早就自带docker compose,命令也是docker compose,不用装docker-compose了。其他系统其实一样的,官网有。
经提醒,想起来还有官方脚本的。
curl -sSL https://get.docker.com/ | sh
附一些常用命令:
针对容器
# 启动容器
docker start Name/ID
# 停止容器
docker stop Name/ID
# 杀死容器
docker kill Name/ID
# 删除容器
docker rm Name/ID
# 显示正在运行的容器:
docker ps
# 显示全部容器:
docker ps -a
# 进入容器内部
docker exec -it NAME /bin/sh
or
docker exec -it ID /bin/sh
针对镜像
# 检索 image
docker search image-name
# 下载 image
docker pull image-name
# 显示全部镜像:
docker images
# 删除镜像
docker rmi ID
保存和加载镜像
# 保存镜像到一个 tar 包
docker save image-name:image-tag -o file-path.tar
# 加载一个 tar 包格式的镜像
docker load -i file-path.tar
清理相关
# 清理未使用image
docker image prune
# 清理已经停止的容器
docker container prune
# 清理不再使用的数据卷
docker volume prune
# 清理Build Cache
docker builder prune
# 清理所有多余占用,不会影响运行容器,但慎用
docker system prune
@kirito2023 #2 确实,一行shell本质上就是在运行上面的内容,但是这个一行一行的最基础,而且知道自己每一步在干什么。
安装docker不是一行shell就完事了
@Guu #0 说得很好,但是centos你也用apt吗?其实最好的方式还是官方脚本或者离线安装
从来都是一键脚本安装,这得折腾到啥时候
收藏
Docker官方提供的一键安装脚本
一直在用这个脚本
这个不行就换这个
@hausen1012 #1 你没看完整,我上面说了只用debian举例。
1panel直接装好的
@hi2hi #5
官方提供了一件脚本的同时也注明了 “The convenience script isn't recommended for production environments.”