docker容器命令

容器命令

新建并启动容器

docker run [options] image [command] [args]

OPTIONS说明(常用),有的是一个减号,有的是两个减号

--name="容器新名字": 为容器指定一个名称
-d: 后台运行容器,并返回容器ID,也即启动守护式容器
-i: 以交互模式运行容器,通常与-t同时使用
-t: 为容器重新分配一个伪输入终端,通常与-i同时使用
-P: 随机端口映射
-p: 指定端口映射,有以下四种格式
    ip:hostPorst:containerPort
    ip::containerPort
    hostPort:containerPort
    containerPort

示例

启动交互式容器
docker run -it --name 'mycentos'

列出当前所有正在运行的容器

docker ps [options]

OPTIONS说明(常用):

-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:静默模式,只显示容器编号
--no-trunc:不截断输出

退出容器

  • exit 容器停止退出(容器停止了,再次进入,需要再次run)
  • ctrl+P+Q 容器不停止退出(容器没停止,还可以再次进入,不用再次run)

启动容器

docker start 容器ID或容器名

适用范围

已经新建过,运行了,
停止之后,使用docker ps -l
或者使用docker ps -a
查询出停止的容器
然后使用查询出来的容器ID或者容器名字
进行重新启动

重启容器

docker restart 容器ID或者容器名
重启后会返回容器ID

适用范围

已经新建过,正在运行,
使用docker ps -l
或者使用docker ps -a
查询出运行的容器
然后使用查询出来的容器ID或者容器名字
进行重新启动

停止容器

docker stop 容器ID或者容器名
停止后会返回容器ID

使用场景

相当于电脑关机流程

强制停止容器

docker kill 容器ID或者容器名
停止后会返回容器ID

使用场景

相当于电脑,直接拔电源

删除已停止的容器

删除单个容器

docker rm 容器ID 删除单个容器
docker rm -f 容器ID 强制删除单个容器

删除多个容器

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

启动守护式容器

docker run -d 容器名

详解

不会产生交互,
不会切换到新的容器

问题

docker ps -a进行查看,会发现容器已经退出
很重要的要说明的一嗲:docker容器后台运行,就必须哟一个前台进程
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就会自动退出

这个是docker的机制问题,比如你的web容器,
我们一nginx为例,正常情况下,我们配置启动服务
只需要启动相应的service即可.
例如service nginx start
但是,这样做,nginx为后台进程模式运行,
就导致docker前台没有运行的应用
这样的容器后台启动后,会立即自杀因为他觉得没事可做了.
所以最佳的解决方案是
将你要运行的程序以前台进程的形式运行!!!

如何正确的启动

docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"

意思

启动守护式容器centos
并且在前台每隔两秒打印一次hello zzyy
这样前台有进程,就不会导致自杀

查看容器日志

docker logs -f -t --tail 容器ID

参数详解

-t 加入时间戳
-f 跟随最新的日志打印
--tail 数字 显示最后多少条

查看容器内运行的进程

docker top 容器ID

使用场景

已经运行了一个容器
此时使用这个命令查看在容器运行的进程

查看容器内部细节

docker inspect 容器ID

进入正在运行的容易并以命令行交互

docker attach 容器ID

使用场景

直接进入容器启动命令的终端,不会启动新的进程
会直接切换到容器里面

docker exec -t 容器ID ls -l /tmp

使用场景

不进入容器里面,
但是能获取到命令 ls -l /tmp的内容

docker exec -t 容器ID /bin/bash

使用场景

会直接切换到容器里面

从容器内拷贝文件到主机上

docker cp 容器ID:容器内路径 目的主机路径

使用

docker cp 10b9ajsdk:/tmp/yum.log /root

将容器10b9ajsdk路径tmp下的yum.log拷贝到主机的root下面
原文地址:https://www.cnblogs.com/eternityz/p/12269787.html