文章目录
- 什么是Docker?
- 为什么要使用Docker?
- Docker的基本概念
- 实例演示
- DockerFile
- (what)DockerFile
- (how)Dockerfile构建过程
- Dockerfile指令
- 什么是容器数据卷
当下云原生技术正在风靡全球,其中Docker无疑是最受欢迎的容器化平台之一。它以其轻量、灵活和可移植的特性,在软件开发、交付和运维方面带来了许多好处。本篇博客将介绍Docker的基本概念和用法,并通过实例演示如何运行和管理Docker容器。
什么是Docker?
Docker是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成一个独立的、可移植的容器。每个容器都是一个完整、自包含的运行环境,拥有自己的文件系统、库、环境变量等。这种轻量级的虚拟化技术使得容器可以快速部署、可移植、可伸缩,并且在不同的环境中保持一致性。
为什么要使用Docker?
- 隔离性和资源利用率:Docker容器提供了强大的隔离性,每个容器之间相互独立,互不影响。同时,它也能够更好地利用系统资源,避免了虚拟机带来的性能损失。
- 快速部署和扩展:Docker容器可以在几秒钟内启动和停止,大大加快了应用程序的部署和迭代速度。同时,它也支持自动化扩展,可以根据负载情况自动创建或销毁容器实例。
- 环境一致性:使用Docker容器可以确保应用程序在不同的环境中具有一致的行为。开发人员可以在本地开发环境中构建和测试容器,然后将其推送到生产环境中,减少了由于环境差异带来的问题。
Docker的基本概念
在开始使用Docker之前,我们需要了解一些基本概念:
- 镜像(Image):镜像是Docker容器的基础,类似于面向对象编程中的类。它是一个只读的模板,包含了运行应用程序所需的文件系统、库和配置等。我们可以通过构建或下载现有的镜像来创建自己的容器。
- 容器(Container):容器是镜像的一个实例,类似于面向对象编程中的对象。它包含了运行应用程序所需的所有内容,并且可以被启动、停止、删除等。每个容器都是相互独立的,拥有自己的运行环境。
- 仓库(Repository):仓库是用来存储和分享镜像的地方。Docker Hub是一个公共的仓库,其中包含了大量的官方和社区维护的镜像。我们也可以创建自己的仓库,用于存储和共享自己构建的镜像。
实例演示
接下来,我们将通过一个实例演示如何使用Docker来运行一个简单的Web应用。
- 安装Docker:首先,我们需要在本地环境中安装Docker。具体的安装步骤可以参考Docker官方文档。
- 编写Dockerfile:Dockerfile是用来定义镜像内容和构建过程的文件。在本例中,我们创建一个名为
Dockerfile
的文件,内容如下:
# 使用一个现有的基础镜像
FROM nginx:latest
# 将本地的index.html文件复制到容器中的指定路径
COPY index.html /usr/share/nginx/html
# 暴露容器的80端口
EXPOSE 80
上述文件指定了基于nginx:latest
镜像构建一个新的镜像,将本地的index.html
文件复制到容器中,并且暴露容器的80端口。
- 构建镜像:打开终端,进入包含
Dockerfile
和index.html
文件的目录,执行以下命令构建镜像:
docker build -t my-web-app .
- 运行容器:构建完成后,我们可以使用以下命令来运行容器:
docker run -d -p 80:80 my-web-app
上述命令会在后台运行一个名为my-web-app
的容器,并将主机的80端口映射到容器的80端口。
- 访问Web应用:最后,我们可以通过浏览器访问
http://localhost
来查看运行在容器中的Web应用。
以上就是一个简单的Docker实例,通过上述步骤,我们成功地构建并运行了一个基于Nginx的Web应用。
DockerFile
(what)DockerFile
dockerfile是用来构建docker镜像的文件,命令参数脚本
构建步骤:
1.编写一个dockerfile文件
2.docker build构建成为一个镜像
3.docker run运行镜像
4.docker push发布镜像(dockerhub、阿里云镜像仓库)
(how)Dockerfile构建过程
1.每个保留关键字(指令)都是大写字母
2.执行从上到下顺序执行
3.#表示注释每一个指令都会创建提交一个新的镜像层
DockerFile:构建文件,定义了一切的步骤,源代码
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品Docker容器:容器就是镜像运行起来提供服务
Dockerfile指令
FROM # 基础镜像
MAINTAINER # 镜像是谁写的,姓名邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤,tomcat镜像,这个tomcat压缩包,添加内容WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置
什么是容器数据卷
需求:数据持久化,数据可以存在本地不会发生删了docker,数据也没了的情况方式:目录挂载,数据同步机制
方式一:直接使用命令来挂载 -v
docker run -it -v 主机目录:容器目录
方式二:已有容器挂载
方法:修改配置文件(需停止docker服务)
1、停止docker服务
systemctl stop docker.service(关键,修改之前必须停止docker服务)
2、修改配置文件中的目录位置
vim /var/lib/docker/containers/container-ID/config.v2.json修改配置文件中的目录位置,然后保存退出