7、docker容器相关操作命令

首先我们要说明一点:容器是由镜像创建来的,也就是说有镜像才能有容器

1、新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTION说明(常用):有些是一个减号,有些是两个减号
--name="新容器的名字":为容器指定一个名称
-d :后台运行容器,并返回容器ID,即启动守护式容器
-i: 以交互模式运行容器,通常与-t同时使用
-t: 为容器重新分配一个伪输入终端,通常与-i同时使用
-P:大写的P,随机端口映射
-p:小写的p,指定端口映射,有以下四种形式

  • ip:hostPort:containerPort
  • ip::containerPort
  • hostPort:containerPort
  • containerPort

我们启容器常用的有2中方式 -it 和 -d
-it 的方式我们称之为前台运行
-d 的方式我们称之为后台运行

[[email protected] ~]# docker run -it centos #-it参数之后可以是镜像名也可以是镜像ID
[[email protected] /]# ps -ef #提示符为[[email protected] /]说明进入了docker容器的终端,dca8587afa2a为生成的容器

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  1 15:51 ?        00:00:00 /bin/bash
root         14      1  0 15:51 ?        00:00:00 ps -ef

使用ps -ef命令查看进程,显示结果为很少的进程,我们主机的进程不可能这么少,所以说明我们已经进入到docker容器的命令行里边了。使用-it打开的容器exit命令容器停止并退出,使用ctrl+p+q键容器不停止退出。

[[email protected] ~]# docker run -it --name myCentosTest centos
创建并启动容器,使用--name参数给容器定义一个别名,这样docker ps显示的时候"NAMES"那一列显示的就是我们自定义的名字

[[email protected] ~]# docker run -d --name test101 centos #使用-d启动守护式容器
83053ed07f56c62744f69e0d2676b39356f22bf2ab50561bf9f572de57b1a35d
[[email protected] ~]# docker ps -a

使用docker ps -a 查看,我们刚才运行的守护式容器STATUS为Exited(0),但为何状态是Exited(0)呢?
很重要的要说明一点:docker容器后台运行必须有一个前台进程。
容器运行的命令如果不是那些一直挂起的命令(比如top,tail),就会自动退出
这是docker机制的问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务器只需要启动相应的service即可。例如service nginx start
但是,这样做,nginx为后台进程模式运行,在linux上没有问题,
但docker run -d centos是这样致docker前台没有运行的应用
这样的容器后台启动,会立即自杀,因为他觉得他没事儿可做了。
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行
来看下面的例子
[[email protected] ~]# docker run -d --name test102 centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
a7a247b735d96f9d71a50b5130c487e5ffc6d5789303f987680faf29eb560054
使用docker ps -a 查看状态就不为Exited(0)

2、列出所有正在运行的容器
docker ps [OPTIONS]
不加任何参数,则表示显示当前正在运行的容器,不包括历史上运行的
options说明(常用):
-a: 列出当前所有正在运行的容器+历史上运行的
-l: 显示最近创建的容器
-n: 显示最近n个创建的容器
-q: 静默模式,只显示容器编号
--no-trunc:

[[email protected] ~]# docker ps #显示正在运行的容器
[[email protected] ~]# docker ps -l #显示最新的一个容器
[[email protected] ~]# docker ps -n 2 #显示最近的2个容器
[[email protected] ~]# docker ps -q #显示容器号

3、退出容器(使用-it模式启动的容器)
exit 容器停止并退出
ctrl+p+q 容器不停止退出

4、启动容器
docker start 容器ID 或者 容器名

5、重启容器
docker restart 容器ID

6、非强制停止容器
docker stop 容器ID

7、强制停止容器
docker kill 容器ID

8、删除已经停止的容器
docker ps输出为空,则说明当前没有容器运行,但是在docker的缓存记录里边,它记录着你到现在为止已经启动过哪些容器
,我们可以使用如下命令将已停止的容器删除掉,注意是已经停止的
docker rm 容器ID
如果我们就像删除正在运行的容器呢,加上-f 参数即可
docker rm -f 容器ID

9、一次性删除多个容器
方法一:docker rm -f $(docker ps -a -q)
方法二:docker ps -a -q | xargs docker rm

10、查看容器日志
docker logs -f -t --tail 容器ID
-t 是加入时间戳
-f 跟随最新的日志打印
--tail 数字显示最后多少条

为了实验说明,我们先启动一个容器
[[email protected] ~]# docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
然后使用docker logs查看日志
[[email protected] ~]# docker logs -t -f --tail 3 f00a15cba7f6 #f00a15cba7f6为容器ID,可以使用docker ps 命令获得

2018-11-14T16:46:33.398479288Z hello zzyy
2018-11-14T16:46:35.404098248Z hello zzyy
2018-11-14T16:46:37.408717369Z hello zzyy
2018-11-14T16:46:39.415078746Z hello zzyy

11、查看容器内运行的进程
[[email protected] ~]# docker top f00a15cba7f6 #f00a15cba7f6为容器ID

12、查看容器内部的细节
[[email protected] ~]# docker inspect f00a15cba7f6 #f00a15cba7f6为容器ID

13、进入正在运行的容器并以命令行交互
方式一:
[[email protected] ~]# docker attach f00a15cba7f6 #进入容器
方式二:
[[email protected] ~]# docker exec -t f00a15cba7f6 ls -l /tmp

total 4
-rwx------ 1 root root 836 Oct  6 19:15 ks-script-7RxiSx
-rw------- 1 root root   0 Oct  6 19:14 yum.log

f00a15cba7f6 为容器ID
ls -l /tmp 为要执行的命令
docker exec 是不需要进入容器,就可以在容器内执行命令,然后返回结果给docker宿主机
方式三:
当然exec也可以加上-i参数进入交互式模式
[[email protected] ~]# docker exec -it f00a15cba7f6 /bin/bash
[[email protected] /]#

14、从容器拷贝文件到主机上
为什么会有这个命令呢?假设我使用命令docker stop 停止了一个容器,被停止的容器内产生的数据就没有了,但是有时候我们想将容器内的数据持久化,我想将它保存下来,所以要将容器内的数据拷贝到主机上边。
使用docker cp命令即可,命令格式如下
docker cp 容器ID:容器内路径 目的主机路径

[[email protected] ~]# docker cp f00a15cba7f6:/tmp/yum.log /root/

原文地址:http://blog.51cto.com/2638441/2317150

时间: 2024-10-06 20:53:37

7、docker容器相关操作命令的相关文章

Docker 容器相关技术

Docker 依赖的Linux内核特性 Namespaces 命名空间 Control groups (cgroups) 控制组 理解这两个特性,能够更好的帮助我们理解docker的资源分配和管理 Namespaces 命名空间 很多编程语言都包含有命名空间的概念,可以认为命名空间是一种封装的概念,编程中的封装目的是实现代码的隔离. 编程语言: 封装 ----->  代码隔离 操作系统: 系统资源的隔离 系统资源包括 进行.网络.文件系统... 实际上Linux系统内核实现命名空间的目的之一就是

Docker容器相关技术

docker需要依赖的Linux内核特性:(1)Namespaces 命名空间PID(Process ID) 用来隔离进程NET(Network) 管理网络接口IPC(InterProcess communication) 管理跨进程通信的访问MNT(Mount) 管理挂载点UTS(Unix Timesharing System) 隔离内核和版本标识 (2)Control groups(cgroups) 控制组用来分配资源,也就是资源限制优先级设定资源计量资源控制 Docker容器的能力(1)文

Docker容器相关命令

启动一次性运行的容器 入门级例子:从ubuntu:14.04镜像启动一个容器,成功后在容器内部执行/bin/echo 'hello world'命令,如果当前物理机没有该镜像,则执行docker pull从Docker Hub获取镜像,执行成功后,容器立马停止 #sudo docker runubuntu:14.04 /bin/echo 'Hello world' 参数解释 dockerrun:docker中的启动容器命令 Ubuntu:镜像名称 14:04:镜像TAG,如果不指定TAG,doc

Docker学习笔记(三)Docker容器相关技术

轻量级虚拟化技术 命名空间:namespace,隔离系统资源,进程.网络.文件系统等隔离 控制组:cgroups,为容器技术而生,分配资源,用来限制.记录.隔离进程资源使用. 命名空间隔离: 进程pid:进程隔离 网络:管理网络接口 ipc:管理跨进程的访问 文件系统mount:管理挂载点 uts:隔离内核和版本标识. control groups:将cpu和内存资源独立分配给每个资源. 资源限制 优先级设定 资源计量 资源控制

docker实战之centos6.5上安装、镜像、容器相关操作

学习docker前,理解以下几个概念有助于更好的使用docker.镜像,容器,仓库.镜像,就是一个操作系统环境,里面只有你需要的几个应用程序,如apache,mysql,php之类,只读模板.容器,从镜像创建的运行实例.可视为一个简易环境中和其中运行的应用.仓库,存放镜像的地方.学过git的同学可能更容易理解. 一.安装docker时,增加第三方源epel如果是centos7,下载并安装这个软件包#wget http://mirror.hust.edu.cn/epel/beta/7/x86_64

Docker(二)——常用命令(镜像相关命令,容器相关命令:启动,拷贝,目录挂载,删除等等)

上一篇文章写的是Docker的安装和启动,启动了Docker我们可以进行镜像的安装了,镜像就是包含各种应用的操作系统. 一.镜像相关命令 1.搜索镜像 命令行的方式: docker search python #搜索关于python的镜像 在网站搜索: https://hub.docker.com/ #一般在网站上搜索方便看,搜索好之后再安装 搜索关于带python的Docker  2.下载镜像 docker pull centos:centos7.7.1908 #指定下载centos7.7.1

Docker 容器操作命令

容器是镜像的一个运行实例,镜像是静态的只读文件,而容器带有运行时需要的可写文件层.如果认为虚拟机是模拟运行的一整套操作系统(包括内核.应用运行态环境和其他系统环境)和跑在上面的应用,那么Docker容器就是独立运行的一个(或一组)应用,以及它们必需的运行环境. 一.创建容器 1. 新建容器 使用docker create命令新建一个容器,-t选项让Docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开. $ docker create -it ubuntu:lates

docker容器互联并且暴露真实网络

在bridge模式下,连在同一网桥上的容器可以相互通信(若出于安全考虑,也可以禁止它们之间通信,方法是在DOCKER_OPTS变量中设置--icc=false,这样只有使用--link才能使两个容器通信). 多台物理主机之间的容器互联(暴露容器到真实网络中) docker  默认的桥接网卡是 docker0 .它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 vethxxx,而 docker 只是把所有这些网卡桥接在一起 pipework工作原理分析那么容器到底发生了哪些

快速理解Docker - 容器级虚拟化解决方案

作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 是什么 简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案 拿现实世界中货物的运输作类比, 为了解决各种型号规格尺寸的货物在各种运输工具上进行运输的问题,我们发明了集装箱 Docker的初衷也就是将各种应用程序和他们所依赖的运行环境打包成标准的container/i