Docker常用命令

时间:2024-03-18 11:53:12

docker常用命令

1、基础命令

启动docker

systemctl start docker

关闭docker

systemctl stop docker

重启docker

systemctl restart docker

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

systemctl enable docker

查看docker运行状态

systemctl status docker

查看docker版本号

docker info / docker version

docker帮助命令

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 镜像

拉取镜像

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 的地方加载镜像保存文件,使其恢复为一个镜像

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 查看实际路径。

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

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

查看正在执行的容器列表

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

杀死容器

docker kill 容器ID/容器名

容器文件拷贝

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

查看容器日志

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

自己提交一个镜像

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

容器改名

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

查看docker工作目录

sudo docker info | grep "Docker Root Dir"

查看docker磁盘占用情况

du -hs /var/lib/docker/ 

查看docker的磁盘使用情况

docker system df

删除无用的容器和镜像

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

清除无容器使用的镜像

docker system prune -a