(二)docker命令(容器)

请按以下顺序阅读

  1. docker命令(镜像+帮助)
  2. docker命令(容器)
  3. docker数据容器卷
  4. Dockerfile基础知识
  5. 自定义mycentos镜像
  6. CMD与ENTRYPOINT的区别
  7. 自定义Tomcat镜像
  8. jar包镜像的构建以及war包镜像的构建
  9. docker的一些常用安装

什么是容器

容器与镜像的关系将相当于Java中对象与类的关系,对象是类new出来的,容器是镜像run出来的,镜像每run一次,就产生一个容器。
Docker容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖的包到一个可移植的容器中,然后发布到任何的Linux机器上,也可以实现虚拟化。它是一个轻量级独立可执行的软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。宿主机与容器是通过套接字socket进行连接的。在这里插入图片描述

  1. 轻量级
    在一台机器上运行的docker容器,共享该机器的操作系统的内核;不需要模拟其他硬件,只需要能够进行运算,图像由文件系统层构建并共享公用文件,所以docker容器的内存小,极大限度地节省了磁盘的使用量。
  2. 标准
    Docker容器基于开放标准,可在所有的Linux上运行。当然也可以在Windows上运行,但是没有任何意义
  3. 安全
    docker容器将应用程序彼此之间相互隔离开,容器与容器之间是独立的,他们互不影响,将应用程序的问题限制在了一个容器中。

查看本机中的容器

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

新建一个容器

有镜像才能创建容器,这里使用centos镜像来演示
语法:
docker run [options] 镜像名 [command][args]
optioins 的说明:
有些操作是一条杠,有些操作是两条杠
–name=“容器名称” : 给容器设置一个名称(前面是两条杠);
-d :后台运行容器,并返回容器id,即启动守护式容器;
-i: 以交互模式运行容器,通常与-t同时使用;
-t : 为容器重新分配一个伪输入终端,通常与-i同时使用;
-P:随机端口映射;
-p : 指定端口映射,有以下四种方式;
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
在这里插入图片描述
如果不给容器命名,则NAMES的值是一个系统默认给的。
给容器命名,NAMES属性变成了自定义的值
在这里插入图片描述
给容器添加指定端口映射,使用-p
使用大写的-P,表示随机添加端口映射
在这里插入图片描述

交互式运行-it

执行如下语句,我们便进入了另一个世界,到了centos 的一个容器里面,可以发现这些文件和Linux上的很像
在这里插入图片描述

退出容器

退出容器有种方式:

  1. 执行命令exit
  2. 快捷键ctrl+q+p
    那这两种方式有什么区别呢?
    先来看一下第一种方式的执行结果,在上面操作的基础上,退出centos容器,可以发现容器已经停止运行了
    在这里插入图片描述
    再比较第二种方式的执行结果,容器依然还在运行的状态
    在这里插入图片描述
    所以这两种方式的区别是,第一种方式退出容器,容器停止运行;
    第二种方式退出容器,容器依然继续运行。

启动容器

docker start 容器ID或容器名称

重启容器

docker restart 容器ID或容器名称

停止容器

docker stop 容器ID或容器名称

强制停止容器(用的不多)

docker kill 容器ID或容器名称

删除已停止的容器

删除一个容器

docker rm 容器ID

删除多个容器

docker rm 容器ID1,容器ID2
在这里插入图片描述

删除所有容器

docker rm -f $(docker ps -aq)
在这里插入图片描述

其他

使用镜像centos:latest以后台模式启动一个容器
docker run -d centos
问题:docker ps -a 进行查看, 会发现容器已经退出
在这里插入图片描述
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动对应的service即可。例如 service nginx start
但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,
这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行。

查看日志

  1. 如果让centos有事可做,它就不会抑郁,也就不会自杀了
    运行一个程序,每隔两秒输出一个hello word
    docker run -d centos /bin/sh -c "while true;do echo hello word;sleep 2;done"
    在这里插入图片描述
  2. 查看日志
    docker logs -tf --tail 10 容器id
    -t : 是显示时间戳
    -f : 跟随最新的日志打印
    --tail 数字 : 显示最后多少条
    在这里插入图片描述

查看容器运行进程

docker top 容器id
在这里插入图片描述

查询容器内部细节

docker inspect 容器id
执行这条命令后会看到一段很长的文字,这些文字其实是一个比较长的Json字符串
在这里插入图片描述
容器的详细信息
在这里插入图片描述
一些网络设置
在这里插入图片描述

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

docker cp 容器id:容器内路径 主机目录
先启动一个镜像,mycentos:1.0
在这里插入图片描述
进入容器。在/data目录下,创建一个hello.txt文件,往里面写内容,退出容器;
在这里插入图片描述
执行docker cp 02ac54429b9f:/data/hello.txt /root命令,将hello.txt文件复制到主机的根目录下
在这里插入图片描述
进入主机的根目录,可以看到hello.txt,文件拷贝成功
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值