天天看点

docker 删除所有未启动的容器_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

docker run java /bin/echo 'Hello World'docekr:Docker 的二进制执行文件。run:与前面的 docker 组合来运行一个容器。java:指定要运行的镜像,如果不存在,则从docekr hub上拉去。/bin/echo:可以在启动容器里执行命令。
           

示例2

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

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

docker 删除所有未启动的容器_docker系列学习之容器前言新建并启动容器列出容器停止容器启动停止容器进入容器删除容器导出容器导入容器

列出容器

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

docker 删除所有未启动的容器_docker系列学习之容器前言新建并启动容器列出容器停止容器启动停止容器进入容器删除容器导出容器导入容器

docker ps命令

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

CONTAINER_ID:表示容器ID。

IMAGE:表示镜像名称。

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

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

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

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

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

命令格式:docekr 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 5docekr ps -a -s
           
docker 删除所有未启动的容器_docker系列学习之容器前言新建并启动容器列出容器停止容器启动停止容器进入容器删除容器导出容器导入容器

停止容器

使用docker stop

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

示例

docker stop 4a30b910f793   或者 docker stop 容器名称
           

强制停止容器使用docker kill

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

示例

docker kill 4a30b910f793 此处为容器id
           

启动停止容器

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

命令格式

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

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

--checkpoint 从该检查点还原

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

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

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

示例:

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

重启容器命令格式

docker restart [OPTIONS] CONTAINER [CONTAINER...]
           
--time, -t default:10 关闭容器前等待的时间,单位是秒

示例:

docerk restart 4a30b910f793/容器名称    实际是先stop 然后再start
           

进入容器

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

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

docker attach 4a30b910f793
           

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

2、使用nsenter进入容器

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

docker inspect --format "{{.State.Pid}}" $CONTAINER_ID
           

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

nsenter --target "$PID" --mount --uts --ipc --net --pid
           

示例

[[email protected] ~]# docker inspect --format "{{.State.Pid}}" 784fd3b294d795492[[email protected] ~]# nsenter --target 95492 --mount --uts --ipc --net [email protected]:/#
           

3、使用docker exec进入到容器

docker exec -it 容器id /bin/bash
           
docker 删除所有未启动的容器_docker系列学习之容器前言新建并启动容器列出容器停止容器启动停止容器进入容器删除容器导出容器导入容器

删除容器

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

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

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

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

示例

docker rm 4a30b910f793 删除指定的容器 如果删除运行中的容器则用-f参数docker rm -f $(docker ps -a -q)  删除所有容器
           

导出容器

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

docker export [OPTIONS] CONTAINER-output, -o将内容写到文件而非STDOUT
           

示例

docker export docker export 容器id > latest.tar > latest.tardocker export --output="latest.tar" red_panda
           

导入容器

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

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

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

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

示例

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