您的位置:首页 > 运维架构 > Docker

Docker 学习(四) 容器常用命令

2020-01-14 12:52 531 查看

文章目录

新建并启动容器

格式:

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

docker run 的选项可以有很多这里就不一一列举出来了。下面仅仅列举出部分常用参数:

选项 缩写 说明
–detach -d 后台运行容器,并打印容器ID
–publish-all -P 随机映射所有端口
–publish -p 指定 端口映射,该选项有一下四种格式:
ip : hostPort : containerPort
ip :: containerPort
hostPort:containerPort
containerPort
–network 指定网络模式,该选项有以下四种可选参数。
–network=bridge : 默认选项,表示连接到默认的网桥。
–network=host : 容器使用宿主机的网络。
--network=container:Name_or_ID : 告诉 Docker 让新建的容器使用已有容器的网络配置。
--network=none : 不配置该容器的网络,用户可自定义网络配置
–name 设置容器名称,如果不指定则docker会随机指定一个容器名称

示例1:

docker run java /bin/echo 'Hello World'

示例2:

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

这样就可以启动一个Nginx容器。访问

http://Docker 宿主机 IP:91/
,会看到如下图所示界面:

需要注意的是,使用Docker Run 命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像,Docker 会自动从 Docker Hub 下载镜像并启动一个 Docker 容器。

列出容器

格式:

docker ps [OPTIONS]
选项 缩写 说明
–all -a 列出全部容器,包括未运行的容器。默认值展示运行的容器
–filter -f 根据条件过滤显示的内容
–format 通过Go语言模板文件展示镜像
–last -n 显示最近创建的 n 个容器(包含所有状态)
–latest -l 显示最近创建的容器(包含所有状态)
–no-trunc 不截断输出
–quiet -q 静默模式,只展示容器的ID
–size -s 显示总文件大小

示例:

docker ps

该命令会展示正在运行的容器,输出结果如下:

字段 说明
CONTAINER ID 容器ID
IMAGE 镜像名称
COMMAND 表示启动容器时运行的命令,类似与开机启动项
STATUS 容器运行的状态。Up 表示运行中,Exited 表示已停止
PORTS 表示对外的端口号
NAMES 容器名称。该名称默认由 Docker 自动生成,也可使用docker run命令的 -name 选择指定。

停止容器

格式:

docker stop [OPTIONS] CONTAINER [CONTAINER...]
选项 缩写 描述
–time -t 强行停止容器的等待时间,单位s,默认是10秒。意思是如果在10秒内不能停止容器则使用强制停止容器的命令

示例:

docker stop 9adde0091f5d

9adde0091f5d 是容器ID ,也可以使用

docker stop 容器名称
来停止容器

强制停止容器

格式:

docker kill [OPTIONS] CONTAINER [CONTAINER...]
选项 缩写 说明
–signal -s 向容器发送一个信号,默认是“KILL” ,这里可以发送自定义内容

示例:

docker kill 9adde0091f5d

启动已停止的容器

docker run 是新建并启动, docker start 是启动已停止的容器。

格式:

docker start [OPTIONS] CONTAINER [CONTAINER...]
选项 缩写 说明
–attach -a 连接 STDOUT/STDERR 并转发信号
–detach-keys 覆盖断开容器的关键顺序
–interactive -i 连接容器的 STDIN

示例:

docker start 9adde0091f5d

重启容器

格式:

docker restart [OPTIONS] CONTAINER [CONTAINER...]
选项 缩写 说明
–time -t 强制关闭容器的等待时间,单位s,默认10s

示例:

docker restart 9adde0091f5d

该命令实际上就是先执行 docker stop 然后执行 docker start

进入容器

进入容器内部。

  • 使用docker attach 命令进入容器。例如:
docker attach 3b307f41cbbb

不过我使用这个命令从来没有进入过… 。如果在尝试这个命令的时候卡住了,使用快捷键

Ctrl+C
来退出

  • 使用 nsenter 进入容器。首先需要找到容器第一个进程的PID .可以通过以下命令获取。
docker inspect --format "{{.State.Pid}}" 3b307f41cbbb

有关nsenter的相关内容,都是以Linux 为例的。由于我是在Windows平台上,所以没有深入了解

  • 使用 docker exec 命令进入容器。这种方式我最常用也是最简单的方式。示例:
docker exec -it 3b307f41cbbb /bin/bash

输入exit即可退出容器

删除容器


格式:

docker rm [OPTIONS] CONTAINER [CONTAINER...]
选项 缩写 说明
–force -f 通过SIGKILL信号强制删除正在运行中的容器
–link -l 删除容器间的网络连接
–volumes -v 不仅删除容器(如果容器有使用卷,卷也会进行相应的删除)

有关

-v
参数和构建镜像有关。后面会有相对详细的说明

示例:

docker rm 3b307f41cbbb

该命令只能删除已经停止运行的容器,如果想要删除正在运行的容器,可以使用 -f 参数。或者是先 docker stop 再删除。

示例2:
删除全部容器

docker rm -f $(docker ps -a -q)

导出容器

格式:

docker export [OPTIONS] CONTAINER
选项 缩写 说明
–output -o 将内容写到文件而非标准输出

示例:

# 将 hardcore_dhawan 容器导出成 latest.tar 文件。其中hardcore_dhawan是容器名称
docker export hardcore_dhawan > latest.tar
docker export -o "latest.tar" hardcore_dhawan

导入容器

格式:

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
选项 缩写 说明
–change -c 将Dockerfile 指令应用到创建的镜像
–message -m 为导入的镜像设置提交时的文字说明

示例:

# 从latest.tar文件中导入并创建nginx镜像,设置标签为test
docker import latest.tar nginx:test

save load export import 区别

  • save
    命令是用来导出镜像的。导出的镜像文件文件会保存该镜像的所有历史记录。所以导出的文件比
    export
    导出的大

  • export
    命令是导出容器的,导出的文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

  • load
    将文件导入为镜像,无法指定镜像的名称

  • import
    将文件导入为镜像,可以重新指定镜像文件的名称和标签

从功能上讲,

export
相当于
commit +save
,先将容器
commit
成镜像,再
save
成文件

查看日志

docker logs --help

示例:

# 查看名称为containerName的容器,最近30分钟的日志
docker logs --since 30m containerName

参考:

http://www.dataguru.cn/thread-650512-1-1.html
https://www.jianshu.com/p/8d834513e468
https://www.cnblogs.com/Cherry-Linux/p/8025777.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
同名给你糖 发布了21 篇原创文章 · 获赞 1 · 访问量 410 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: