docker-compose up -d
官方安装文档参考:在 Debian 上安装 Docker 引擎 |Docker 文档
一、docker安装
官方主页:点击进入
安装 Docker 环境
更新系统:点击进入
安装 Docker(非大陆服务器)
参考文章:https://iwanlab.com/nginx-proxy-manager/
wget -qO- get.docker.com | bash
docker -v #查看 docker 版本
systemctl enable docker # 设置开机自动启动
安装Docker-compose(非大陆服务器)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version #查看 docker-compose 版本
修改 Docker 配置(可选)
内容参考:烧饼博客
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训):
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF
这段命令是一个shell脚本,用于配置Docker守护进程(daemon)的参数。这段脚本将创建一个/etc/docker/daemon.json
文件,并将指定的JSON配置写入这个文件。下面解释一下各个配置选项的含义:
"log-driver": "json-file"
:设置日志驱动为json-file
,这将使Docker把容器日志写入到JSON格式的文件中。"log-opts": { "max-size": "20m", "max-file": "3" }
:设置日志选项,最大日志文件大小为20MB,最多保留3个日志文件。"ipv6": true
:启用IPv6网络。"fixed-cidr-v6": "fd00:dead:beef:c0::/80"
:设置IPv6的固定CIDR(无类别域间路由)地址为fd00:dead:beef:c0::/80
。这是一个用于IPv6地址分配的私有网络范围。"experimental":true
:启用实验性功能。"ip6tables":true
:启用IPv6 iptables(Linux下的一个防火墙软件)。
<<EOF
和EOF
是一种shell脚本的语法,用于多行字符串的输入。在这种情况下,它允许你在多行中输入JSON配置。
所以,这段脚本的主要目的是以JSON格式来配置Docker守护进程的参数,然后将这些配置保存到/etc/docker/daemon.json
文件中。在执行这段脚本后,你需要重新启动Docker守护进程以应用这些新配置。
然后重启 Docker 服务:
systemctl restart docker
安装Docker国内版
您提供的代码是在Debian或Ubuntu系统上添加Docker的官方GPG密钥并设置Docker的Apt源的过程。从您给出的代码看起来,大体上应该是没有问题的。但是,我会对每一步进行简要的解析以确保没有遗漏:
- 更新apt的包列表:
sudo apt-get update
- 安装必要的软件包:
sudo apt-get install ca-certificates curl gnupg
- 创建一个目录,并设置适当的权限来存放GPG密钥:
sudo install -m 0755 -d /etc/apt/keyrings
- 从Docker的官方网址下载GPG密钥,并将其解甲:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 更改GPG密钥的权限,使所有用户都可以读取它:
sudo chmod a+r /etc/apt/keyrings/docker.gpg
- 将Docker的仓库添加到Apt的源中:
您使用了echo
和tee
命令来创建和写入/etc/apt/sources.list.d/docker.list
文件。此外,您使用了命令替换来获取当前系统的版本代号并插入到Docker的仓库URL中。这部分的逻辑看起来是正确的
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
7.再次更新apt的包列表以包含新添加的Docker仓库:
sudo apt-get update
以上步骤应该可以正常工作。但请注意以下几点:
- 在执行这些命令之前,确保您已经以root权限或具有sudo访问权限的用户身份登录。
- 如果系统已经安装了较新版本的Docker或其他相关的包,那么添加这个新源可能不会替换它们。你可能需要先卸载旧版本,或者根据需要调整源的优先级。
- 始终从官方或受信任的来源获取代码,并确保您理解其作用,以防止任何潜在的安全风险或系统不稳定。
windows安装docker
六、创建一个docker
1、获取镜像
#先搜索一个容器名字
docker search nginx
2、拉取镜像
docker pull nginx
3、查看
1、查看本地镜像文件
查看本地当前有些什么镜像images
docker images
docker image ls
#只列出容器的id
docker images –q
2、查看所有运行的容器
1、查看正在运行的容器
docker ps
2、查看正在运行的容器的ID
docker ps -q
3、查看正在运行+历史运行过的容器
docker ps -a
4、显示运行容器总文件大小
docker ps -s
3、启动、停止容器
启动一个容器
docker start 器名|容器id
停止一个运行中的容器
docker stop 容器名|容器id
杀掉一个运行中的容器
docker kill 容器名|容器id
启动一个docker容器
#docker run 参数 镜像的名字/id
#-d 后台运行容器
#-p 80:80 端口映射 宿主机端口:容器端内端口 你访问到宿主机的端口,也就访问到了容器内的端口
docker run -d -p 80:80 nginx
4、删除
1、#删除docker容器
镜像短ID:docker rmi 14f6;(这个代表镜像id以14f6开头的镜像,一般而言,前四位可以唯一标志,如果不可以,docker会提示的)
镜像长ID:docker rmi 14f60031763d;
镜像名: docker rmi ubuntu:latest
如果要删除本地的镜像,可以使用 docker rmi (注意rm为删除容器,而rmi为删除镜像,其中i代表image)命令,它的具体语法如下:
删除一个已停止的容器
#docker rm 容器名|容器id
docker rm
删除一个运行中的容器
docker rm -f 容器名|容器id
2、#删除docker镜像
如果想要使用docker rmi删除一个镜像,需要注意需要先将使用该镜像的容器删除掉,否则该镜像不能删除成功。当然也可以使用docker rmi -f 强制删除该镜像!
#docker rmi 1fe436fb3925
docker rmi
#强制删除运行的docker镜像
docker rmi -f
3、删除多个docker镜像
如果想要删除所有镜像,可以这么写:,docker images -q
查看本地镜像ID
docker rmi $(docker images –q)
5.1 docker命令搭建的常用卸载方法
docker ps
docker stop 容器名字
cd ~
docker rm -f 容器名字
rm -rf 映射出来的路径
5.2 docker-compose搭建的卸载方法
cd /root/data/docker_data/qBittorrent
docker-compose down
cd ~
rm -rf /root/data/docker_data/qBittorrent # rm -rf 映射出来的路径
5.3 卸载docker本身
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
参考:https://docs.docker.com/engine/install/debian/
5.4 卸载docker-compose
cd /usr/local/bin/
rm -rf docker-compose
5、dcoker-compose更新
cd /root/memos/
一件升级
docker-compose down && docker compose pull && docker compose up -d && docker image prune -y
分解步骤
docker-compose down #停止运行的docker
docker-compose pull #拉取新的镜像
docker-compose up -d #运行
docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
6、docker迁移
例句
scp -P 22 -r memos root@10.10.10.23:/root
迁移命令
tar -czvf .halo.tar.gz .halo.archive
scp -P 22 -r .halo.tar.gz root@192.248.190.156:/root # scp -P 端口 -r /root/backup/backup.tar 你的用户名@你的IP:/root/data/docker_data/
tar -zxvf .halo.tar.gz #解压
mv .halo.archive .halo #把.halo.archive重命名成.halo
参考:https://www.runoob.com/linux/linux-comm-scp.html
https://www.runoob.com/linux/linux-comm-tar.html
九、docker其他命令
#docke IP
ip a
docker 端口
netstat -tunlp
centos发行版本:cat /etc/redhat-release
liunx内核版本:uname -r
ubantu发行版本:cat cat/etc/lsb-release
1、进入docker容器内部
docker run -it 容器名称id bash
退出容器内部
exit
dcoker数据存放路径
默认 Docker 的存放位置为:/var/lib/docker
docker info是:显示 Docker 系统信息,包括镜像和容器数
docker info
docker info | grep "Docker Root Dir"
该文件是记录 镜像和容器的关系
cd /var/lib/docker/image/overlay2/imagedb/content/sha256
运行一个容器,并进入到容器内部
-it开启一个交互式的终端
-rm容器退出时删除该容器
docker run -it --rm centos bash
docker容器管理
dcoker run