🔥平平无奇又好用的Docker命令(日常流)

Docker search

docker search 命令用于在 Docker Hub 上搜索镜像,语法如下:

docker search [OPTIONS] TERM

常用的选项包括:

  • --filter, -f: 根据条件过滤镜像,例如 --filter "stars=3" 可以只显示星级为 3 的镜像。
  • --format: 指定输出格式,例如 --format "table {{.Name}}\t{{.Description}}" 可以将输出格式化为表格。

例如,要搜索名为 nginx 的镜像,可以使用以下命令:

docker search nginx

搜索结果将以表格形式显示,包括镜像名称、描述、星级、官方镜像标志等信息。

另外,若要搜索本地镜像而非 Docker Hub 上的镜像,则需要在搜索命令前加上 docker image 前缀,例如:

docker image search ubuntu

Docker pull

docker pull命令用于从Docker Hub或其他Docker镜像仓库拉取一个镜像到本地,语法为:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

其中,OPTIONS为docker pull命令的可选参数,可用参数列表详见docker官方文档。NAME表示需要拉取的镜像的名称,TAG为镜像的标签(版本),DIGEST为镜像的哈希值。

例如,要拉取官方的Ubuntu操作系统镜像,可以使用以下命令:

docker pull ubuntu

如果需要指定Ubuntu操作系统的版本为18.04,可以使用以下命令:

docker pull ubuntu:18.04

执行该命令后,Docker将从Docker Hub上下载并保存Ubuntu 18.04操作系统的镜像到本地。

Docker run

docker run 命令用来启动一个新的容器,它的语法格式如下:

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

其中,OPTIONS 是可选的容器配置项,IMAGE 是要启动的容器镜像名称或者 ID,COMMAND 是容器启动后要执行的命令,ARG 表示传递给命令的参数。

下面是一些常见的 docker run 命令的用法示例:

  1. 以交互式方式启动容器:

    docker run -it ubuntu /bin/bash
    

    在这个命令中,-it 表示以交互式和伪终端的方式运行容器,ubuntu 是要启动的容器镜像,/bin/bash 是容器启动后要执行的命令。

  2. 指定容器名称:

    docker run --name my_container ubuntu
    

    在这个命令中,--name 指定了容器的名称为 my_container

  3. 挂载主机目录到容器内部:

    docker run --name my_container -v /host/path:/container/path ubuntu
    

    在这个命令中,-v 参数用来将主机上的 /host/path 目录挂载到容器内部的 /container/path 目录中。

  4. 暴露容器端口:

    docker run --name my_container -p 80:80 nginx
    

    在这个命令中,-p 参数用来将容器内部的 80 端口映射到主机的 80 端口上。

  5. 设置容器启动时的环境变量:

    docker run --name my_container -e MYSQL_ROOT_PASSWORD=123456 mysql
    

    在这个命令中,-e 参数用来设置容器的环境变量,这里设置了 MySQL 的 root 用户的密码为 123456

Docker exec

docker exec 命令用于在正在运行的 Docker 容器中运行指定的命令。

使用 docker exec 命令的格式如下:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

其中,OPTIONS 可以省略,常用的选项如下:

  • -i:保持标准输入打开,使得可以与容器交互。
  • -t:分配一个伪终端,使得可以与容器交互。

CONTAINER 是要操作的容器的名称或 ID。

COMMAND 是要在容器内运行的命令。

ARG... 是命令的参数。

示例:

  1. 在名为 mycontainer 的容器中执行命令 /bin/bash 并分配一个伪终端:

    docker exec -it mycontainer /bin/bash
    
  2. 在名为 mycontainer 的容器中执行命令 ls -l

    docker exec mycontainer ls -l
    

注意:要使用 docker exec 命令,容器必须已经启动,并且必须有一个运行中的进程。

Docker logs

docker logs 命令用于查看 Docker 容器的日志信息。它的基本用法如下:

docker logs [OPTIONS] CONTAINER

其中,OPTIONS 可以是以下选项:

  • -f:跟踪容器日志输出,类似于 tail -f 命令。
  • --tail:仅显示最近的几行日志。例如,--tail 10 仅显示最近的 10 行日志。
  • --since:仅显示指定时间之后产生的日志。例如,--since 2020-01-01 仅显示 2020 年 1 月 1 日之后产生的日志。
  • --until:仅显示指定时间之前产生的日志。例如,--until 2020-01-01 仅显示 2020 年 1 月 1 日之前产生的日志。

CONTAINER 是容器的名称或 ID。例如,要查看名为 webapp 的容器的日志,可以使用以下命令:

docker logs webapp

如果要跟踪日志输出,可以使用 -f 参数:

docker logs -f webapp

如果仅想查看最近的 10 行日志,可以使用 --tail 参数:

docker logs --tail 10 webapp

如果想查看 2020 年 1 月 1 日之后的日志,可以使用 --since 参数:

docker logs --since 2020-01-01 webapp

如果想查看 2020 年 1 月 1 日之前的日志,可以使用 --until 参数:

docker logs --until 2020-01-01 webapp

Docker cp

docker cp命令用于在docker容器和本地文件系统之间复制文件或目录。其基本语法如下:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

其中,OPTIONS指定一些选项,CONTAINER指定容器的名称或ID,SRC_PATH指定容器内的源路径,DEST_PATH指定本地或容器内的目标路径。

例如,将容器内的文件复制到本地:

docker cp mycontainer:/app/file.txt /home/user/

将本地文件复制到容器内:

docker cp /home/user/file.txt mycontainer:/app/

常用的选项包括:

  • -a:将所有文件属性(包括权限、所有者和时间戳)一并复制
  • -L:针对符号链接,将链接源文件复制到目标文件中
  • --follow-link:跟随符号链接进行复制
  • --help:获取帮助信息

注意,如果容器正在运行,则复制的文件可能会被锁定,需要先停止容器再执行复制命令。

Docker network

Docker网络是Docker中一个重要的概念之一,它允许Docker容器之间相互通信,也能与外部网络进行交互。下面是Docker网络的使用步骤:

  1. 创建Docker网络

可以使用以下命令来创建Docker网络:

$ docker network create my-network

这将创建名为my-network的新Docker网络。

  1. 运行Docker容器并将其连接到网络

可以使用以下命令来运行Docker容器并将其连接到网络:

$ docker run --name my-container --network my-network -d my-image

这将创建一个名为my-container的新容器,并将其连接到my-network网络中。

  1. 连接现有的Docker容器到网络

可以使用以下命令将现有的Docker容器连接到网络:

$ docker network connect my-network my-container

其中my-network是要连接到的网络名称,my-container是要连接到网络的容器的名称。

  1. 列出网络

可以使用以下命令列出所有可用的Docker网络:

$ docker network ls
  1. 删除网络

可以使用以下命令删除Docker网络:

$ docker network rm my-network

这将删除名为my-network的Docker网络。

Docker volume

Docker volume是用来存储数据的一种机制,可以在容器和主机之间共享数据。下面是Docker volume的使用方法:

  1. 创建volume

可以通过命令行或者Dockerfile来创建volume。比如使用命令docker volume create my_volume来创建一个名为my_volume的volume。

  1. 挂载volume到容器

使用docker run命令时,加上-v参数可以将volume挂载到容器中。例如:

docker run -v my_volume:/app/data my_image
  1. 查看volume

可以使用docker volume ls命令来查看所有已经创建的volume。如果想查看某个volume的详细信息,可以使用docker volume inspect命令。例如:

docker volume inspect my_volume
  1. 删除volume

要删除volume,可以使用docker volume rm命令,例如:

docker volume rm my_volume

需要注意的是,如果某个volume正在被某个容器使用,那么不能直接删除它,需要先将其从该容器中移除。

Docker stop

docker stop 命令用于停止正在运行的容器。它的语法如下:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

其中,OPTIONS 可以是:

  • -t, --time:指定停止容器前的等待时间(单位为秒)。
  • --time-format:指定等待时间的格式,可以是 float(小数),ns(纳秒),µs(微秒),ms(毫秒),s(秒),m(分)或 h(小时)。
  • --help:显示帮助信息。

CONTAINER 是要停止的容器的名称或 ID。可以同时停止多个容器,只需在命令中列出它们的名称或 ID 即可。

示例:

停止名为 my-container 的容器:

docker stop my-container

停止 ID 为 1234567890ababcdef123456 的两个容器,并等待 10 秒:

docker stop -t 10 1234567890ab abcdef123456

Docker rm

docker rm命令用于删除一个或多个已有的容器。具体用法为:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

常用的选项包括:

  • -f: 强制删除一个运行中的容器。
  • -v: 删除容器时,同时删除容器挂载卷的数据卷。

例如,删除名为mycontainer的容器:

docker rm mycontainer

删除 ID 为1234和5678的容器:

docker rm 1234 5678

删除所有已停止的容器及其数据卷:

docker rm -v $(docker ps -a -q -f status=exited)

Docker rmi

docker rmi命令用于删除一个或多个本地镜像。其语法为:

docker rmi [OPTIONS] IMAGE [IMAGE...]

其中,OPTIONS为可选项,常用的选项有:

  • -f/--force:强制删除镜像,即使有容器正在使用该镜像。
  • -a/--all:删除所有本地镜像,包括被标记为 <none> 的镜像。

IMAGE为需要删除的镜像名称或镜像 ID。可以同时删除多个镜像,多个镜像名称或镜像 ID 之间用空格分隔。

示例:

  1. 删除一个镜像:
docker rmi redis
  1. 强制删除一个镜像:
docker rmi -f redis
  1. 删除多个镜像:
docker rmi redis nginx php
  1. 删除所有本地镜像:
docker rmi -a

Docker save

docker save 命令用于将 Docker 镜像保存为 tar 文件。它的语法为:

docker save [OPTIONS] IMAGE [IMAGE...]

其中,OPTIONS 包括:

  • -o, --output: 指定输出文件路径及名称。
  • --help: 显示帮助信息。

示例:

将镜像 nginx:latest 保存为 nginx.tar 文件:

docker save -o nginx.tar nginx:latest

注意:docker save 命令保存的是整个镜像,包括所有的历史层和元数据,因此保存的文件可能会很大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容