前言

上一篇文章说到了docker的镜像以及常用命令,在docker的使用过程中,一般都是先拉取镜像,然后在镜像的基础上创建并启动容器来运行我们的项目。故此本篇主要是说下容器的创建和相关命令以及简单使用。

docker清除没有使用的镜像 docker删除未运行的容器_docker清除没有使用的镜像

新建并启动容器

在docker我们可以通过docker run来新建并启动一个容器,该命令下面有很多选项。下面来列举一些常用的命令:

-d:表示后台运行

-P:随机端口映射

-p:指定端口映射

-t:在新容器内指定一个伪终端或终端。

-i:允许你对容器内的标准输入 (STDIN) 进行交互。

–network:指定网络模式 有以下4个参数可选

【–network=bridge:默认选项,表示连接到默认的网桥】

【–network=host:容器使用宿主机的网络】

【–network=container:NAME_or_ID:告诉Docker让新建的容器使用已有容器的网络配置】

【–network=none:不配置该容器的网络,用户可自定义网络配置】

示例1

echo

示例2

docker run -d -p 80:80 nginx

-d:表示后台运行
-p:表示将容器端口80映射到宿主机端口80

注意:每次docker run都会新建并启动一个容器。

docker清除没有使用的镜像 docker删除未运行的容器_Docker_02

列出容器

使用docker ps可以列出所有运行中的容器,执行命令后可以看到如下的内容

docker清除没有使用的镜像 docker删除未运行的容器_docker清除没有使用的镜像_03

列出所有的容器,包括停止的容器可以使用docker ps-a,查出的列字段含义如下

CONTAINER_ID:表示容器ID。

IMAGE:表示镜像名称。

COMMAND:表示启动容器时运行的命令。

CREATED:表示容器的创建时间。

STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。

PORTS:表示容器对外的端口号。

NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的–name选项自行指定。

命令格式:docker ps [options]

--all,-a default:false 列出所有容器,包括未运行的容器,默认只展示运行的容器

--filter, -f 根据条件过滤显示内容

--format 通过Go语言模板文件展示镜像

--last, -n default:-1   显示最近创建n个容器(包含所有状态)

--latest, -l default:-1   显示最近创建的容器(包含所有状态)

--no-trunc default:fallse 不截断输出

--quiet, -q default:false 静默模式,只展示容器的编号

--size, -s default :false 显示总文件大小

示例

docekr ps -n 5

docker清除没有使用的镜像 docker删除未运行的容器_nginx_04

停止容器

使用docker stop

--time, -t default:10 强制杀死容器前等待的时间,单位是秒

示例

stop

强制停止容器使用docker kill

--signal, -s default:KILL 向容器发送一个信号

示例

kill

启动停止容器

docker run 是新建并启动一个容器,而docker start是启动一个已经创建的容器。

命令格式

docker

--attach, -a default:false 连接STDOUT/STDERR并转发信号

--checkpoint 从该检查点还原

--checkpoint-dir 使用自定义的检查点存储目录

--detach-keys 覆盖断开容器的关键顺序

--interactive, -i default:false 连接容器的STDIN

示例:

docker start 4a30b910f793/容器名称    启动容器

重启容器命令格式

docker

--time, -t default:10 关闭容器前等待的时间,单位是秒

示例:

stop 然后再

进入容器

在某些场景下面我们需要进入到容器进行相关操作

1、使用docker attach命令进入到容器

docker attach 4a30b910f793

在使用attach命令时,如果是多个窗口同时进入容器,很容易发生阻塞。

2、使用nsenter进入容器

nsenter工具包含在util-linux 2.23或更高版本中。为了连接到容器,我们需要找到容器第一个进程的PID,可通过以下命令获取

docker inspect --format

获得pid后就可以进入容器了

nsenter --target

示例

root@localhost ~]# docker inspect --format

3、使用docker exec进入到容器

exec -it 容器id /bin/bash

docker清除没有使用的镜像 docker删除未运行的容器_nginx_05

删除容器

使用docker rm可以删除指定容器

--force, -f default:false 通过SIGKILL信号强制删除正在运行中的容器

--link, -l default:false 删除容器间的网络连接

--volumes, -v default:false 删除与容器关联的卷

示例

4a30b910f793 删除指定的容器 如果删除运行中的容器则用-f参数

导出容器

导出容器指的是将容器导出为一个压缩包

export [OPTIONS] CONTAINER

示例

export docker

导入容器

使用docker import 命令即可从归档文件导入内容并创建镜像

docker

--change, -c 将Dockerfile指令应用到创建的镜像

--message, -m 为导入的镜像设置提交信息

示例

import nginx2.tar nginx   将打包的nginx容器导入