docker[容器]命令(五)

目录

1、什么是容器 

2,演示前提

3,创建并启动容器

3.1语法

3.2options说明

3.3交互式运行

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

4.1语法

4.2 options语法说明

5,退出容器

6,启动容器

7,重启容器

8,停止容器

9,强制停止容器

10,删除已停止的容器

11,其它重点内容

1,启用守护式容器

2,查看容器日志

4,查询容器内部细节

5,进入正在进行的容器并以命令行交互

6,进入容器内拷贝文件到主机

12,命令总结                           ​


1、什么是容器 

 容器镜像是一个软件的轻量级独立可执行软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置。不管环境如何,集装箱化软件都可以运行相同的Linux和Windows应用程序。容器将软件与其周围环境隔离开来,例如开发环境和生产环境之间的差异,并有助于减少在同一基础架构上运行不同软件的团队之间的冲突。

                                           

1.轻量级 

在一台机器上运行的Docker容器共享该机器的操作系统内核; 他们立即开始并使用更少的计算和内存。图像由文件系统层构建并共享公用文件。这最大限度地减少了磁盘使用量,图像下载速度更快。 

2.标准 

Docker容器基于开放标准,可在所有主要Linux发行版,Microsoft Windows以及任何基础架构(包括虚拟机,裸机和云中)上运行。 

3.安全 

Docker容器将应用程序彼此隔离并从底层基础架构中分离出来。Docker提供了最强大的默认隔离功能,可以将应用程序问题限制在一个容器中,而不是整个机器上。

 

 
 

2,演示前提

    有镜像才能创建容器,这个是根本要求(下载centos镜像来演示)

    docker pull centos

 

 
 

3,创建并启动容器

3.1语法

docker run [options] images [command][args] 

3.2options说明

有些是一个减号,有些是两个减号

--name="容器新名字": 为容器指定一个名称;

-d: 后台运行容器,并返回容器ID,也即启动守护式容器;

-i:以交互模式运行容器,通常与 -t 同时使用;

-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-P: 随机端口映射;

-p: 指定端口映射,有以下四种格式

      ip:hostPort:containerPort

      ip::containerPort

      hostPort:containerPort

      containerPort

3.3交互式运行

#使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it centos /bin/bash 

 

 
 

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

4.1语法

docker ps [options]

4.2 options语法说明

-a :列出当前所有正在运行的容器+历史上运行过的

-l :显示最近创建的容器。

-n:显示最近n个创建的容器。

-q :静默模式,只显示容器编号。

--no-trunc :不截断输出。

 

 
 

5,退出容器

1,exit:停止容器并退出

2,ctrl+P+Q  容器不停止退出(仅仅是退出终端,但还在运行着)

 

 
 

6,启动容器

docker start 容器ID或容器名称

 

 
 

7,重启容器

docker restart 容器ID或容器名称

 
 

 

8,停止容器

docker stop 容器ID或容器名称

 

 
 

9,强制停止容器

docker kill 容器ID或容器名称

 
 

 

10,删除已停止的容器

  #单个删除

docker rm 容器ID
#多个删除
docker rm -f $(docker ps -aq)
docker ps -aq xargs docker rm
 
 

 

11,其它重点内容

1,启用守护式容器

#使用镜像centos:latest以后台模式启动一个容器

docker run -d centos

问题:docker ps -a 进行查看, 会发现容器已经退出

很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.

容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动是应的service即可。例如  service nginx start

但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,

这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.

所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行

2,查看容器日志

如果是后台运行的程序,那么如何查看运行的日志呢?

1,先运行一个程序  在后台被隔两秒输出[hello laolei]

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

2,查看日志

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

3,查看容器运行进程 

docker top 容器ID

 

4,查询容器内部细节

docker inspect 容器ID

 

5,进入正在进行的容器并以命令行交互

#方式1
docker exec -it 容器ID /bin/bash
#方式2
docker attach 容器ID
#两种方式的区别
exec 在容器中打开新的终端(就跟在windows的运行tomcat中的startup.sh一样) 并且可以启动新的进程
attch 直接进行容器终端(就跟在windows的cmd运行tomcat一样),不会启动新的进程

 

6,进入容器内拷贝文件到主机

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

 

12,命令总结

                             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值