【Docker入门】操作容器

2024-01-03 15:10:01 浏览数 (1)

容器是 docker 的核心概念,它让开发者能够以统一的方式将他们的应用程序及其依赖项打包到一个可移植的容器中,这个容器可以在任何安装了 Docker 引擎的服务器上运行,从而实现虚拟化。

本文主要介绍 docker 容器的创建、启动、终止、容器内执行、删除等各种操作。

创建容器 docker create

docker create 命令用于创建 Docker 容器。

命令格式:

代码语言:bash复制
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

# OPTIONS 为可选参数
# IMAGE 是要创建的容器所基于的镜像
# COMMAND 和 ARG 是容器启动时要运行的命令和参数

命令示例:

代码语言:bash复制
# 创建一个基于 Ubuntu 镜像的容器
docker create -it ubuntu:latest

该命令将创建一个新的容器,并使用 -it 选项将容器的标准输入和输出重定向到终端。

如果运行容器时使用的镜像在本地不存在,Docker会自动从Docker镜像仓库中下载。默认是从Docker Hub公共镜像源下载,如果不指定版本,默认下载最新版本。

使用 docker create 创建的容器处于停止状态,需使用 docker start 命令来启动容器。

容器操作是docker技术栈的核心,命令参数很多,下方表格列出部分常用参数:

参数

说明

-e, --env=[]

设置环境变量

-p, --publish=[]

指定如何映射到本地主机端口

-v, --volume=[]

挂载卷

--name

设置容器的名称

--network

指定容器网络模式

--restart

容器的重启策略

--rm

容器退出后是否自动删除

-it

分配一个伪终端并绑定到容器的标准输入

查看容器 docker ps

docker ps 命令用于查看所有正在运行中的容器列表。

命令格式及示例:

代码语言:bash复制
# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 可能返回以下内容
CONTAINER ID   IMAGE           COMMAND       CREATED             STATUS         PORTS     NAMES
f884d757aa45   ubuntu:latest   "/bin/bash"   About an hour ago   Up 2 seconds             elegant_ellis

返回列

说明

CONTAINER ID

容器的唯一标识符

IMAGE

容器使用的镜像

COMMAND

容器启动时执行的命令

CREATED

容器的创建时间

STATUS

容器的状态

NAMES

容器的名称

启动容器 docker start

docker start 命令用于启动一个已经停止的容器。

命令格式:

代码语言:bash复制
docker start [OPTIONS] CONTAINER [CONTAINER...]

# OPTIONS 为可选参数
# CONTAINER 是要启动的容器的名称或 ID,如要一次启动多个容器,可以使用逗号将它们隔开

命令示例:

代码语言:bash复制
# 启动 Ubuntu 容器(这里是ID)
docker start f884d757aa45

# 启动 Ubuntu 容器(这里是名称)
docker start elegant_ellis

创建并启动容器 docker run

docker run 命令用于创建的同时并启动一个容器。

命令格式:

代码语言:bash复制
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

# OPTIONS 命令参数
# IMAGE 要使用的镜像名称
# COMMAND 容器启动时要执行的命令
# ARG 传递给命令的参数

以下是常用的 docker run 选项:

参数

说明

-d 或 --detach

在后台运行容器,并返回容器 ID

-e 或 --env

设置环境变量

-p 或 --publish

将容器的端口映射到本地主机端口

-v 或 --volume

挂载卷

--name

为容器指定一个名称

--network

指定容器网络模式

--restart

设置容器的重启策略

--rm

容器退出后自动删除容器

-it 或 --interactive --tty

分配一个伪终端并绑定到容器的标准输入

命令示例:

代码语言:bash复制
# 创建并启动 nginx 容器同时映射端口且在后台运行
docker run -d -p 80:80  nginx

# 创建并启动 php 容器(运行后会自动终止)
docker run php

# 创建并启动 nginx 容器且允许用户交互
docker run -it ubuntu

# 可能会返回
root@87931907c7c7:/# 此处输入的命令在容器中运行,输入 exit 退出容器

查看容器输出 docker logs

docker logs 命令用于查看容器的输出,该命令将显示容器的标准输出和标准错误流的内容。

命令示例:

代码语言:bash复制
# 查看 ubuntu 容器的日志(通过ID)
docker logs d78a02526470

以下是常用的参数选项:

参数

说明

-f 或 --follow

实时跟踪日志输出

--tail

只显示最新的几行日志,可以指定行数

-t 或 --timestamps

显示时间戳

--since

只显示指定时间之后的日志

--until

只显示指定时间之前的日志

暂停容器 docker pause

docker pause 命令用于暂停一个正在运行的容器,该命令将暂停容器的所有进程,使其进入暂停状态。

命令格式:

代码语言:bash复制
docker pause CONTAINER [CONTAINER...]

# CONTAINER 是要暂停的容器的名称或 ID,指定一个或多个容器来同时暂停。

命令示例:

代码语言:bash复制
# 输入命令
docker pause d78a02526470

# 查看容器
docker ps

# 可能返回以下内容,状态为Paused
CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS                      PORTS                               NAMES
d78a02526470   nginx     "/docker-entrypoint.…"   About an hour ago   Up About an hour (Paused)   0.0.0.0:80->80/tcp, :::80->80/tcp   elegant_pascal

恢复被暂停的容器 docker unpause

docker unpause 命令用于恢复一个或多个之前被暂停的容器中的所有进程。

命令格式:

代码语言:bash复制
docker unpause [OPTIONS] CONTAINER [CONTAINER...]

# CONTAINER 是要恢复的容器的名称或 ID,可以指定一个或多个容器同时恢复。

命令示例:

代码语言:bash复制
# 输入命令
docker unpause d78a02526470

# 查看容器
docker ps

# 可能返回以下内容,状态已恢复运行
CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS             PORTS                               NAMES
d78a02526470   nginx     "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:80->80/tcp, :::80->80/tcp   elegant_pascal

终止容器 docker stop

docker stop 命令用于终止一个正在运行的容器。该命令将向容器发送信号,并等待一段时间以便容器进行清理和保存操作。如果容器在规定的时间内没有响应,则 Docker 将强制停止容器。

命令格式:

代码语言:bash复制
docker stop [OPTIONS] CONTAINER [CONTAINER...]

# OPTIONS 命令参数
# CONTAINER 是要终止的容器的名称或 ID,可以指定一个或多个容器。

# -t 或 --time:指定等待容器响应的时间(以秒为单位),默认为 10 秒。

命令示例:

代码语言:bash复制
# 输入命令
docker stop d78a02526470

# 查看容器
docker ps -a

对于终止的容器,可以通过 docker start 命令来启动,也可以通过 docker restart 命令先终止再启动

进入容器 docker attach

在使用 -d 参数时,容器会进入后台,用户无法对其操作,此时可以使用 docker attach 进入容器。

docker attach 命令用于进入正在运行的容器,并查看容器的标准输出、标准错误和标准输入流。

命令格式:

代码语言:bash复制
docker attach [OPTIONS] CONTAINER

# OPTIONS 命令参数
# CONTAINER 是要附加的容器的名称或 ID

常用的命令参数包括:

参数

说明

-i 或 --interactive

以交互模式运行容器

-t 或 --tty

分配一个伪终端(TTY)

命令示例:

代码语言:bash复制
# 进入 ubuntu 容器内部(通过ID)
docker attach 87931907c7c7

# 可能返回以下内容
root@87931907c7c7:/# (此处输入的命令针对于容器)

执行完该命令后将能够与容器进行交互,并查看容器的输出和输入流。

对容器执行命令 docker exec

docker exec 命令用于在正在运行的容器中直接执行命令。

命令格式:

代码语言:bash复制
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

# OPTIONS 命令参数
# CONTAINER 是要执行命令的容器的名称或 ID
# COMMAND 是要执行的命令
# ARG 是可选的命令参数

常用的选项包括:

参数

说明

-d 或 --detach

在后台运行命令

-i 或 --interactive

以交互模式运行容器

-t 或 --tty

分配一个伪终端(TTY)

命令示例:

代码语言:bash复制
# 对 ubuntu 容器直接执行命令(通过ID)
docker exec 87931907c7c7 ls

# 可能返回以下内容,等于进入内部执行 ls 命令
bin
boot
dev
etc
home
lib
lib32
lib64
libx32
media

# 使命令在后台运行,并且不会阻塞你的终端或命令行界面。
docker exec -d 87931907c7c7 ls

删除容器 docker rm

docker rm 命令用于删除一个或多个容器。

命令格式:

代码语言:bash复制
docker rm [OPTIONS] CONTAINER [CONTAINER...]

# OPTIONS 命令参数
# CONTAINER 是要执行命令的容器的名称或 ID,可以指定一个或多个容器

常用选项包括:

参数

说明

-f 或 --force

强制删除正在运行的容器

-l 或 --link

删除容器间的网络连接,而非容器本身

-v 或 --volumes

删除与容器关联的卷

命令示例:

代码语言:bash复制
# 删除容器(通过ID)
docker rm 87931907c7c7

# 强制删除正在运行的容器(通过ID)
docker rm -f 87931907c7c7

# 删除容器间的网络连接(通过ID)
docker rm -l 87931907c7c7

# 删除与容器关联的卷(通过ID)
docker rm -v 87931907c7c7

删除容器操作不可逆,请谨慎操作并确认已完成相关备份。

0 人点赞