Docker实战

本文介绍了Docker的核心概念,包括其体系架构、安装方法(APT和二进制文件)、Docker镜像的使用与管理(包括默认存储路径和自定义),以及如何通过命令行工具构建和管理Docker镜像,重点讲解了Dockerfile的创建和使用。
摘要由CSDN通过智能技术生成

docker简介

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
  1.DockerClient客户端
  2.Docker Daemon守护进程
  3.Docker Image镜像
  4.DockerContainer容器
  5.镜像仓库

docker体系架构与基本概念

  Docker 实现了应用代码和底层运行环境之间的耦合。它可以将一个复杂系统中的各个模块进行容器化,同时提供了复杂均衡和失败迁移功能。应用的容器化,满足了敏捷开发、动态迁移、标准化的要求,从而大大提高了效率。

  Docker 客户端和 Docker 守护进程可以运行在同样的系统上,也可以运行在不同的系统上。用户可以将一个 Docker 客户端连接到远程 Docker 守护进程中。Docker 客户端和守护进程,通过sockets 或 RESTFul API 进行沟通。

在这里插入图片描述
Docker 体系架构中的组成部分及其功能特性

组成部分功能特征
Docker 客户端通常指 Docker 提供的命令行工具,是 Docker 最基本的用户接口。用户通过 Docker 客户端提交 Docker 指令,Docker 守护进程接收并执行该指令。Docker 也有图形化的客户端工具。
Docker 守护进程在 Docker 宿主机上运行 Docker ,实际上运行的是 Docker 守护进程。用户并不直接和 Docker 守护京承交互,而是通过 Docker 客户端的命令和它进行交互。
Docker 镜像一个 Docker 镜像是一个只读的模板。
Docker 容器通过 Docker 镜像可以创建 Docker 容器。 Docker 的容器可以保存任何东西,而这些东西是运行一个应用所必须的。可以把 Docker 看成是一个虚拟机。 Docker 容器可以被运行、开启、停止、移动和删除。每一个容器都是一个分离的、安全的应用平台。 Docker 容器是 Docker 的运行组件。
Docker 镜像仓库Docker 的镜像仓库用于保存 Docker 镜像,它可以是公共的存储地方,也可以是私有的存储地方。

安装docker

宿主机系统:Ubuntu 22.04
Docker版本:24.0.5

使用APT方式安装Docker

sudo apt-get update
sudo apt search docker
sudo apt-get install docker.io
sudo docker --version
或者
sudo docker info
或者
systemctl status docker

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

使用二进制文件方式安装(可自行尝试)

至此 docker 已经安装完成

Docker镜像

什么是Docker镜像

   Docker 的镜像是一个模板,或者说是一个只读文件。在该模板长包含应用和应用运行时所需要的以来环境。 Docker 的镜像采用的是分层的文件系统,每一次对镜像的修改将以“读写层”的形式增加到原来的只读文件的木板上。
   Docker 默认的镜像的存储路径是“/var/lib/docker”,也可以自定义其他路径。

使用 Docker 默认的镜像存储路径

通过下面的命令可以得知 Docker 镜像的存储路径。

sudo docker info | grep "Docker Root Dir"

在这里插入图片描述
从镜像仓库中搜索一个符合的镜像

sudo docker search mysql

在这里插入图片描述
拉取该镜像

sudo docker pull mysql

在这里插入图片描述
查看镜像

sudo docker images

刚刚现在的MySQL镜像
切换到root用户,即可看到我们刚刚下载的MySQL镜像

sudo su -
cd /var/lib/docker/image/overlay2/imagedb/content/sha256

在这里插入图片描述

自定义 Docker 的镜像存储路径(不推荐,故不做演示,可自行尝试)

# 创建新的镜像存储路径“/data/docker/images”,该路径用于保存Docker的镜像文件
sudo midkr -p /data/docker/images
# 创建Docker守护进程的配置文件
cd /etc/docker
sudo touch daemon.josn
# 配置内容如下:
{
	"graph":"/data/docker/images"
}
# 重新加载docker服务,并重启docker
systemctl daemon-reload
systemctl restart docker

使用命令行工具管理 Docker 的镜像

命令说明
docker build命令可以用来使用 Dockerfile 创建镜像。
docker search [IMAGE NAME]在拉取镜像之前,可以通过该命令搜索符合的镜像
docker images列出本机上所有镜像。该命令行可以使用通配符,以找到符合条件的一系列镜像
docker inspect [IMAGE NAME] /[CONTAINER ID]通过docker images 命令只能查看镜像的基本信息,而通过 docker inspect 命令则可以查看镜像或者容器的详细信息
docker import用于从归档文件中创建镜像。
docker pull [IMAGE NAME]将镜像来取到本地。镜像名必须包含命名空间喝仓库名。如果在一个仓库中存在多个镜像,则必须指定TAG,即指定版本信息,否则使用默认的TAG “latest”
docker push [IMAGE NAME]将本地的镜像上传到镜像仓库中
docker rmi [IMAGE NAME] /[IMAGE ID]将不需要的镜像删除。如果删除多个镜像,则需要使用空格将他们隔开;可以使用参数-f强制删除镜像
docker tag用于给镜像打标签。
docker save -o, --output将归档文件输出到的文件。
docker load用于从 tar 归档文件或者标准输入流载入镜像。

将镜像归档
在这里插入图片描述
将归档文件重新加载为镜像,加载完以后需要重新命名。
在这里插入图片描述

镜像重命名
在这里插入图片描述

删除镜像
在这里插入图片描述

构建自己的镜像

要构建自己的镜像又两种方式:1.使用“docker commit”命令;2.使用Dockerfile文件。

使用“docker commit”命令构建镜像

“docker commit” 命令是基于一个容器来创建镜像。
在这里插入图片描述
在这里插入图片描述
  这是执行完 “docker commit” 命令以后,本地镜像列表的对比。使用 “docker commit” 命令构建镜像比较简单,也比较直观。但是再实际环境中并不会这样使用,因为:只有生成镜像的人才知道执行过什么命令、怎么生成的镜像,而别人根本无从得知。这就是一种“黑箱”操作,不利于镜像的维护,也不能实现复用。

使用Dockerfile文件构建镜像

什么是Dockerfile

  Dockerfile 是一个文本文件,其中包含了一条条的指令,每一条指令都用于构建镜像中的一层。Dockerfile 文件可以使用“docker build”命令进行编译。在编译过程中,每一条指令的内容描述了该层应该如何进行构建。当我们需要定制自己额外的需求时,只需要再Dockerfile文件的基础上添加或者修改指令,重新生成新的镜像即可。

创建一个简单的Dockerfile文件

创建一个Dockerfile文件,在该文件中输入一下命令。

FROM nginx
RUN echo '<h1>This is a Demo HTML</h1>' > /usr/share/nginx/html/index.html

当前目录下执行

sudo docker build -f ./Dockerfile -t test:1.0.1  .
# 其中-f:指定Dockerfile;-t:为镜像打标签;
sudo docker images

构建过程
在这里插入图片描述
查看镜像
在这里插入图片描述
使用新生成的镜像创建容器。

sudo docker run -d -p 8899:80 [IMAGE ID]
# 其中-d:打印容器id;-p:映射端口号

在这里插入图片描述
使用浏览器访问宿主机的8899端口,可以看到如图所示:
在这里插入图片描述
停止容器

sudo docker stop [CONTAINER ID]

在这里插入图片描述
删除容器

sudo docker rm [CONTAINER ID]

在这里插入图片描述

交流Linux运维工作、学习经验,欢迎添加QQ群:418251587
或者添加微信:lxs1266L,拉进微信群

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值