docker常用命令列表

本文大部分内容来自Docker–从入门到实践

命令功能
docker images [-a]查看本地镜像
docker images -q只显示镜像的id信息
docker rmi [-f] <镜像>删除指定镜像
docker ps [-a]查看当前正在运行的容器,-a表示显示所有的容器
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]从 Docker 镜像仓库获取镜像
docker run <镜像>根据某个镜像创建容器,如果镜像不存在,就去远方拉取
docker run -d让容器在后台运行,其实就是一个进程
docker run --name NAME给容器指定一个名字
docker run -p [容器宿主机端口]:[容器端口]将容器的端口映射到宿主机的端口
`docker exec -it <容器> [bash/bin/bash

镜像操作

获取镜像

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。

  • Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
  • 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
docker pull ubuntu:18.04
# 18.04: Pulling from library/ubuntu
# 23884877105a: Pull complete
# bc38caa0f5b9: Pull complete
# 2910811b6c42: Pull complete
# 36505266dcc6: Pull complete
# Digest: sha256:3235326357dfb65f1781dbc4df3b834546d8bf914e82cce58e6e6b676e23ce8f
# Status: Downloaded newer image for ubuntu:18.04
# docker.io/library/ubuntu:18.04

上面的命令中没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub 获取镜像。而镜像名称是 ubuntu:18.04,因此将会获取官方镜像 library/ubuntu 仓库中标签为 18.04 的镜像。

从下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。

列出镜像

要想列出已经下载下来的镜像,可以使用 docker image ls 命令。镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个 标签

$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               c3c304cb4f22        4 weeks ago         64.2MB
gitlab/gitlab-ce    latest              6597e56a80f3        5 weeks ago         1.92GB
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB

列出特定的某个镜像

# 仓库名列出镜像
$ docker image ls ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               f753707788c5        4 weeks ago         127 MB
ubuntu              latest              f753707788c5        4 weeks ago         127 MB
# 指定仓库名和标签
$ docker image ls ubuntu:18.04
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               f753707788c5        4 weeks ago         127 MB

指定过滤器显示镜像

# mongo:3.2 之后建立的镜像
$ docker image ls -f since=mongo:3.2
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              5f515359c7f8        5 days ago          183 MB
nginx               latest              05a60462f8ba        5 days ago          181 MB
# mongo:3.2 之前建立的镜像
$ docker image ls -f before=mongo:3.2
...
# 使用label过滤
$ docker image ls -f label=com.example.version=0.1
...

显示镜像摘要 DIGEST

$ docker image ls --digests
REPOSITORY          TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
ubuntu              18.04               sha256:3235326357dfb65f1781dbc4df3b834546d8bf914e82cce58e6e6b676e23ce8f   c3c304cb4f22        4 weeks ago         64.2MB
gitlab/gitlab-ce    latest              sha256:9be324293de2447c7b19146b58b01d2fae5b8539364bc4b4e0b3ffc45625006e   6597e56a80f3        5 weeks ago         1.92GB
hello-world         latest              sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76   bf756fb1ae65        4 months ago        13.3kB

显示镜像的ID

$ docker image ls -q
c3c304cb4f22
6597e56a80f3
bf756fb1ae65
# 删除所有仓库名为 redis 的镜像:
$ docker image rm $(docker image ls -q redis)
# 删除所有在 mongo:3.2 之前的镜像:
$ docker image rm $(docker image ls -q -f before=mongo:3.2)

自定义显示列表,这里用到了Go 的模板语法

$ docker image ls --format "{{.ID}}: {{.Repository}}"
5f515359c7f8: redis
05a60462f8ba: nginx
# 以表格等距显示,并且有标题行
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID            REPOSITORY          TAG
5f515359c7f8        redis               latest
05a60462f8ba        nginx               latest
fe9198c04d62        mongo               3.2

删除本地镜像

docker image rm [选项] <镜像短 ID|镜像长 ID|镜像名|镜像摘要1> [<镜像2> ...]
Aliases:
  rm, rmi, remove

容器操作

新建并启动容器

下面的命令于ubuntu:18.04镜像新建一个容器并启动输出一个 “Hello World”,之后终止容器

docker run ubuntu:18.04 /bin/echo 'Hello world'
# Hello world

启动一个 bash 终端,允许用户进行交互

docker run -t -i ubuntu:18.04 /bin/bash
root@af8bae53bdd3:/#

-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,

-i 则让容器的标准输入保持打开。在交互模式下的操作,就跟使用一台虚拟机一样了。

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个 ip 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

容器名字和映射端口

-p 参数用来指定容器和宿主机的映射端口,-name用来指定容器的名字。

docker run --name webserver -d -p 80:80 nginx

后台运行

通过添加 -d 参数来实现

$ docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a

启动已经终止的容器

docker <containerName|containerID> start

终止一个容器

docker <containerName|containerID> stop

终止状态的容器可以用 docker container ls -a 命令查看。

重启一个容器

docker <containerName|containerID> restart

进入容器

在使用 -d 参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,就可以使用exec命令。

docker exec -it <containerName|containerID> /bin/bash

只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。

-i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

$ docker exec -i 69d1 bash
ls
bin
boot
dev
...

$ docker exec -it 69d1 bash
root@69d137adef7a:/#

删除容器

可以使用 docker container rm 来删除一个处于终止状态的容器。例如

$ docker container rm  <containerName|containerID>
trusting_newton

如果要删除一个运行中的容器,可以添加 -f 参数。Docker 会发送 SIGKILL 信号给容器。

清理所有处于终止状态的容器

docker container ls -a 命令可以查看所有已经创建的包括终止状态的容器,如果数量太多要一个个删除可能会很麻烦,用下面的命令可以清理掉所有处于终止状态的容器。

$ docker container prune

容器的导入和导出

Docker之间导出/导入镜像

将文件拷贝到本机

docker container cp命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。

docker container cp [containID]:[/path/to/file] .

查看日志

docker container logs命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出。

docker container logs [containerID]
### Docker 常用命令列表及其使用方法 #### 获取镜像 为了从仓库中获取一个镜像,可以利用 `docker pull` 命令。此命令会下载指定名称的镜像到本地环境[^1]。 ```bash docker pull <image_name> ``` 例如,要拉取官方最新的 Ubuntu 镜像: ```bash docker pull ubuntu:latest ``` #### 加载本地镜像文件 对于已经打包成 `.tar` 格式的镜像文件,则可以通过 `docker load` 来导入这些压缩包中的内容至本地镜像库[^2]。 ```bash docker load -i /path/to/container.tar ``` 这允许用户恢复之前保存过的镜像版本或是分享给其他开发者使用的自定义配置。 #### 列出已有的镜像 查看当前机器上所有的可用镜像可通过执行如下指令完成: ```bash docker images ``` 该操作有助于管理现有资源并确认所需组件是否已被成功安装。 #### 创建容器实例 当准备好运行某个特定的应用程序时,便能借助于 `docker run` 启动一个新的进程,在其中执行相应的任务[^3]。 ```bash docker run [OPTIONS] IMAGE [COMMAND] [ARG...] ``` 这里有几个重要的选项需要注意: - `-d`: 表示后台模式启动; - `-p HOST_PORT:CONTAINER_PORT`: 映射主机端口与容器内部服务监听地址之间的关系; - `-v HOST_DIR:CONTAINER_DIR`: 将宿主机目录挂载进虚拟环境中供访问; 举个例子来说,如果想要开启一台带有 Web 服务器功能的服务节点,那么就可以这样写脚本: ```bash docker run -d -p 8080:80 nginx ``` 这条语句意味着将以分离方式创建 Nginx 的实例,并将其第 80 端口号映射到了外部网络接口上的 8080 上面去。 #### 查看正在运行的容器 通过下面这个简单的命令能够快速了解到有哪些活动着的工作单元存在: ```bash docker ps ``` 它仅显示处于活跃状态下的条目,默认情况下不会展示那些已经被停止下来的对象。若希望获得更全面的信息集合,请附加参数 `--all` 或者简称 `-a` 即可实现目标。 #### 终止和删除容器 一旦不再需要某项作业继续占用计算资源的时候,就应当考虑终止它的生命周期以及清理掉残留的数据记录。具体做法如下所示: 停止选定的目标: ```bash docker stop CONTAINER_ID_OR_NAME ``` 移除已完成的任务痕迹: ```bash docker rm CONTAINER_ID_OR_NAME ``` 当然也可以一次性清除所有未被使用的实体,只需加上额外的选择器即可达成目的: ```bash docker system prune ``` 以上就是一些基础却十分实用的操作指南,帮助初学者更好地理解和掌握 Docker 平台的核心技能集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值