08-Docker命令[容器]
什么是容器
容器镜像是一个软件的轻量级独立可执行软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置。不管环境如何,集装箱化软件都可以运行相同的Linux和Windows应用程序。容器将软件与其周围环境隔离开来,例如开发环境和生产环境之间的差异,并有助于减少在同一基础架构上运行不同软件的团队之间的冲突。
轻量级
在一台机器上运行的Docker容器共享该机器的操作系统内核; 他们立即开始并使用更少的计算和内存。图像由文件系统层构建并共享公用文件。这最大限度地减少了磁盘使用量,图像下载速度更快。
标准
Docker容器基于开放标准,可在所有主要Linux发行版,Microsoft Windows以及任何基础架构(包括虚拟机,裸机和云中)上运行。
安全
Docker容器将应用程序彼此隔离并从底层基础架构中分离出来。Docker提供了最强大的默认隔离功能,可以将应用程序问题限制在一个容器中,而不是整个机器上。
演示前提
有镜像才能创建容器,这个是根本要求(下载centos镜像来演示)
docker pull centos
创建并启动容器
Run
语法
docker run [options] images [command][args] /镜像ID
options说明
--name="容器新名字": 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
交互式运行
docker run -it centos /bin/bash
直接进入了容器
退出容器
exit 退出容器并关闭容器
ctrl+p+q 退出不关闭容器
列表所容器
语法
docker ps [options]
默认只列出正在运行的容器
options 的参数说明
-a 显示所有运行和没有运行的容器
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。
启动重启关闭容器
Docker restart 容器ID或容器名称
Docker start 容器ID或容器名称
Docker stop 容器ID或容器名称
强制停止容器
docker kill 容器ID或容器名称
删除已停止的容器
#单个删除
docker rm 容器ID
#多个删除
docker rm -f $(docker ps -aq)
docker ps -aq xargs docker rm
其它重点内容
启用守护式容器
docker run -d centos
- 问题:docker ps -a 进行查看, 会发现容器已经退出
- 很重要的要说明的一点:
Docker容器后台运行,就必须有一个前台进程
. - 容器运行的命令如果不是那些
一直挂起的命令(比如运行top,tail)
,就是会自动退出的。
查看容器日志
如果是后台运行的程序,那么如何查看运行的日志呢?
启动一个tomcat
docker run -d -p 8080:8080 tomcat:8.5
使用日志命令查看tomcat的输出日志
docker logs 容器ID
-t 是加入时间戳
-f 跟随最新的日志打印
--tail 数字 显示最后多少条
查看容器运行进程
docker top 容器ID
查询容器内部细节
docker inspect 容器ID
进入正在进行的容器并以命令行交互
方式1
docker exec -it 容器ID /bin/bash 重新打开一个新的终端 如果以这种方式进入容器,可以使用exit退出。而不会关闭容器
方式2
docker attach 容器ID
两种方式的区别
- exec 在容器中打开新的终端 并且可以启动新的进程
- attach 直接进行容器终端,不会启动新的进程
- 这种方式里面使用exit退出会关闭容器 如果不想关闭容器必须使用ctrl+p+q
进入容器内拷贝文件到主机
docker cp 容器ID:容器内的路径 主机目录