学习中总结的命令
什么是容器?
容器镜像是一个软件的轻量级独立可执行软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置。不管环境如何,集装箱化软件都可以运行相同的Linux和Windows应用程序。容器将软件与其周围环境隔离,例如开发环境和生产环境之间的差异,并有助于减少在同一个基础框架上运行不同软件的团队之间的冲突。
容器好处:
1、轻量级
在一台机器上运行的docker容器共享该机器的操作系统内核,他们立即开始并使用更少的计算和内存。图像由文件系统层构建并共享共用文件。这最大限度的减少了磁盘使用量,图像下载速度更快。
2、标准
Docker容器基于开放标准,可在所有主要Linux发行版,Microsoft Windows以及任何基础架构上运行
3、安全
Docker容器将应用程序彼此隔离并从底层基础架构中分离出来。docker提供了最强大的默认隔离功能,可以将应用程序问题限制在一个容器中,而不是整个机器上。
1、下载centos镜像
docker pull centos
2、创建并启动容器
语法
docker run [options] images [command][args]
options说明
--name="容器新名字": 为容器制定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i: 以交互模式运行容器,通常与-t同时使用;
-t: 为容器重新分配一个伪输入终端,通常与-i同时使用;
-P:随机端口映射;
-p:指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
3、交互式运行
#使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it centos /bin/bash
例如:运行centos,执行以下命令,进入容器内部
docker run -it --name mycentos01 centos /bin/bash
4、列出当前所有正在运行的容器
语法
docker ps [options]
options语法说明
-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近N个创建的容器
-q:静默模式,只显示容器编号
--no-trunc:不截断输出
5、退出容器
exit 退出容器并关闭容器
ctrl+p+q 退出不关闭容器
6、启动、重启、关闭容器
docker start 容器ID或容器名称
docker restart 容器ID或容器名称
docker stop 容器ID或容器名称
7、删除已停止的容器
#单个删除
docker rm 容器ID
#多个删除(-f 强制)
docker rm -f ${docker ps -aq}
8、强制停止容器
docker kill 容器ID或容器名称
9、其它重点内容
9.1 启用守护式容器
#在使用镜像centos:latest以后台模式启动一个容器
docker run -d centos
问题:docker ps -a 进行查看,会发现容器已经退出
很重要的说明一点:docker容器后台运行,就必须有一个前台进程
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就会自动退出的。
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动使用的service即可。例如:service nginx start
但是这样做nginx为后台进程模式运行,就导致docker前台没有运行的应用。
这样的容器后台启动后,会立即自杀因为他觉得他没事可做了。
所以最佳的解决方案是:将你要运行的程序以前台进程的形式运行
9.2 查看容器日志
如果是后台运行的程序,那么如何查看运行的日志呢?
1、先运行一个程序,在后台被隔离两秒输出(hello ayiol)
docker run -d centos /bin/sh -c "while true;do echo hello ayiol;sleep 2;done"
2、docker logs -tf --tail 10 容器ID
-t 是加入时间戳
-f 跟随最新的日志打印
--tail 数字 显示最后多少条
9.3 查看容器运行进程
docker top 容器ID
9.4 查看容器内部细节
docker inspect 容器ID
9.5 进入正在运行的容器并以命令行交互
#方式一:
docker exec -it 容器ID /bin/bash
#方式二:
docker attach 容器ID
#两种方式的区别
exec 在容器中打开新的终端,并且可以启动新的进程,如果以这种方式进入容器,可以使用exit退出,而不会关闭容器
attach 直接进入容器终端,不会启动新的进程,这种方式里面使用exit退出会关闭容器,如果不想关闭容器必须使用ctrl+p+q
9.6 进入容器内拷贝文件到主机
docker cp 容器ID:容器内的路径 主机目录
例如:docker cp 容器ID:/usr/local/tomcat/webapps/docs /root/