侧边栏壁纸
  • 累计撰写 29 篇文章
  • 累计创建 9 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

docker常用命令

千城
2024-11-05 / 0 评论 / 1 点赞 / 565 阅读 / 0 字

安装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 仓库的网站上查看你的镜像,确保它已经正确上传。

1

评论区