Docker常用命令大全

在这里插入图片描述

docker 基础命令(系统级)

启动docker

systemctl start docker
service docker start

关闭docker

systemctl stop docker
service docker stop

重启docker

systemctl restart docker
service docker restart

docker设置自启动

systemctl enable docker

查看docker 运行状态 ------如果是在运行中 输入命令后 会看到绿色的active

systemctl status docker

查看docker 版本号信息

docker version
docker info

docker 帮助命令 -------忘记了某些命令便可使用此进行查看与回顾

docker --help

比如 咱忘记了 拉取命令 不知道可以带哪些参数 咱可以这样使用

docker pull --help

配置文件 /etc/docker/daemon.json

{    # 修改镜像源
    "registry-mirrors":["https://7rq4plav.mirror.aliyuncs.com"],
    # 仓库地址
    "insecure-registries":["172.16.1.208:30002"],
    # 数据存放目录
    "data-root": "/data/docker",
    # 启用debug模式
    "debug": true,
    # runtime
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia":{
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

修改后需要使用命令加载并重启docker

systemctl daemon-reload
systemctl restart docker

docker语法

docker [command] [image_name:tag] [flags]

command子命令包括以下:

容器生命周期管理
  • run
  • start/stop/restart
  • kill
  • rm
  • pause/unpause
  • create
  • exec
容器操作
  • ps
  • inspect
  • top
  • attach
  • events
  • logs
  • wait
  • export
  • port
  • stats
容器rootfs命令
  • commit
  • cp
  • diff
镜像仓库
  • login
  • pull
  • push
  • search
本地镜像管理
  • images
  • rmi
  • tag
  • build
  • history
  • save
  • load
  • import
info|version
  • info
  • version

docker 镜像命令

登陆仓库

docker login 仓库地址

创建镜像

docker build -f ./Dockerfile -t 镜像名:版本 .

查看自己服务器中docker 镜像列表

docker images

搜索镜像

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

拉取镜像

不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名 
docker pull 镜像名:tag

咱再来拉取一个指定版本号 镜像 至于版本号呢 ,可以在docker hub中查看docker官方镜像

运行镜像

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

docker中 run 命令是十分复杂的 有什么持久运行 映射端口 设置容器别名 数据卷挂载等,后面会详细介绍

删除镜像
当前镜像没有被任何容器使用才可以删除

#删除一个
docker rmi 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi $(docker images -aq)
强制删除镜像
docker image rm -f 镜像名称/镜像ID

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

# 保存镜像
docker save $IMAGE_NAME:$VERSION | gzip > $SAVE_DIR/$IMAGE_NAME.tar.gz
# 加载镜像
gunzip -c $SAVE_DIR/$IMAGE_NAME.tar.gz | docker load
# 给镜像打标签
docker tag 源镜像名:TAG 新镜像名:新TAG

docker 容器命令

查看正在运行容器列表

docker ps

查看所有容器 -----包含正在运行 和已停止的

docker ps -a

容器怎么来呢 可以通过run 镜像 来构建 自己的容器实例

运行一个容器
# docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash 
-d, --detach=false,      指定容器运行于前台还是后台,默认为false
-i, --interactive=false, 打开STDIN,用于控制台交互
-t, --tty=false,         分配tty设备,该可以支持终端登录,默认为false
-it,                      以交互模式进入容器,通常在最后通过/bin/bash或bash进入
-u, --user="",           指定容器的用户
-w, --workdir="",        指定容器的工作目录
-c, --cpu-shares=0,      设置容器CPU权重,在CPU共享场景使用
-e, --env=[],            指定环境变量,容器中可以使用该环境变量
-m, --memory="",         指定容器的内存上限
-P, --publish-all=false, 指定容器暴露的端口
-p, --publish=[],        指定容器暴露的端口
-h, --hostname="",       指定容器的主机名
-v, --volume=[],         给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[],       给容器挂载其他容器上的卷,挂载到容器的某个目录
--cidfile="",            运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset="",             设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--cpu="",                 用来设置工作线程的数量。有多颗 CPU,则需要相应增加 --cpu 的数量。
--device=[],             添加主机设备给容器,相当于设备直通
--dns=[],                指定容器的dns服务器
--dns-search=[],         指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
--entrypoint="",         覆盖image的入口点
--env-file=[],           指定环境变量文件,文件格式为每行一个环境变量
--expose=[],             指定容器暴露的端口,即修改镜像的暴露端口
--ip="",                  指定容器的静态ip
--link=[],               指定容器间的关联,使用其他容器的IP、env等信息
--name="",               指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--net="bridge",          容器网络设置:
        bridge            		使用docker daemon指定的网桥
        host              		容器使用主机的网络
        container:NAME_or_ID 	使用其他容器的网路,共享IP和PORT等网络资源
        none              		容器使用自己的网络(类似--net=bridge),但是不进行配置
--privileged=false,      指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart="no",          指定容器停止后的重启策略:
        no                		容器退出时不重启
        on-failure        		容器故障退出(返回值非零)时重启
        always            		容器退出时总是重启
--rm=false,              指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=true,        设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
--runtime=nvidia          设置runtime
--gpus all                设置显卡

停止容器

docker stop 容器名/容器ID

删除容器

#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)

重启容器

docker restart 容器ID/容器名

启动容器

docker start 容器ID/容器名

kill 容器

docker kill 容器ID/容器名

进入容器

#  方式一
docker exec -it 容器名/容器ID /bin/bash
#  方式二 
docker attach 容器名/容器ID

从容器内 退出到自己服务器中 需注意 两个退出命令的区别

#=直接退出  未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭  
exit

# 优雅退出 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q

容器文件拷贝 —无论容器是否开启 都可以进行拷贝

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

查看容器日志

docker logs -f --tail=要查看末尾多少行(默认all) 容器ID
# 当容器启动失败时,通过下面方法
docker inspect --format '{{.LogPath}}' 容器ID

容器配置更新

docker update --restart=always 容器Id 或者 容器名

更换容器名

docker rename 容器ID/容器名 新容器名

自己提交一个镜像
我们运行的容器可能在镜像的基础上做了一些修改,有时候我们希望保存起来,封装成一个更新的镜像,这时候我们就需要使用 commit 命令来构建一个新的镜像

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

获取元数据

docker inspect 容器名/容器ID  
# 获取正在运行的容器mymysql的 IP。  
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql

查看容器中运行的进程信息

docker top 容器名/容器ID

查看指定镜像的创建历史

docker history 镜像:版本

docker 网络

新建网络

docker network create --driver bridge --subnet 172.18.0.0/24  --gateway 172.18.0.1 $net_name

使用网络固定IP

docker run --name mongo5 --network $net_name --ip 172.18.0.5 -p 27005:27017 -d mongo:4

docker 运维命令

可能有时候发布会遇到如下错误:

docker: write /var/lib/docker/tmp/GetImageBlob325372670: no space left on device

这个错误是docker在写入的时候报错无机器无空间

# 查看docker工作目录
sudo docker info | grep "Docker Root Dir"

更改docker工作目录

systemctl stop docker
sudo cp -r /var/lib/docker/* /data/docker
vim /etc/docker/daemon.json
# 添加这句话    "data-root": "/data/docker",
systemctl daemon-reload
systemctl start docker

查看docker磁盘占用总体情况

du -hs /var/lib/docker/ 

查看Docker的磁盘使用具体情况

docker system df
	TYPE 列出了 Docker 使用磁盘的 4 种类型:
	Images            所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。
	Containers        运行的容器占用的空间,表示每个容器的读写层的空间。
	Local Volumes     容器挂载本地数据卷的空间。
	Build Cache       镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)。

删除无用的镜像

# 清除所有无容器使用的镜像
docker system prune
#  删除名称或标签为none的镜像
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`

删除无用的容器

# 清理停止的容器
docker container prune 
#  删除异常停止的容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'` 
# 删除状态为exited的容器
sudo docker rm $(sudo docker ps -qf status=exited)

删除无用的数据卷

docker volume prune

删除无用的构建缓存

docker builder prune

一键清理所有无用的空间

docker system prune

命令卡

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值