安装docker
更新、安装必备软件
apt-get update && apt-get install -y wget vim
Docker安装
wget -qO- get.docker.com | bash
卸载Docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Docker-compose安装
我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases
运行以下命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.3/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 Compose的二进制文件所在的位置。例如,在Linux上,通常是/usr/local/bin/docker-compose。
删除该文件:
sudo rm /usr/local/bin/docker-compose
Docker容器修改名称
先停止容器
修改名称
docker rename <当前名称> <新名称>
Docker删除容器与镜像
列出所有容器ID
docker ps -aq
查看所有运行或者不运行容器
docker ps -a
停止所有的container(容器),这样才能够删除其中的images
docker stop $(docker ps -a -q) 或者 docker stop $(docker ps -aq)
如果想要删除所有container(容器)的话再加一个指令
docker rm $(docker ps -a -q) 或者 docker rm $(docker ps -aq)
查看当前有些什么images
docker images
删除images(镜像),通过image的id来指定删除谁
docker rmi image id
想要删除untagged images,也就是那些id为的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
要删除全部image(镜像)的话
docker rmi $(docker images -q)
强制删除全部image的话
docker rmi -f $(docker images -q)
从容器到宿主机复制
docker cp tomcat:/webapps/js/text.js /home/admin
docker cp 容器名: 容器路径 宿主机路径
从宿主机到容器复制
docker cp /home/admin/text.js tomcat:/webapps/js
docker cp 宿主路径中文件 容器名 容器路径
删除所有停止的容器
docker container prune
删除所有不使用的镜像
docker image prune --force --all或者docker image prune -f -a
停止、启动、杀死、重启一个容器
docker stop Name或者ID
docker start Name或者ID
docker kill Name或者ID
docker restart name或者ID
docker服务启动,重启,关闭命令
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker
查看docker挂载的文件
查看特定容器的挂载信息:
使用 docker inspect 命令查看特定容器的详细信息,包括其挂载点。
命令示例:
docker inspect 容器ID或名称
在输出结果中,查找 Mounts 部分,这里会列出所有挂载点的详细信息,包括挂载类型(如 volume 或 bind)、源路径和目标路径等。
或者更简单使用:
docker inspect -f '{{range .Mounts}}{{.Source}} -> {{.Destination}} {{"\n"}}{{end}}' 容器名
查看所有卷的信息:
如果想要查看Docker中所有卷的信息,可以使用 docker volume ls 命令列出所有卷,然后用 docker volume inspect 查看特定卷的详细信息。
列出所有卷的命令:
docker volume ls
查看特定卷的详细信息:
docker volume inspect 卷名称
通过这些方法,您可以获得容器挂载点的详细信息,了解数据是如何被存储和管理的。
删除所有未使用的卷
docker volume prune
查看docker容器占用内存大小
1.用 docker inspect 找 PID
docker inspect -f '{{.State.Pid}}' 容器ID
2.然后去看这个进程挂在哪个 cgroup:
cat /proc/刚刚返回的数字/cgroup
他会返回这样的
0::/system.slice/docker-bfff1842a698d68509c978543305894db288c33f95f0f25398125cb7154365f0.scope
3.然后运行命令
cd /sys/fs/cgroup/system.slice/docker-bfff1842a698d68509c978543305894db288c33f95f0f25398125cb7154365f0.scope/
echo "物理内存使用: $(($(cat memory.current)/1024/1024)) MB"
echo "物理内存上限: $(cat memory.max)"
echo "Swap 使用: $(($(cat memory.swap.current)/1024/1024)) MB"
echo "Swap 上限: $(cat memory.swap.max)"
容器共享宿主机的网络
1.在docker中默认有三种模式的网络
bridge 网络 (它为容器提供隔离的虚拟网络),当你没有指定网络时,默认这个模式
host 网络 (容器共享宿主机的网络)
none 网络(容器启动时不分配网络接口)
2.共享网络
所以我们在运行docker命令的时候不需要-p映射端口例如:
docker run -d --restart=unless-stopped -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name=“alist” xhofe/alist:latest
修改成
docker run -d --restart=unless-stopped -v /etc/alist:/opt/alist/data --network host -e PUID=0 -e PGID=0 -e UMASK=022 --name=“alist” xhofe/alist:latest
防火墙
查看docker容器的ip
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名
查看docker防火墙存在的规则
iptables -L DOCKER --line-numbers
删除规则
iptables -D DOCKER 编号
删除1到3的编号
for i in {3..1}; do iptables -D DOCKER $i; done
开放端口
iptables -A DOCKER -s 0.0.0.0/0 -d 容器的ip -p tcp --dport 端口 -j ACCEPT
指定的ip可以访问
iptables -A DOCKER -p tcp -s 指定的ip --dport 8067 -j ACCEPT
禁用端口
iptables -A DOCKER -s 0.0.0.0/0 -d 容器的ip -p tcp --dport 端口 -j REJECT
现在有个问题就是当重启docker后,规则会自动还原解决的思路是先保存当前的所有规则
sudo iptables-save > /etc/iptables/rules.v5
当重启系统或者docker的时候就加载保存后的规则
sudo iptables-restore /etc/iptables/rules.v5
本地构建 Docker 镜像。在终端中运行以下命令
docker build -t <image-name> .
在这个命令中,“-t”选项指定镜像的名称,“.”表示当前目录是上下文,也就是 Docker 构建环境的根目录
等待 Docker 镜像构建完成后,您可以运行以下命令来启动容器:
docker run -d -p 3000:3000 <image-name>
在这个命令中,“-d”选项将容器设置为“后台运行”,“-p”选项将容器内部的端口映射到主机上的端口。
显示 Docker 镜像的历史记录
示例
假设您有一个名为
myimage:latest 的 Docker 镜像,要查看其构建历史,您可以运行:
docker history myimage:latest
如果您需要查看完整的构建命令,不希望它们被截断,可以使用:
docker history --no-trunc myimage:latest
清理 Docker 缓存:
Docker 可能会积累大量的未使用镜像层,可以通过以下方式清理:
docker system prune --all --volumes --force
这会删除所有未使用的镜像、容器、数据卷和网络。
在执行这些命令前,请确保了解清理操作的影响,以免删除了重要的数据或配置。备份重要数据是一个良好的做法。
docker镜像迁移
Docker 的迁移通常指的是将 Docker 容器或镜像从一个主机迁移到另一个主机。这个过程可以分为几个基本步骤:
保存镜像:在原始主机上,使用 docker save 命令将 Docker 镜像保存为一个文件。例如,如果你想保存一个名为 myimage 的镜像,可以使用以下命令:
docker save myimage > myimage.tar
传输文件:将保存的镜像文件(例如 myimage.tar)从原始主机传输到目标主机。你可以使用 SCP、FTP 或任何其他文件传输方法。
加载镜像:在目标主机上,使用 docker load 命令从文件中加载镜像。例如:
docker load < myimage.tar
运行容器:一旦镜像被加载到目标主机上,你就可以像平常一样使用 docker run 命令来启动容器了。
docker如何把镜像上传
将 Docker 镜像上传到仓库的过程通常涉及以下几个步骤:
创建或获取 Docker 镜像:首先,你需要有一个 Docker 镜像。这可以是你自己创建的镜像,或者是你从别处下载并修改的镜像。
标记(Tag)镜像:在上传镜像之前,你需要给它打上一个标签(tag),这个标签应该包含仓库的地址。例如,如果你要上传到 Docker Hub,并且你的用户名是 myusername,镜像名是 myimage,你可以使用以下命令:
docker tag myimage myusername/myimage:tag
这里的 tag 可以是任何你喜欢的标记,比如 latest 或者版本号。
登录到 Docker 仓库:在上传镜像之前,你需要登录到 Docker 仓库。如果你使用的是 Docker Hub,可以使用以下命令:
docker login
然后按提示输入你的 Docker Hub 用户名和密码。
退出登录:
docker logout
上传镜像:使用 docker push 命令来上传你的镜像到仓库。继续上面的例子,命令将是:
docker push myusername/myimage:tag
验证上传:上传完成后,你可以在 Docker 仓库的网站上查看你的镜像,确保它已经正确上传。
评论区