【什么是Docker ?】一篇博文让你明白什么是Docker,如何按照docker,docker核心命令

发布时间:2024年01月11日

什么是Docker

在这里插入图片描述

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

logo解释:

标志是一头鲸鱼携带着一堆容器。它正在向您发送这些信息的途中。Docker直译过来是码头工人,然而Docker给人的第一感觉是容器,容器技术英译为Linux Container, Container的直译有集装箱,容器两个意思。

什么是"集装箱技术"

我们都知道码头里的集装箱是运载货物用的,它是一种按规格标准化的钢制箱子。集装箱的特色,在于其格式划一,并可以层层重叠, 集装箱与集装箱之间互不影响于是乎,IT领域借鉴了这一理念,大家就在想,有没有可能大家 只需要关注程序本身?

我们都知道码头里的集装箱是运载货物用的,它是一种按规格标准化的钢制箱子。集装箱的特色, 「在于其格式划一,并可以层层重叠, 集装箱与集装箱之间互不影响」

在这里插入图片描述

概述

Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

重心:

Docker其实就是可以打包程序和运行环境,把环境和程序一起发布的容器。

为什么要使用Docker

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Docker容器虚拟化的好处

开发者需要能方便高效构建应用,并且任何时间任何地点都可以获取。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Docker在开发和运维中的优势

对开发和运维( DevOps)人员来说,可能最梦寐以求的就是一次性地创建或配置,可以在任意环境、任意时间让应用正常地运行。而Docker恰恰是可以实现这一终极目标的瑞士军刀。

优势:

  • 更快速的交付和部署
  • 更高效的资源利用
  • 更轻松的迁移和扩展
  • 更简单的更新管理

Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势。

特性容器虚拟机
启动速度秒级分钟级
磁盘使用一般为MB一般为GB
性能接近原生弱于
系统支持量单机支持上千个容器一般几十个
隔离性完全隔离完全隔离

虚拟化与Docker

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

虚拟化技术是一个通用的概念,在不同领域有不同的理解。在计算领域,一般指的是计算虚拟化或通常说的服务器虚拟化。

简单的说,「虚拟化」,顾名思义,就是「虚拟」的,是「假」的,是形而上的,是观念上、逻辑上的划分。

举栗说明

假设你现在手头上有一套房子,并且你要把它给租出去,租金的市场价是2000元/月。那么有没有办法把它租得更贵,获得6000元的租金呢?你想到了两个办法:

  1. 找一个不差钱的傻X租户,让他每月交6000元。
  2. 把房子租给4个单身狗,租金为1500元/人/月。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

虚拟化分类:

  • 完全虚拟化
  • 硬件辅助虚拟化
  • 部分虚拟化
  • 超虚拟机化
  • 操作系统虚拟化

什么是物理机

在这里插入图片描述

什么是虚拟机

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

什么是Docker

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Docker核心概念

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Docker技术的三大核心概念,分别是:

  • 镜像(Image)
  • 容器 (Container)
  • 仓库 (Repository)
    在这里插入图片描述

Docker镜像

Docker 镜像 (Image) 类似于虚拟机镜像,可以将它理解为个面向 Docker引擎的模板,包含了文件系统。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

镜像从何而来
  • 从Docker Hub下载 maven-> 中央仓库
  • 通过Docker file自己创建出来

Docker容器

Docker容器(Container)类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。**容器是从镜像创建的应用运行实例,**可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:

容器和镜像一样,也是若干层的叠加,唯一区别是所有只读层的最上面一层,是一层可读可写层,可以记住这个简单的公式:容器 = 容器镜像 + 可读可写层

Docker仓库

Docker仓库(Repository)类似于代码仓库,是Docker**集中存放镜像文件的场所。**目前,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供稳定的国内访问。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:

Docker利用仓库管理镜像的设计理念与Maven非常相似。

咱们再来理解docker的两句口号就更好理解了

  • 「Build, Ship and Run (搭建,发送,运行)」
  • 「Build?once,Run?anywhere (搭建一次,运行到任何地方)」

Docker安装

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

系统环境

序号软件版本
1Centos7.5
2Linux内核3.8之上

关闭防火墙

systemctl stop firewalld

关闭selinux

    vim /etc/selinux/config
SELINUX=disabled

安装docker引擎

yum install -y  docker
启动docker
systemctl start docker
设置docker自启动
systemctl enable docker
测试docker是否安装成功
docker run hello-world

Docker核心命令

镜像命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。

镜像下载docker pull

镜像是Docker运行容器的前提。docker pull

语法格式:

docker pull 镜像名字:[tag]

注意:

如果不指定tag,则下载Docker Hub公共注册服务器中仓库的最新版本。

查看镜像docker images

列出本地主机上已有的镜像。docker images

[root@docker *]# docker images
REPOSITORY  TAG    IMAGE ID  CREATED  SIZE

参数:

  • 来自于哪个仓库,比如 ubuntu仓库。镜像的标签信息,比如14.04。
  • 镜像的ID号(唯一)。
  • 创建时间。
  • 镜像大小。

镜像的ID信息十分重要,它唯一标识了镜像。

镜像搜索docker search

搜索远端仓库中共享的镜像,默认搜索Docker Hub官方仓库中的镜像。docker search

docker search  [镜像名字]

参数:

可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级 (表示该镜像的受欢迎程度)、是否官方创建、是否自动创建等。

删除镜像docker rmi

使用镜像的标签删除镜像 docker rmi

docker rmi 源名字
docker rmi image id

容器命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当我们有了镜像,才可以创建容器, 创建一个centos容器来学习

创建容器

Docker的容器十分轻量级,用户可以随时创建或者删除容器。

语法格式

docker create -it 镜像名字

注意:

使用docker create命令新建的容器处于停止状态,可以使用docker start命令来启动它。

列出容器

docker ps [参数]

参数:

  • -a: 显示未启动容器
  • -q:返回容器id号

新建并启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态( stopped)的容器重新启动。所需要的命令主要为docker run,等价于先执行docker create命令,再执行docker start命令。

语法格式:

docker run 镜像名字 /bin/echo 'hello world'

Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载。
  • 利用镜像创建并启动一个容器。
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层。
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去。
  • 从地址池配置一个IP地址给容器。
  • 执行用户指定的应用程序。
  • 执行完毕后容器被终止。

下面命令则启动一个bash端,运行用户交互

docker run -t -i 镜像名字  /bin/bash

参数:

其中,-t选项让Docker 分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。

exit命令退出。

守护态运行

更多的时候,需要让Docker容器在后台以守护态(Daemonized)形式运行。用户可以通过添加-d参数来实现。

语法格式:

docker run -d 镜像名字 /bin/sh -c  "while true; do echo hello world ;sleep 1 ;done"

容器启动后会返回一个唯一的ID,也可以通过docker ps命令来查看容器信息:

docker ps

获取容器输出信息

docker logs 容器id

终止容器

语法格式:

docker stop 容器id

处于终止状态的容器,可以通过docker start命令来重新启动:

docker start 容器id

此外,docker restart命令会将一个运行态的容器终止,然后再重新启动

docker restart 容器id

进入容器

在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach命令、docker exec命令,以及nsenter工具等。

attach命令

语法格式:

docker attach 容器id

注意:

但是使用attach命令有时候并不方便。当多个窗口同时attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

exec命令

Docke自1.3版本起,提供了一个更加方便的工具exec,可以直接在容器内运行命令。例如进入到刚创建的容器中,并启动一个bash:

docker exec -it 容器id  /bin/bash

删除容器

语法格式:

docker rm 容器id

参数:

  • -f, --force=false强行终止并删除一个运行中的容器。
  • -l, --link=false删除容器的连接,但保留容器。
  • -V,–volumes=false删除容器挂载的数据卷。

退出

#如果docker容器在启动的时候没有加 -d 参数
exit # 会直接停止同期并退出
Ctrt + p + q # 容器不停止 并退出

其他命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看日志

语法格式:

docker logs 容器id

参数:

  • -f, --follow 跟踪实时日志
  • –since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
  • –tail string 从日志末尾显示多少行日志, 默认是all
  • -t, --timestamps 显示时间戳
  • –until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

查看容器里面的进程

语法格式:

docker top 容器id

从容器拷贝文件到主机上

语法格式:

docker cp 容器id:容器内路径   目录路径
文章来源:https://blog.csdn.net/guojiaqi_/article/details/135523237
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。