赫连小伍

登录远程仓库:

```

docker login [OPTIONS] [SERVER]

```

从远程仓库搜索镜像:

```

docker search [OPTIONS] TERM

```

把本地镜像推送到远程仓库:

```

docker push [OPTIONS] NAME[:TAG]

```

从远程仓库拉取或更新镜像:

```

docker pull [OPTIONS] NAME[:TAG]

```

显示所有镜像:

```

docker images

```

删除本地镜像:

```

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

```

标记镜像,将其归入仓库:

```

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

```

查看镜像的创建历史:

```

docker history IMAGE[IMAGE...]

```

将镜像打包成文件:

```

docker save [OPTIONS] IMAGE [IMAGE...] -o FILENAME[:FORMAT]

```

从指定文件中加载镜像:

```

docker load -i FILENAME[:FORMAT]

```

创建一个容器并运行:

```

docker run [OPTIONS] COMMAND [ARG...] --name CONTAINER [CONTAINER...]

```

启动容器:

```

docker start CONTAINER [CONTAINER...]

```

重启容器:

```

docker restart CONTAINER [CONTAINER...]

```

停止容器:

```

docker stop CONTAINER [CONTAINER...]

```

请根据以下信息完成内容重构,并保持段落结构:

当不指定用户登录到远程仓库时,执行`docker login -u helianxiaowu -p 123456 192.168.10.10/docker-lib`,会提示输入用户名或密码。同样地,不指定用户登录到默认的远程仓库(`docker login`)也会提示输入用户名或密码。此外,可以使用`docker search`命令从远程仓库搜索镜像。

下面是`search`命令的列含义及其常用写法:

- NAME:镜像名称

- DESCRIPTION:镜像描述

- STARS:镜像热度,类似于 GitHub 的 stars

- OFFICIAL:是否是官方发布

- AUTOMATED:是否自动构建

以下是`search`命令的选项及其常用值:

```markdown

OPTIONS TERM

-f --limit --format

-f KEY=VALUE KEY 的可选值如下

star is-automated is-official

--formattablet table\t format \"[table] {{COLUMN}}[{{COLUMN}}...]\"

COLUMN 的可选值如下:

.Name .Description .StarCount .IsOfficial .IsAutomated

```

举例来说,要搜索热度大于100并且不是自动构建的centos镜像,可以编写如下命令:

```markdown

docker search -f stars=100 -f is-automated=false centos

```

若要搜索非官方发布的centos镜像,且搜索结果只展示名称和热度,列之间用TAB键隔开,则可以使用以下命令:

```markdown

docker search -f is-official=false --format "[table]{{.Name}}\t{{.StarCount}}" centos

```

以下是重构后的内容:

### 1. 将my-image镜像的1.1.0版本推送到远程仓库

```

docker push my-image:1.1.0

```

### 2. 将my-image镜像推送到远程仓库,不指定版本时默认为latest版本

```

docker push my-image

```

### 3. pull命令可以从远程仓库拉取镜像,如果本地仓库已经存在该镜像,则会更新

```

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

```

其中,OPTIONS包括以下常用值:

- `-a` 或者 `--disable-content-trust`:使用安静模式,不输出不必要的信息。

- `-q` 或者 `--quiet`:在拉取镜像时不输出任何信息。

### 4. pull常用写法

```

从远程仓库拉取centos镜像,不指定版本时默认为latest版本

docker pull centos

```

使用安静模式从远程仓库拉取版本号为5.11的centos镜像:

```

docker pull -q centos:5.11

```

使用安静模式从远程仓库拉取所有版本号的centos镜像:

```

docker pull -a -q centos

```

### 5. images命令可以显示本地存在的所有镜像,列含义如下:REPOSITORYTAGIMAGE IDCREATEDSIZE仓库路径镜像版本镜像id创建时间镜像大小

```

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

```

其中,OPTIONS包括以下常用值:

- `-f` 或者 `--filter`:过滤出符合指定条件的镜像。

- `--digests`:输出完整的Digest值。

- `--formattable\t`或者`--format "[table] {{COLUMN}}[{{COLUMN}}...]"`:以表格形式输出。

KEY的可选值如下:`dangling label before since reference`,用于指定过滤器条件。

COLUMN的可选值如下:`.ID.Repository.Tag.Digest.CreatedSince.CreatedAt.Size`。

```

images常用写法

- 显示本地所有镜像:

```

docker images

```

- 只显示id列并且不截断:

```

docker images -q --no-trunc

```

- 显示centos镜像信息:

```

docker images centos

```

- 显示列中包含cent关键字的所有镜像:

```

docker images | grep cent

```

以下是您要求的内容重构:

1. 显示本地所有镜像,并显示摘要列:

```

docker images --digests

```

2. 显示在centos:latest镜像之后创建的latest版本的所有镜像:

```

docker images -f since=centos:latest -f reference=*:latest

```

3. 显示所有镜像信息,只显示镜像id、摘要、创建时间3列,列之间用TAB键隔开:

```

docker images --format "table {{.ID}}\t{{.Digest}}t{{.CreatedAt}}"

```

4. 显示在centos:5.11镜像之前创建的镜像,只显示镜像仓库路径、版本号、创建时间3列,列之间用TAB键隔开:

```

docker images -f before=centos:5.11 --format "table {{.Repository}}\t{{.Tag}}\t{{.CreatedAt}}"

```

5. 删除centos镜像:

```

docker rmi tomcat

```

删除centos:5.11镜像:

```

docker rmi centos:5.11

```

删除id为621ceef7494a的镜像:

```

docker rmi 621ceef7494a

```

同时删除tomcat、centos和redis镜像:

```

docker rmi tomcat centos redis

```

强制删除tomcat镜像,就算此时有tomcat容器正在运行,镜像也会被删除:

```

docker rmi -f tomcat

```

6. tag命令可以基于一个镜像,创建一个新版本的镜像并归入本地仓库,此时该镜像在仓库中存在两个版本,可以根据这两个镜像创建不同的容器。tag语法如下:

```

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

```

tag的常用写法包括:基于redis:latest镜像创建my-redis1.0镜像,并把新镜像归入redis-lib仓库。代码如下:

```

docker tag redis:latest redis-lib/my-redis:1.0

```

以下是重构后的内容:

### 基于621ceef7494a镜像创建my-redis:test-100m镜像,并把新镜像归入redis-lib仓库

首先,我们需要使用`docker tag`命令将原始镜像`621ceef7494a`标记为新的镜像`redis-lib/my-redis:test-100m`。然后,我们可以使用`history`命令查看该镜像的创建历史。

```bash

docker tag 621ceef7494a redis-lib/my-redis:test-100m

```

接下来,我们可以查看镜像的历史记录。例如,要查看CentOS镜像的创建历史,可以使用以下命令:

```bash

docker history centos

```

如果需要将时间和大小转换为人类可读的格式,可以使用`-H=true`选项:

```bash

docker history -H=true centos

```

如果只需要显示ID、创建时间戳和创建时的命令3列,列之间使用TAB键隔开,可以使用以下命令:

```bash

docker history --format "table {{.ID}}\t{{.CreatedAt}}\t{{.CreatedBy}}" centos

```

此外,我们还可以使用`save`命令将一个或多个镜像打包到一个文件中。需要注意的是,`save`命令打包的是镜像,包含镜像的所有信息;而`export`命令打包的是容器,只是保存容器当时的快照,历史记录和元数据信息将会丢失。下面是一些常用的`save`命令写法:

```bash

# 将centos镜像打包成my-images.tar

docker save centos > /home/my-images.tar

# 将centos镜像和redis镜像打包到my-images.tar

docker save centos redis > /home/my-images.tar

```

将 CentOS 镜像和 Redis 镜像打包到 my-images.tar

首先,使用 `docker save` 命令将 CentOS 镜像和 Redis 镜像保存到一个文件中:

```bash

docker save -o /home/my-images.tar centos redis

```

接下来,使用 `docker load` 命令从指定文件中加载镜像。该文件需要是 `save` 命令保存的文件。`load` 命令的语法如下:

```bash

docker load [OPTIONS]

```

常用的选项值有:

- `-i`:从指定文件中加载镜像。

- `-q`:使用安静模式,不显示详细信息。

加载镜像的常用写法有:

1. 从 my-images.tar 文件中加载镜像:

```bash

docker load < /home/my-images.tar

```

2. 从 my-images.tar 文件中加载镜像(使用安静模式):

```bash

docker load -i /home/my-images.tar -q

```

创建并运行容器的语法如下:

```bash

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

```

常用的选项值有:

- `-i`:以交互模式运行容器。

- `-t`:为容器分配一个伪终端。

- `-d`:后台运行容器。

- `-p`:宿主机端口映射到容器端口。

- `--name`:为容器指定名称。

- `-m`:将容器的标准输入、输出、错误重定向到指定的容器。

- `-v`:挂载主机目录到容器内。

- `--volumes-from`:从指定的容器继承数据卷。

- `--rm`:容器退出时自动删除容器。

- `--hostname`:设置容器的主机名。

创建并运行容器的常用写法有:

1. 创建一个名为 my-centos 的 CentOS 容器,并运行:

```bash

docker run centos

```

2. 创建一个名为 my-centos 的 CentOS 容器,并以交互模式运行:

```bash

docker run -it centos

```

3. 创建一个名为 my-centos 的 CentOS 容器,并后台模式运行:

```bash

docker run -d centos

```

以下是重构后的内容:

1. 创建一个名为my-boot的Spring Boot容器,并以交互模式运行。设置容器的日志目录为主机的/logs/my-boot目录。在主机上可以查看my-boot项目的日志。

```bash

docker run -it --name my-boot -v /logs/my-boot/:/logs/ spring-boot

```

2. 创建一个名为my-boot的Spring Boot容器,并以交互模式运行。将主机的80端口映射到容器的8080端口。将主机的/logs/my-boot/路径绑定到容器的/logs目录。给容器分配最大500M的内存。指定spring-boot的配置文件为test。

```bash

docker run -it --name my-boot -p 80:8080 -v /logs/my-boot/:/logs/ -m 500M spring-boot --spring.profiles.active=test

```

3. start命令可以启动一个或多个已经停止的容器。start语法如下:

```bash

docker start [OPTIONS] CONTAINER [CONTAINER...]

```

4. OPTIONS常用值有:

-a,表示自动重启已停止的容器;

-i,表示以后台模式运行容器。

start常用写法示例:

启动已经停止的tomcat容器:`docker start tomcat`

启动已经停止的tomcat和centos容器:`docker start tomcat centos`

启动已经停止的my-spring-boot容器,并输出日志:`docker start -a my-spring-boot`

启动已经停止centos容器,并附加一个输入终端:`docker start -i centos`

5. restart命令可以对一个或多个容器进行重启。如果容器是未启动的则会启动,如果是正在运行中的,则会重启。restart语法如下:

```bash

docker restart [OPTIONS] CONTAINER [CONTAINER...]

```

6. OPTIONS常用值有:

-t,表示跟踪容器进程,等待容器完全关闭后再重启。

restart常用写法示例:

重启centos容器:`docker restart centos`

20秒之后重启centos和tomcat容器:`docker restart -t 20 centos tomcat`

Docker提供了几种命令来管理容器的生命周期,包括停止、重启和杀死容器,以及删除容器。以下是这些命令的基本语法和一些常用的写法:

1. 停止命令(stop):可以停止一个或多个正在运行的容器。与kill命令不同的是,stop命令允许容器在停止之前有一定的时间来进行额外操作,如释放链接、关闭请求等。常用写法如下:

```bash

docker stop tomcat // 停止tomcat容器

docker stop tomcat centos // 停止tomcat和centos容器

docker stop tomcat -t 5 // 停止tomcat容器,如果5秒内还未停止则直接杀死

```

2. 重启命令(restart):可以重启一个或多个容器,不管容器是运行或停止。常用写法如下:

```bash

docker restart tomcat // 重启tomcat容器

docker restart tomcat centos // 重启tomcat和centos容器

docker restart tomcat -t 5 // 重启正在运行的tomcat容器,如果5秒内还未停止则直接杀死然后重启

```

3. kill命令(kill):可以杀死一个或多个正在运行的容器。常用写法如下:

```bash

docker kill tomcat // 杀死tomcat容器

docker kill -s 9 tomcat // 强制杀死tomcat容器

docker kill -s KILL tomcat // 强制杀死tomcat容器

docker kill tomcat centos // 杀死tomcat和centos容器

```

注意,如果要强制删除运行中的容器,需要使用-f参数。

4. 删除命令(rm):可以删除一个或多个容器。如果容器正在运行,则需要通过-f参数强制删除。常用写法如下:

```bash

docker rm tomcat // 删除tomcat容器

docker rm tomcat centos // 删除tomcat和centos容器

docker rm -f tomcat // 强制删除运行中的tomcat容器

```

OPTIONS的常用值

-f:强制删除容器,即使容器正在运行也会被删除

-l:移除容器my-nginx对容器my-db的连接,连接名db

-v:删除centos容器,并删除它挂载的卷

-p:宿主机端口映射,格式为宿主机端口:容器端口

-P:--name指定容器名称

-d:以后台模式运行容器

-m:--memory限制容器使用的内存大小

-v:--volumes-from从另一个容器中创建数据卷或绑定挂载点

-w:--workdir设置工作目录

-h:--hostname设置容器的主机名

rm常用写法

1. 删除centos容器

```

docker rm centos

```

2. 强制删除centos容器,即使容器正在运行也会被删除

```

docker rm -f centos

```

3. 删除所有已经停止的容器

```

docker rm $(docker ps -a -q)

```

4. 移除容器my-nginx对容器my-db的连接,连接名db

```

docker rm -l db

```

5. 暂停一个或多个正在运行的容器

```

docker pause CONTAINER [CONTAINER...]

```

pause语法:docker pause CONTAINER [CONTAINER...]

6. 取消暂停一个或多个暂停的容器

```

docker unpause CONTAINER [CONTAINER...]

```

unpause语法:docker unpause CONTAINER [CONTAINER...]

7. 创建一个容器,但不运行它,在需要的时候可以使用start命令启动。和run命令的用法几乎一致,都会创建一个容器,如果容器依赖的镜像不存在都会从远程仓库拉取。run命令创建容器后会运行容器。create命令只是创建容器,不运行。create语法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONSIMAGECOMMANDARG

OPTIONS的常用值:create命令和run命令的可选参数一样。docker create --help查看详细信息。

8. 创建一个centos容器

```

docker create centos

```

9. 创建一个centos容器,start启动时以交互模式运行(默认为非交互模式)

```

docker create --name centos --tty centos

```

创建并运行一个CentOS容器:

```

docker create -it centos

```

启动时在后台模式运行:

```

docker start -d centos

```

创建并运行一个重命名的CentOS容器(交互模式):

```

docker create -d centos --name my-centos

docker start -i -t my-centos

docker exec my-centos /bin/bash

```

创建并运行一个Spring Boot容器(交互模式):

```

docker create -it spring-boot --name my-boot

docker start -i -t my-boot

docker exec -it my-boot bash

```

将主机的80端口映射到容器的8080端口,并以交互模式运行(访问主机IP+80端口可访问容器中的Spring Boot项目):

```

docker create -it --name my-boot -p 80:8080 spring-boot

docker start -i -t my-boot

docker exec -it my-boot bash

```

将主机的/logs/my-boot/目录绑定到容器的/logs目录,并以交互模式运行(查看my-boot项目的日志):

```

docker create -it --name my-boot -v /logs/my-boot/:/logs/ spring-boot

docker start -i -t my-boot

docker exec -it my-boot bash

```

给容器分配最大500M的内存,指定Spring Boot的配置文件为test,并以交互模式运行:

```

docker create -it --name my-boot -p 80:8080 -v /logs/my-boot/:/logs/ -m 500M spring-boot --spring.profiles.active=test

docker start -i -t my-boot

docker exec -it my-boot bash

```

执行一个命令在一个运行中的容器中(例如,在centos容器中运行pwd命令):

```

docker exec centos pwd

```

```

# 在 CentOS 镜像中的 bin 目录执行 ls 命令

docker exec -it centos /bin/bash

# 在容器中运行 ls 命令

docker exec -w /bin centos ls

# ps 命令可以列出所有容器的列表,查看容器的基本信息。不加任何参数的情况下,默认只展示正在运行的容器

# 列含义如下:CONTAINER ID、IMAGE、COMMAND、CREATED、PORTS、NAMES

ps

# ps 语法:docker ps [OPTIONS]

# OPTIONS 包括以下常用值:

# -a:显示所有容器(包括已停止的)

# -f:过滤容器列表,根据指定的 KEY 和 VALUE 来筛选容器

# -n:以数字形式显示容器名称而不是完整名称

# -l:仅显示容器的 ID、名称、状态、端口等信息

# -q:仅显示容器的 ID

# -s:以表格形式显示容器详细信息

# --no-trunc:不截断输出结果,如果容器名过长的话

# ps 常用写法:

# 查看运行中的容器:docker ps

# 查看所有容器:docker ps -a

# 查看所有容器,并显示容器大小:docker ps -a -s

# 查看所有容器,显示内容不截断:docker ps -a --no-trunc

# 查看容器名称中包含 cent 的容器:docker ps -f name=cent

# 查看状态是 created 的容器:docker ps -f status=created

# 查看在 centos 之前创建的容器:docker ps -f before=centos

# 查看绑定了宿主机80端口并且正在运行的容器:docker ps -f publish=80

# inspect 命令可以获取一个或多个容器或者镜像的元数据信息。inspect 是 ps 的替代方案,功能更强大。

inspect

# inspect 语法:docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]

# OPTIONS 包括以下常用值:--type、--format、--size、--stream、--timeout

# inspect 常用于查看容器或镜像的详细信息,如配置文件、挂载点等。常用的 inspect 命令包括:

## 查看 Tomcat 容器的元数据信息:docker inspect tomcat

## 查看 Tomcat 镜像的元数据信息:docker inspect --type=image tomcat

## 查看 Tomcat 容器的 IP 地址:docker inspect --format '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

查看Tomcat容器的IP地址:

```

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' tomcat

```

查看Tomcat容器的端口映射:

```

docker inspect -f '{{.HostConfig.PortBindings}}' tomcat

```

查看Tomcat容器的挂载目录:

```

docker inspect -f '{{.HostConfig.Binds}}' tomcat

```

退出命令行:

```

ctrl+c

```

您好!您可以使用`docker attach centos`命令连接到容器内的进程。当您需要退出时,可以按下`Ctrl+c`,这将发送一个SIGINT信号给正在运行的进程,然后进程将被终止 。

如果您需要查看最近10分钟的日志,可以使用以下命令:`docker logs --since 10m tomcat` 。

Docker wait命令用于阻塞容器,直到其退出并打印退出状态码。以下是wait命令的常用写法:

```bash

docker wait CONTAINER [CONTAINER...]

```

其中,`CONTAINER`是要等待的容器名称或ID。例如,要等待名为`centos`的容器退出并打印退出状态码,可以使用以下命令:

```bash

docker wait centos

```

在等待过程中,可以先停止该容器,然后切换到使用`docker wait`命令的终端,就可以看到输出的状态码。

Port语法用于查看容器的端口映射情况。以下是port命令的常用写法:

```bash

docker port CONTAINER [PRIVATE_PORT[/PROTO]]

```

其中,`CONTAINER`是要查看端口映射的容器名称或ID;`PRIVATE_PORT`是容器内部的端口号;`PROTO`是可选参数,表示协议类型,默认为tcp。例如,要查看名为`my-boot`的容器的端口映射情况,可以使用以下命令:

```bash

docker port my-boot

```

如果要查看名为`my-boot`的容器的8080端口映射到宿主机的端口号,可以使用以下命令:

```bash

docker port my-boot 8080

```

如果要查看名为`my-boot`的容器使用tcp协议的8080端口映射到宿主机的端口号,可以使用以下命令:

```bash

docker port my-boot 8080/tcp

```

export命令用于将容器打包成一个文件。与save命令相比,它们容易混淆。export和save的不同之处在于:export打包的是容器,save打包的是镜像。export打包的是容器当时的快照,而容器的历史记录和元数据信息都会丢失。此外,当将export导出的文件导入为镜像时,可以重新指定镜像的名称和版本号。以下是export命令的常用写法:

```bash

docker export [OPTIONS] CONTAINER

```

其中,`OPTIONS`是可选参数,常用的值包括:

- `-o`:指定导出文件的路径和名称。例如:`-o /tmp/my-boot.tar my-boot`,将名为`my-boot`的容器导出为文件`/tmp/my-boot.tar`。

- `--output=path/to/file.tar`:等同于使用选项`-o path/to/file.tar`,指定导出文件的路径和名称。例如:`--output=/tmp/my-boot.tar my-boot`,将名为`my-boot`的容器导出为文件`/tmp/my-boot.tar`。

import命令用于从本地文件或远程文件中导入镜像到本地仓库。如果是从文件中导入,这个文件需要是export命令导出的文件。以下是import命令的常用写法:

```bash

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

```

您好,您可以使用以下命令从my-boottar文件创建镜像,并指定镜像名称为my-boot-test、版本号为1.0:

```

docker import /tmp/my-boot.tar my-boot-test:1.0

```

或者,您可以使用以下命令从my-boot.tar文件创建镜像,备注信息为测试,并指定镜像名称为my-boot-test、版本号为1.0:

```

docker import --message '测试' /tmp/my-boot.tar my-boot-test:1.0

```

如果您想从远程服务器的my-boot.tar文件创建镜像,可以使用以下命令:

```

docker import http://192.168.100.1:8080/images/my-boot.tar

```