Docker常用命令

docker常用命令

1、基础命令

启动docker

java 复制代码
systemctl start docker

关闭docker

java 复制代码
systemctl stop docker

重启docker

java 复制代码
systemctl restart docker

docker设置随服务器启动而启动

java 复制代码
systemctl enable docker

查看docker运行状态

java 复制代码
systemctl status docker

查看docker版本号

java 复制代码
docker info / docker version

docker帮助命令

java 复制代码
docker pull --help

查看自己服务器中的docker镜像

docker images -a //a:all
docker images -aq //显示全部,但是只显示id

搜索镜像

docker search 镜像名/id
docker search--filter=STARS=9000 mysql //搜索 STARS >9000的 mysql 镜像

拉取镜像

java 复制代码
docker pull 镜像名
docker pull 镜像名:tag //tag是版本号

不加tag 就默认拉取最新版本

运行镜像

docker run 镜像名
docker run 镜像名:Tag

run 命令是十分复杂的 有什么持久运行 映射端口 设置容器别名 数据卷挂载等

停止容器

docker stop 容器名/容器id

删除镜像

docker rmi -f 镜像名/镜像ID
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID //删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f $(docker images -aq) //删除全部镜像
docker image rm 镜像名称/镜像ID //强制删除镜像

-f是强制删除标志

在命令行中,符号用于表示变量。在这个命令中,符号用于表示变量。在这个命令中,(docker images -aq) 返回一个列表,其中包含所有docker镜像的id,然后将此列表作为参数传递给docker rmi -f命令,用来强制删除所有docker镜像。因此,$符号指示命令行将其替换为由括号括起来的命令输出,以便在执行命令时使用正确的参数。

保存镜像

将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像

docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
docker save tomcat -o /myimg.tar //o:output

加载镜像

任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像

java 复制代码
docker load -i 镜像保存文件位置 //i:input

查看docker日志文件存储位置

docker inspect --format='{{.LogPath}}' my_container

实际使用中将my_container换成想要查询容器的id或者名称

查看docker镜像中的挂载点

如果您想要在 Docker 容器运行时挂载一个主机目录,但是不知道该目录在容器中的路径,可以使用 docker inspect 命令查看容器的详细信息,包括容器中的挂载点。具体来说,您可以使用以下命令查看容器的详细信息:

docker inspect container_name

在这个命令中,container_name 是您要查看的容器的名称或 ID。

执行此命令后,将显示该容器的详细信息,包括其挂载点。您可以查看 "Mounts" 部分,以查看容器中的所有挂载点及其路径。例如:

"Mounts": [
    {
        "Type": "bind",
        "Source": "/home/user/app",
        "Destination": "/app",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
]

在这个例子中,/home/user/app 是在容器中挂载的主机目录的路径,/app 是容器中该目录的挂载点。因此,您可以使用 -v 选项将该目录挂载到容器中并指定其挂载点。例如:

docker run -v /home/user/app:/app image_name

在这个例子中,image_name 是您要运行的 Docker 镜像的名称。当容器启动时,/home/user/app 目录将被挂载到容器中的 /app 目录,因此您可以在容器中使用 /app 查看实际路径。

上述命令执行后,展示的数据较多,可以通过下面命令只查看容器挂载目录部分:

dockerfile 复制代码
docker inspect --format='{{json .Mounts}}' <container_name_or_id> | jq

2、进阶操作

镜像标签

有的时候呢,我们需要对一个镜像进行分类或者版本迭代操作,比如我们一个微服务已经打为docker镜像,但是想根据环境进行区分为develop环境与alpha环境,这个时候呢,我们就可以使用Tag,来进对镜像做一个标签添加,从而行进区分;版本迭代逻辑也是一样,根据不同的tag进行区分

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG

# 如果省略TAG 则会为镜像默认打上latest TAG
docker tag aaa bbb
# 上方操作等于 docker tag aaa:latest bbb:test

# 我们根据镜像 quay.io/minio/minio 添加一个新的镜像 名为 aaa 标签Tag设置为1.2.3
docker tag quay.io/minio/minio:1.2.3 aaa:1.2.3

# 我们根据镜像 app-user:1.0.0 添加一个新的镜像 名为 app-user 标签Tag设置为alpha-1.0.0
docker tag app-user:1.0.0 app-user:alpha-1.0.0

查看正在执行的容器列表

java 复制代码
docker ps
docker ps -a

运行容器

# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行)  --name 给要运行的容器 起的名字  /bin/bash  交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash 

-p 宿主机端口:容器端口

docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash

# 运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动
docker run -d -p 6379:6379 --name redis505 --restart=always  -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf  redis:5.0.5 --requirepass "password"

进入容器

docker exec -it 容器名/容器ID /bin/bash

#进入 前面的 redis001容器   
docker exec -it redis001 /bin/bash

退出容器

#-----直接退出  未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭  
exit
# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q

杀死容器

java 复制代码
docker kill 容器ID/容器名

容器文件拷贝

java 复制代码
#docker cp 容器ID/名称:文件路径  要拷贝到外部的路径   |     要拷贝到外部的路径  容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径  容器外路径
#从外部 拷贝文件到容器内
docker  cp 容器外路径 容器ID/名称: 容器内路径

查看容器日志

docker logs -f --tail=要查看末尾多少行 默认all 容器ID

自己提交一个镜像

docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag

容器改名

java 复制代码
docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag

查看docker工作目录

java 复制代码
sudo docker info | grep "Docker Root Dir"

查看docker磁盘占用情况

java 复制代码
du -hs /var/lib/docker/ 

查看docker的磁盘使用情况

java 复制代码
docker system df

删除无用的容器和镜像

#  删除异常停止的容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'` 
 
#  删除名称或标签为none的镜像
docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`

清除无容器使用的镜像

java 复制代码
docker system prune -a
相关推荐
大G哥1 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
大道归简2 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
zeruns8022 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~2 小时前
Docker
docker·容器
福大大架构师每日一题3 小时前
23.1 k8s监控中标签relabel的应用和原理
java·容器·kubernetes
程序那点事儿3 小时前
k8s 之动态创建pv失败(踩坑)
云原生·容器·kubernetes
疯狂的大狗3 小时前
docker进入正在运行的容器,exit后的比较
运维·docker·容器
长天一色3 小时前
【Docker从入门到进阶】01.介绍 & 02.基础使用
运维·docker·容器
伊玛目的门徒3 小时前
docker 搭建minimalist-web-notepad
运维·docker·notepad
theo.wu6 小时前
使用Buildpacks构建Docker镜像
运维·docker·容器