💖5分钟带你认识Docker核心组件💖Docker系列入门教程

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Docker 并不是容器,而只是一个管理容器的引擎,Docker 的底层运行原理:Docker 服务启动→下载镜像→启动该镜像得到一个容器→容器里运行着我们想要的程序。

三、Docker的初体验


3.1、Docker的运行机制


   Docker 并不是容器,而只是一个管理容器的引擎,Docker 的底层运行原理:Docker 服务启动→下载镜像→启动该镜像得到一个容器→容器里运行着我们想要的程序。


1.JPG


3.2、运行Docker容器


   我们在启动Docker容器的时候,需要去下载一个镜像,Docker 运行一个容器前需要本地存在有对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub 公共注册服务器中的仓库 )。


   从 docker hub 官网搜索要使用的镜像,也可以在命令行使用命令搜索要使用的镜像,比如 docker search tomcat 进行搜索,然后下载所需要的镜像。


# 下载Tomncat镜像
docker pull tomcat
# 运行镜像,他默认是前台运行,如果是后台运行的话需要加一个参数 -d
docker run tomcat
# 检查 tomcat 镜像是否启动容器成功
ps -ef | grep tomcat 
复制代码


我们可以使用命令查看本地已有的镜像。


docker images
复制代码


2.JPG

   

在列出信息中,可以看到几个字段信息:


  1. REPOSITORY:来自于哪个仓库。
  2. TAG:镜像的标记。
  3. IMAGE ID:镜像的 ID 号(唯一)。
  4. CREATED:创建时间。
  5. SIZE:镜像大小。


3.3、进入Docker容器


# 命令格式
docker exec -it 容器id bash
# 退出容器
exit
复制代码

   

其中 i 表示交互式的,也就是保持标准输入流打开。t 表示虚拟控制台,分配到一个虚拟控制台


3.4、客户机访问容器


   从客户机上访问容器,需要有端口映射,docker 容器默认采用桥接模式与宿主机通信,需要将宿主机的 ip 端口映射到容器的 ip 端口上。


# 启动容器
docker run -d -p 宿主机端口:容器端口 容器名称或者容器ID
# 停止容器
docker stop 容器 ID/名称
复制代码


四、Docker 核心组件


4.1、Docker架构


   Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。


3.JPG

 

Docker 容器通过 Docker 镜像来创建,镜像与容器的关系类似于面向对象编程中的类与对象的关系。


Docker 面向对象
镜像
容器 对象


4.2、Docker 核心要素


4.JPG

   

Docker 包括三个核心要素:


  1. 镜像(Image)
  2. 容器(Container)
  3. 仓库(Repository)


4.3、镜像


4.3.1、镜像的概述


   Docker 镜像就是一个只读的模板,可以用来创建 Docker 容器。


   例如:一个镜像可以包含一个完整的 centos 操作系统环境,里面仅安装了 mysql 或用户需要的其它应用程序。Docker 提供了一个非常简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。


4.3.2、镜像的构成


   镜像是由许多层的文件系统叠加构成的,最下面是一个引导文件系统bootfs,第二层是一个 root 文件系统 rootfs,root 文件系统通常是某种操作系统,比如 centos、Ubuntu,在 root 文件系统之上又有很多层文件系统,这些文件系统叠加在一起,构成 docker 中的镜像。


4.3.3、镜像的操作


下载镜像

# 下载一个1redis镜像
docker pull redis:latest
复制代码


   reids 是查询到的镜像名称,latest 是镜像的标签 tag,获取一个镜像有两种方式:


  1. 一种是从官方镜像仓库下载。
  2. 另一种是自己通过 Dockerfile 文件构建。

 

如果有官方镜像,我们就不必自己用 Dockerfile 文件构建了,除非官方没有才会自己去 Dockerfile 文件构建。


列出已经下载的镜像

# 语法格式为:docker images [OPTIONS] [REPOSITORY]
# -a :表示列举出所有的镜像,默认并不显示中间层的镜像1
# -q :表示只显示出镜像的1唯一id
docker images
# 或者是
docker images redis
复制代码


运行镜像

# 其中-d 表示在后台运行
docker run -d redis
复制代码


查看redis进程

ps -ef | grep redis 
复制代码


查看容器镜像状态

docker ps
复制代码


进入容器

docker exec -it 镜像ID bash
复制代码


删除镜像

docker rmi redis:latest 
复制代码


4.3.4、构建镜像


   构建镜像可以让我们保存对容器的修改,并再次使用。提供了自定义镜像的能力,以软件的形式打包并方法服务及其运行环境。Docker中提供了两种方式来构建镜像:


  1. docker commit的方式,通过容器构建镜像。
  2. docker build方式,通过DockerFile文件构建。


4.3.4.1、使用commit方式构建镜像


使用commit构建镜像的语法格式为:


docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
复制代码

   

他有几个参数:


  1. -a:指定镜像的作者。
  2. -m:指定镜像提交的消息。
  3. -p:默认情况下使用commit构建镜像的时候会暂停服务器1,使用这个参数可以不暂停服务器。

 

 构建镜像的步骤:


创建一个容器

# 创建一个端口为80名为commit_test的容器,并且指定基础镜像为centos
 docker run -itd --name commit_test -p 80 centos /bin/bash
复制代码


在容器内部安装nginx

yum install -y epel-release
yum install -y nginx
复制代码


提交镜像

# 语法格式:docker commit -a '作者信息' -m '镜像名称'  需要构建的镜像的名字 构建出来的镜像名称:版本
docker commit -a 'xiaolin' -m 'nginx_mirror' commit_test nginx_mirror:v1
复制代码


查看

docker images
复制代码


5.JPG


启动容器

# 这里的容器id要根据实际情况进行替换
 docker run -itd --name nginx_test2 -p 80 36210c82236d
复制代码


进入容器

# 这里的容器id要根据实际情况进行替换
docker exec -it e231f1dfea62 bash
复制代码


4.3.4.2、通过DockerFile文件


   后面进行详细介绍


4.4、容器


4.4.1、容器的概述


   容器是从镜像创建的运行实例。它可以被启动、停止、删除。每个容器都是相互隔离的、保证安全平台。可以把看做一个简易版的 Linux环境,包括 root 用户权限、进程空间、用户空间和网络空间和运行在其中的应用程序。


Docker 利用容器来运行应用,镜像是只读的。


4.4.2、容器的操作


通过镜像启动容器


   命令会检测当前要运行的镜像在本地存不存在,若不存在他会自动 pull 下来再运行运行后会启动一个容器,,并且开启一个文件系统,。


   你可以直接在容器内创建文件夹,运行一个指定的程序, 当程序退出后, 容器也就退出了。


   运行时的容器无法删除, 只能停止后删除, 或者加上 -f 参数强制删除


# 语法格式为 docker run 容器名字
docker run -d redis
复制代码


启动守护式容器

# i --interactive=true|false 默认是false:允许你对容器内的标准输入 (STDIN) 进行交互
# t --tty=true|false 默认是false:在新容器内指定一个伪终端或终端
docker run -i -t 容器名 /bin/bash
# 示范
docker run -i -t centos /bin/bash
复制代码


退出守护容器

exit
复制代码


查看运行中的容器

# -a 表示列举所有容器
# -i 表示列举最近创建的容器
docker ps [-a] [-l]
复制代码


查看所有的容器

docker ps -a
复制代码


查看所有容器id

docker ps -aq
复制代码


停止容器

docker stop 容器id或容器名称
复制代码


重启容器

docker start 容器id或容器名称
复制代码


删除容器

# 删除容器时,容器必须是停止状态,否则会报错
docker rm 容器id或容器名称
复制代码


进入容器

docker exec -it 容器 id 或容器名称 bash
复制代码


查看容器更多信息

docker inspect  容器id或容器名称
复制代码


停用全部运行中的容器

docker stop $(docker ps -q)
复制代码

删除全部容器


docker rm $(docker ps -aq)
复制代码

停用并删除容器


docker stop $(docker ps -q) & docker rm -f $(docker ps -aq)
复制代码


4.4.3、守护式容器


   守护式容器就是一个可以长期运行的容器,我们之前创建的容器大多数都是刚刚创建完就关闭了。守护式容器的优点:


  1. 能长期运行。
  2. 适合运行运用1程序和服务。


以守护形式运行容器

docker run -i -t 容器名 /bin/bash
# 例子(创建一个容器并且指定基础镜像)
docker run -i -t centos /bin/bash
复制代码


退出但不关闭容器

Ctrl+P 和 Ctrl+Q
复制代码


附加到运行中的容器

docker attach 容器名
复制代码


启动守护式容器

docker run -d 镜像名
复制代码


查看容器运行日志

# -f 一致跟踪日志的变化,并返回结果
# -t 默认为false 在返回的结果上加上时间戳
# --tail = “all” 返回后几行的日志数据
docker logs [-f] [-t] [--tail] 容器名
复制代码


查看容器内1进程

docker top 容器名
复制代码


停止守护式进程

# 发送一个信号给容器,等待容器的关闭
docker stop 容器名
# 直接停止容器
docker kill 容器名
复制代码


4.5、仓库


4.5.1、仓库的概述


   仓库是集中存放镜像文件的场所,有时候会把仓库和仓库注册服务(Registry)看做同一事物,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。


   仓库分为公开仓库(Public)和私有仓库(Private)两种形式,最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。用户也可以在本地网络内创建一个私有仓库,当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公 有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来即可。

   Docker 仓库的概念跟 Git 类似,注册服务器也类似于 GitHub 这样的托管服务。


4.5.2、仓库的操作


搜索镜像

docker search redis
复制代码


6.JPG

 

 Docker 仓库的概念跟 Git 类似,注册服务器也类似于 GitHub 这样的托管服务。 从左往右的参数依次是:镜像名字、镜像描述、镜像星数、是否官方创建、是否自动创建。


   Docker 仓库的概念跟 Git 类似,注册服务器也类似于 GitHub 这样的托管服务。 官方的镜像说明是官方项目组创建和维护的,AUTOMATED资源允许用户验证镜像的来源和内容。


   Docker 仓库的概念跟 Git 类似,注册服务器也类似于 GitHub 这样的托管服务。 根据是否是官方提供,可将镜像资源分为两类:


  1. 类似Centos这样的基础镜像,这些基础镜像是由 Docker 公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。
  2. 另一种是类似bitnami/redis镜像,它是由Docker用户创建1并且1维护的,往往带有用户名前缀。


下载镜像

docker pull redis # 后面可接版本号
docker pull redis4.x
复制代码


   Docker 仓库的概念跟 Git 类似,注册服务器也类似于 GitHub 这样的托管服务。 我

们发现,镜像的下载速度是出奇的慢,所以我们需要配置阿里的镜像加速器进行下载。


sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://175i7vum.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker



相关文章
|
Kubernetes API Docker
(一)零基础小白都能懂的超全Docker入门教程之开篇
(一)零基础小白都能懂的超全Docker入门教程之开篇
|
存储 缓存 运维
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像。此机制减少存储占用,提高构建和传输效率。Docker还通过缓存机制提升构建和运行效率,减少重复工作。文章深入解析了Docker镜像分层存储与缓存机制,包括具体实现、管理优化及实际应用案例,帮助读者全面理解其优势与挑战。
470 4
|
存储 安全 虚拟化
深入解析:Docker的架构与组件
【8月更文挑战第27天】
612 5
|
缓存 开发者 Docker
Dockerfile是Docker容器化过程中的核心组件,它允许开发者以一种可重复、可移植的方式自动化地构建Docker镜像
【8月更文挑战第19天】Dockerfile是构建Docker镜像的脚本文件,含一系列指令定义镜像构建步骤。每条大写指令后跟至少一个参数,按序执行,每执行一条指令即生成新的镜像层。常用指令包括:FROM指定基础镜像;RUN执行构建命令;EXPOSE开放端口;CMD指定容器启动行为等。优化策略涉及减少镜像层数、选择轻量基础镜像、利用缓存及清理冗余文件。示例:基于Python应用的Dockerfile包括设置工作目录、复制文件、安装依赖等步骤。掌握Dockerfile有助于高效自动化构建镜像,加速应用部署。
170 1
|
存储 Linux 网络安全
Centos安装Docker的详细安装步骤,Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别
Centos安装Docker的详细安装步骤,Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别;CentOS7安装DockerCompose;Docker镜像仓库
1942 11
|
NoSQL Linux MongoDB
轻松掌握组件启动之MongoDB:快速入门、Linux安装和Docker配置指南
本文总结了MongoDB的快速入门、Linux安装和Docker配置指南。它提供了一步步的操作指引,帮助读者迅速上手MongoDB,并了解如何在Linux环境下进行安装、启动和配置。此外,文章还介绍了使用Docker安装和配置MongoDB的方法,使读者能够更轻松地部署和管理MongoDB实例。
290 1
|
JavaScript API 网络架构
Docker组件
Docker组件
138 0
|
Ubuntu 大数据 Linux
【大数据组件】一篇文章让你快速入门Docker
【大数据组件】一篇文章让你快速入门Docker
184 0
|
大数据 关系型数据库 MySQL
基于Docker搭建大数据集群(二)基础组件配置
基于Docker搭建大数据集群(二)基础组件配置
|
弹性计算 Cloud Native Linux
【组件云原生】docker原理浅析
Docker已经成为容器技术的代名词,但实际上,Docker只是linux 容器技术的一种封装,那么为什么会有容器技术的出现,容器技术解决了什么问题?为什么又会有Docker的出现,Docker又解决了什么问题?Docker核心原理是什么。接下来这篇文章,我们将浅析Docker的出现和原理。
267 0

热门文章

最新文章