Docker 常用命令

本文详细介绍了Docker的各种常用命令,包括镜像操作(查看、检索、拉取、重命名等)、容器操作(创建、启动、停止、删除、日志查看、文件复制等),以及镜像的保存、载入和导出/导入。
摘要由CSDN通过智能技术生成

1 帮助启动类命令

#启动docker
sudo systemctl start docker
#停止docker 
sudo systemctl stop docker
#重启docker
sudo systemctl restart docker 
#查看dokcer 状态
sudo systemctl status docker
#开机启动docker
sudo systemctl enable docker
# 查看docker 基本信息
docker info
#查看docker 版本
docker version
# 查看docker 帮助文档
docker --help
#查看docker某个命令帮助
docker xx --help

2 镜像命令

2.1 查看本地镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]

  • OPTIONS
    • -q 只显示镜像ID,不加 则显示全部字段
    • REPOSITORY
      加上REPOSITORY表示只查看指定镜像名称的镜像,不加 显示全部镜像
#查看本地全部镜像
$docker images
#或[root@localhost ~]# docker image ls 
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
docker.io/redis             latest              dc7b40a0b05d        16 months ago       117 MB
docker.io/openjdk           17.0-jdk-oracle     5e28ba2b4cdb        20 months ago       471 MB
$docker images redis
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/redis     latest              dc7b40a0b05d        16 months ago       117 MB
$docker images -q redis
dc7b40a0b05d

2.2 检索镜像(从镜像库)

docker search [OPTIONS] 镜像名称

  • OPTIONS --limit num 限制数量
$docker search redis
INDEX       NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/redis                               Redis is an open source key-value store th...   12580     [OK]       
docker.io   docker.io/bitnami/redis                       Bitnami Redis Docker Image                      271                  [OK]=
$docker search --limit 2 redis

NAME:镜像名称, DESCRIPTION :镜像描述 ,STARS :点赞数量 OFFICIAL:是否官方认证, AUTOMATED:
是否自动提交

2.3 拉取镜像

docker pull NAME[:TAG|@DIGEST]

  • tag 镜像版本,不加则拉取最新的镜像 即tag为latest
  • 常用拉取镜像
#不指定TAG 默认为latest
$docker pull redis
Using default tag: latest
Trying to pull repository docker.io/library/redis ... 
#指定TAG 
$docker pull clickhouse/clickhouse-server:23.12.1
  • 指定CPU架构
    用于 为其它不能上网且不同CPU架构的服务器 拉取镜像再save 、load 镜像
docker pull --platform linux/arm64 clickhouse/clickhouse-server:23.12.1

–platform linux 为固定形式,arm64 为CPU架构, linux/amd64 为x86架构 ,linux/arm64 为ARM64架构,linux/arm/v7 为 ARMv7 架构

  • 指定DIGEST 拉取镜像
    DIGEST 值 需要到官网查看某个镜像具体版本 里 查看指定容器的DIGEST完整的值(每个镜像一个唯一DIGEST),这种形式用于 为其它不能上网且不同CPU架构的服务器 拉取镜像再save 、load 镜像
$ docker pull clickhouse/clickhouse-server@sha256:875612540f825b535c75a81b6b548ee12ef085e08d8301d1e34653a06a47f719

在这里插入图片描述在这里插入图片描述

2.4 查看镜像、容器、数据卷的空间

$docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              14                  6                   4.006 GB            2.049 GB (51%)
Containers          9                   5                   90.09 MB            46.61 MB (51%)
Local Volumes       36                  2                   3.148 GB            3.148 GB (99%)

2.5 “重命名”镜像

如果你想要自定义镜像名称或者推送镜像到其他镜像仓库,你可以使用docker tag命令将镜像重命名。

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

$docker tag busybox:latest mybusybox:latest
#执行完docker tag命令后,可以使用查询镜像命令查看一下镜像列表:
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              018c9d7b792b        3 weeks ago         1.22MB
mybusybox           latest              018c9d7b792b        3 weeks ago         1.22MB

可以看到,镜像列表中多了一个mybusybox的镜像。但请注意,busybox和mybusybox这两个镜像的 IMAGE ID 是完全一样的。为什么呢?实际上它们指向了同一个镜像文件,只是别名不同而已。

2.6 容器提交为镜像

使用docker commit命令从运行中的容器提交为镜像,当对某个容器进行文件编辑或者扩展功能后,需要保存为新的镜像时使用

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

  • 常用格式
    docker commit -m=“[提交的描述信息]” -a=“[作者]” [容器ID] [新的镜像名称]:[新的镜像标签]
$docker commit -m="installed vim" -a="circle" dd90b084d152 ubuntuvim:1.0

2.7 删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE…]

  • OPTIONS
    • -f 强制删除
  • IMAGE :镜像名称[:TAG]或镜像ID
#删除hello-world 镜像
$docker rmi hello-world
#删除redis:latest 和hello-world 镜像
$docker rmi -f redis:latest hello-world
# 删除全部
$docker rmi -f ${docker images -qa}

2.8 保存\载入镜像

docker save 命令用于将 Docker镜像 保存成 tar 包。docker save 命令的相对应的命令为 docker load。
docker export 命令用于将容器里的文件系统作为一个 tar 归档文件导出到标准输出,注意这两者的区别。

命令常用于 为了在不能连接外网的服务器上部署镜像,首先在一台能联网的机器上下载好镜像并save/export 为文件,然后拷贝到不能联网的服务器 再 load/import

2.8.1 保存镜像

docker save 命令用于将 Docker镜像 保存成 tar 包。docker save 命令的相对应的命令为 docker load。

docker save [OPTIONS] IMAGE [IMAGE…]
OPTIONS

  • -o, 输出到的文件。

常用命令

docker save -o filename.tar imag:tag

$docker images
REPOSITORY                     TAG       IMAGE ID       CREATED         SIZE
hello-world                    latest    feb5d9fea6a5   2 years ago     13.3kB
# 注意 要用镜像名+TAGhello-world:latest 不要用镜像ID,否则执行load后 会没有名称和Tag
$docker save -o helloworld.tar hello-world:latest

2.8.2 载入镜像

docker load 命令用于从 tar 归档文件或者标准输入流载入镜像。docker load 命令的相对应的命令为 docker save。

docker load [OPTIONS]
OPTIONS

  • docker load -i 从tar文件中load。
  • docker load -q 精简输出信息。
    常用命令
    docker load -i file.tar
$docker load -i helloworld.tar 
$ docker images
REPOSITORY                     TAG       IMAGE ID       CREATED         SIZE
hello-world                    latest    feb5d9fea6a5   2 years ago     13.3kB

2.9 查看镜像内部详情

docker image inspect [OPTIONS] IMAGE [IMAGE…]
或docker inspect [OPTIONS] IMAGE [IMAGE…] IMAGE 为镜像名称或镜像ID

$ docker image inspect feb
[
    {
        "Id": "sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412",
        "RepoTags": [
            "hello-world:latest"
        ],
        "RepoDigests": [],
        ---------------

3 容器相关命令

3.1 创建容器和启动

3.1.1 创建容器并启动(最常用)

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS

  • –name 名称, 为容器指定名称,不指定 随机分配
  • -d ,后台运行容器(守护模式) 并返回容器ID
    -d 以后台模式启动一个容器,这个容器必须有一个前台线程即容器必须运行一些挂起的命令(如 top,tail 之类),否则容器认为没事儿可做,直接退出停止,如ubuntu ,nginx 之类的容器就不适合,这类必须以前台进程的形式运行。
  • -it ,启动一个交互式容器,-i:交互式运行, -t:分配一个伪终端
  • -v 挂载卷,宿主机路径:容器内路径[:读写权限],要挂载多个目录、文件, 写多个-v HOST_PATH1:CONTIANAER1 -v HOST_PATH2:CONTIANAER2 。。。
    挂载卷时建议加上 -privileged=true ,这样 container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权,不加此参数可能会出现:“ cannot open directory .: Permission denied”
  • -p 主机端口:容器内端口, 将docker容器内某个端口映射到物理主机的某个端口 ,注意这里是小写的p,多个映射,写多个-p 分别映射
#运行一个ubuntu 容器,并启动 交互式shell(/bin/bash)操作容器
$docker run -it ubuntu /bin/bash
# 将容器内的80端口映射到主机的8080端口,将容器内的443端口映射到主机的8443端口
#/data/nginx 是宿主机目录,/opt/nginx/html 是容器目录,将容器内目录/opt/nginx/html 挂载(映射)到主机目录 /data/nginx
$docker run -d --name nginx_test -p 8080:80 -p 8443:443 -v /data/nginx:/opt/nginx/html nginx

3.1.2 只创建容器不启动

docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
用法与docker run 一致

3.2 列出本机的容器

docker ps [OPTIONS]

  • 不加参数 列出所有正在运行的容器
  • OPTIONS
    • -a 列出所有创建过的容器
    • -l 列出最近创建的容器
$docker ps -a
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS                     PORTS                    NAMES
d9b62006ad21        docker.io/nginx:latest               "/docker-entrypoin..."   10 months ago       Exited (0) 10 months ago                            nginx-server
60381edf9b3c        docker.osgeo.org/geoserver:2.22-M0   "/bin/sh -c /opt/s..."   16 months ago       Exited (1) 16 months ago                            pensive_goldstine

3.3 退出容器

  • run 创建、运行并进入的容器 执行 exit,退出并且容器停止
  • run 创建、运行并进入的容器 ctrl+p+q 退出容器,容器不停止

3.4 启动已经停止的容器

docker start [OPTIONS] CONTAINER [CONTAINER…]

  • CONTAINER 可以是容器ID或容器名称
$docker start d9b

3.5 重启容器

将运行中的容器终止,并且重新启动它

docker restart [OPTIONS] CONTAINER [CONTAINER…]

  • CONTAINER 可以是容器ID或容器名称
$docker restart d9b

3.6 停止容器

docker stop [OPTIONS] CONTAINER [CONTAINER…]

  • CONTAINER 可以是容器ID或容器名称
$docker stop d9b

3.7 强制停止容器

docker kill [OPTIONS] CONTAINER [CONTAINER…]

  • CONTAINER 可以是容器ID或容器名称
$docker kill d9b

3.8 删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER…]

  • CONTAINER 可以是容器ID或容器名称
  • docker rm CONTAINER : 删除停止的容器
  • OPTIONS
    • -f : 强制删除容器,不管容器是否正在运行
# 删除停止的容器
$docker rm d9bdocke

3.9 容器日志

docker logs [OPTIONS] CONTAINER

  • OPTIONS
    • -f, 跟踪日志输出
    • –since, 显示某个开始时间的所有日志
    • -t, 显示时间戳
    • –tail ,仅列出最新N条容器日志## 3.10 查看docker 内的进程
# 查看并跟踪容器d9b 最后100条日志 并跟踪日志
$docker logs -t --tail 100 -f  d9b
2024-01-10T01:59:00.397842000Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
2024-01-10T01:59:00.402991000Z /docker-entrypoint.sh: Configuration complete; ready for start up

3.10 查看容器内部细节

docker inspect [OPTIONS] NAME|ID [NAME|ID…]

 docker inspect c72#(容器ID)
 #查看输出的Mounts 部分,查看挂载详情 Source 宿主机路径,Destination 容器内路径
"Mounts": [
            {
                "Type": "bind",
                "Source": "/tmp/dockerubuntu",
                "Destination": "/tmp/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

3.11 重新进入容器

  • docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
    • 常用命令 docker exec -it CONTAINER /bin/bash
  • docker attach [OPTIONS] CONTAINER 不推荐使用:
  • 两者区别
    • attach 直接进入 容器启动命令的终端(不开启新的终端,不开启新的进程),用exit 退出容器,会导致容器停止
    • exec 是在容器中打开新的终端,并且可以启动新的进程,用exit 退出容器,不会导致容器停止

3.12 宿主机和容器间拷贝文件

从容器拷贝文件到宿主机:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
从宿主机拷贝文件至容器:docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

#拷贝容器9ca 中的文件 /tmp/a.txt 到宿主机 /root/tmp目录
$docker cp 9ca:/tmp/a.txt /root/tmp
Successfully copied 2.05kB to /root/tmp/
$docker cp m.txt fd:/opt/
Successfully copied 2.05kB to fd:/opt/

3.130导出导入容器

docker export [OPTIONS] CONTAINER
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

常用格式

docker export 容器名或容器ID > 文件名.tar
docker import文件名.tar 镜像名:TAG

我们可以使用docker export CONTAINER命令导出一个容器到文件,不管此时该容器是否处于运行中的状态。通过docker export命令导出的文件,可以使用docker import命令导入,执行完docker import后会变为本地镜像,最后再使用docker run命令启动该镜像,这样我们就实现了容器的迁移

root@LAPTOP-BIJVAB4T:~# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED        STATUS       PORTS     NAMES
9ca40bc6fb09   ubuntu    "/bin/bash"   15 hours ago   Up 2 hours             objective_chaum
# 进入容器
root@LAPTOP-BIJVAB4T:~# docker exec -it 9ca /bin/bash
#z在容器内创建文件
root@9ca40bc6fb09:/tmp# echo "addddd">>a.txt
#导出容器
root@LAPTOP-BIJVAB4T:~# docker export 9ca > ubuntu.tar
#导入容器
root@LAPTOP-BIJVAB4T:~# dokcer import ubuntu.tar myubuntu:test
#查看镜像
root@LAPTOP-BIJVAB4T:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
myubuntu     test      b94fee4da8e6   14 seconds ago   72.8MB
ubuntu       latest    ba6acccedd29   2 years ago      72.8MB
#创建容器
root@LAPTOP-BIJVAB4T:~# docker run -it myubuntu:test /bin/bash
#查看容器内的文件 可以看到我们之前在 /tmp 目录下创建的 a.txt文件也被迁移过来了
root@e77f133353db:/# cat /tmp/a.txt
addddd
  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值