【Docker系列】Docker-核心概念/常用命令与项目部署实践

这篇具有很好参考价值的文章主要介绍了【Docker系列】Docker-核心概念/常用命令与项目部署实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Docker系列】Docker-核心概念/常用命令与项目部署实践,Docker系列,docker,容器,云原生,原力计划

 

写在前面 

Docker是一种开源的容器化技术,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,从而实现快速部署和高效运行。Docker的核心概念包括镜像、容器、仓库等。本文将详细介绍Docker的基本概念、安装方法以及常用命令。

一、Docker基本概念

介绍3个基础概念:

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Registry)

1.1  镜像(Image)

Docker镜像是一个轻量级的、可执行的独立软件包,包含运行某个应用所需的所有内容,包括代码、运行时、系统工具、库和设置。

镜像不包含任何用户数据,它们只在docker run命令被调用时被创建。

Docker镜像是一个只读的模板,含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。比如,一个镜像可以包含一个运行在Apache上的Web应用和其使用的Ubuntu操作系统。

分层构建机制

Docker镜像采用分层构建机制,最底层为bootfs,其次为rootfs。bootfs:用于系统引导的文件系统,包括BootLoader和kernel,容器启动完成后会会被卸载以节约内存资源; rootfs:位于bootfs之上,表现为docker容器的根文件系统。

镜像类型

Docker镜像有三种类型:基础镜像、官方镜像和用户自定义镜像。

  1. 基础镜像是Docker官方提供的镜像,如ubuntu、centos等;
  2. 官方镜像是由Docker社区维护的镜像,如node、nginx等;
  3. 用户自定义镜像是由用户自己制作的镜像。

可以通过以下命令来查看本地已经存在的镜像:

docker images

1.2. 容器(Container)

容器是镜像的一个运行实例,可以在容器中运行一个应用或服务。容器与宿主机系统隔离,容器内的应用在主机操作系统上无法直接访问。

每个容器都有自己的文件系统、网络栈和进程空间。

Docker容器是镜像的一个运行实例,是Docker的核心概念之一。正如从虚拟机模板上启动 VM 一样,用户也同样可以从单个镜像上启动一个或多个容器。

Docker容器是完全使用沙箱机制,相互之间不会有任何接口,并且容器开销极其低。可以理解为在容器中运行一个应用或服务。

容器与宿主机系统隔离,容器内的应用在主机操作系统上无法直接访问。

可以通过以下命令来查看本地已经存在的容器:

docker ps

1.3. 仓库(Registry)

Docker仓库是Docker的核心组件之一,主要作用是负责存储和分发Docker镜像的地方。

仓库是用于存储和分发镜像的服务。Docker Hub是最受欢迎的公共仓库,用户可以在其中找到大量的镜像。

此外,用户还可以搭建私有仓库,用于内部团队共享和管理镜像。

Docker仓库分为官方仓库和用户自定义仓库两种类型。

  • 官方仓库:Docker Hub是Docker官方提供的公共仓库,用户可以在上面免费上传、下载、分享自己的Docker镜像。除此之外,还有Google Container Registry、Amazon Elastic Container Registry等官方仓库。
  • 用户自定义仓库:用户可以根据自己的需求搭建自己的私有仓库,比如使用Nexus Repository Manager、Harbor等开源软件。

二、Docker安装方法

Docker支持多种平台,包括Windows、macOS和Linux。以Ubuntu为例,介绍如何安装Docker:

1. 更新软件包列表:
```
sudo apt-get update
```

2. 安装Docker引擎:
```
sudo apt-get install docker-ce docker-ce-cli containerd.io
```

3. 启动Docker服务:
```
sudo systemctl start docker
```

4. 设置Docker开机自启:
```
sudo systemctl enable docker
```

三、Docker常用命令

 搜索镜像:`docker search <镜像名称>`

下载镜像:`docker pull <镜像名称>`

列出本地镜像:`docker images`

删除镜像:`docker rmi <镜像ID>`

 创建容器:`docker create --name <容器名称> --image <镜像名称>`

启动容器:`docker start <容器ID>`

停止容器:`docker stop <容器ID>`

进入容器:`docker exec -it <容器ID> /bin/bash`

查看容器日志:`docker logs <容器ID>`

导出容器:`docker export <容器ID> > <文件名>.tar`

导入容器:`docker import <文件名.tar> <新镜像名称>:<标签>`

 删除容器:`docker rm <容器ID>`

 删除镜像:`docker rmi <镜像ID>`

查看容器状态:docker top <容器ID>

进入正在运行的容器:docker attach <容器ID>

设置容器开机自启:docker update --restart=always <容器ID>

限制容器资源使用:docker run -it --cpu-period=50000 --memory=512m <镜像名称> /bin/bash

导出容器配置:docker export <容器ID> > <文件名>.yml

导入容器配置:docker import <文件名.yml> <新镜像名称>:<标签>

保存镜像:docker save <镜像名称> > <文件名>.tar

加载镜像:docker load <文件名.tar>

查看Docker版本:docker version

查看Docker系统信息:docker info

查看Docker网络信息:docker network ls

创建Docker数据卷:docker volume create <卷名>

使用Docker数据卷:docker run -v <卷名>:/data <镜像名称> /bin/bash

删除Docker数据卷:docker volume rm <卷名>

查看Docker日志:docker logs --tail=100 <容器ID>

监视Docker容器:docker ps --filter "status=running" --format "{{.ID}}:{{.Image}}" | xargs -n 1 -I {} docker top {}

连接到Docker Hub:docker login --username=<用户名> --password=<密码>(需要先在Docker Hub上注册账号)

发布镜像到Docker Hub:docker tag <本地镜像名称> <用户名>/<仓库名称>:<标签>,然后使用docker push <用户名>/<仓库名称>:<标签>将镜像推送到Docker Hub。

从Docker Hub拉取镜像:docker pull <用户名>/<仓库名称>:<标签>

管理Docker用户组和用户:sudo groupadd -r docker && usermod -aG docker $USER(需要root权限)

重启Docker服务:sudo systemctl restart docker

停止Docker服务:sudo systemctl stop docker

四、使用docker部署一个前端项目

使用Docker部署一个前端项目可以大大简化项目的部署和维护过程,下面是一个详细的步骤介绍:

4.1 创建一个Dockerfile文件 

创建一个Dockerfile文件,该文件描述了如何构建一个包含前端项目的Docker镜像。在项目根目录下创建Dockerfile文件,并添加以下内容:

# 使用官方的Node.js镜像作为基础镜像
FROM node:latest

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json 到工作目录
COPY package*.json ./

# 安装项目依赖
RUN npm install

# 复制项目源代码到工作目录
COPY . .

# 暴露容器端口,假设我们的前端项目运行在3000端口上
EXPOSE 3000

# 启动项目
CMD ["npm", "start"]

这个Dockerfile使用了官方的Node.js镜像作为基础镜像,将工作目录设置为/app,并将package.json和package-lock.json复制到工作目录中。

然后使用npm install命令安装项目依赖,将项目源代码复制到工作目录中,最后暴露容器端口并启动项目。

 4.2 构建镜像

在项目根目录下执行以下命令构建Docker镜像:
 

docker build -t my-frontend .

其中my-frontend是自定义的镜像名称,可以根据需要进行修改。

4.3 运行容器 

运行Docker容器并映射宿主机的端口到容器内部:

docker run -p 3000:3000 --name my-frontend-container my-frontend

其中-p参数用于将宿主机的3000端口映射到容器内部的3000端口,--name参数用于给容器命名。

4.4 访问项目

现在可以通过访问http://localhost:3000来查看前端项目是否已经成功部署。如果一切正常,应该能够看到项目的首页。

4.5 项目更新

如果需要更新项目代码,只需要重新构建Docker镜像并重启容器即可:
 

docker build -t my-frontend .
docker restart my-frontend-container

五、总结

Docker作为一种轻量级的虚拟化技术,为开发者提供了一种简单易用的方式来部署和管理应用程序。通过掌握Docker的基本概念、安装方法和常用命令,开发者可以更高效地进行软件开发和运维工作。

总而言之,掌握Docker的基础知识是现代软件开发和部署的必备技能之一。通过深入了解Docker的核心概念,我们能够更好地理解容器化技术的优势,如隔离性、可移植性和高度可扩展性。熟悉常用的Docker命令不仅能够帮助我们更高效地管理容器和镜像,还能够加速开发、测试和生产环境的部署过程。

在本文中,我们不仅深入探讨了Docker的基本概念,还详细介绍了一些常用的命令,从创建和运行容器,到构建和共享自定义镜像,无不展现了Docker作为一个强大工具的多面能力。特别是通过实际操作演示,我们学习了如何使用Docker来部署一个前端项目。

这个过程不仅简化了环境配置,还提供了一种一致性和可重复性的部署方式,为团队协作和持续集成提供了更便捷的手段。

然而,正如任何技术一样,Docker也有其深入的方面需要进一步学习和探索。从网络配置到容器编排,从安全性到监控,这些都是在实际场景中需要考虑的因素。

因此,在掌握了基础知识后,继续深入学习和实践,以充分利用Docker在项目开发和部署中的优势。

总之,Docker作为现代软件开发的关键工具,在简化环境管理、加速交付、提高可靠性等方面具有巨大潜力。

通过本文的学习,希望读者能够建立起对Docker基础知识的坚实理解,并能够在实际工作中灵活运用,从而更加高效地构建和管理各种应用程序。文章来源地址https://www.toymoban.com/news/detail-678743.html

六、投票

 

到了这里,关于【Docker系列】Docker-核心概念/常用命令与项目部署实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker 实践之旅:项目迁移与高效部署

    公司开发了多个业务系统,其中使用了 Java 和 Vue 技术栈。传统部署方式涉及在服务器上配置环境、安装 Nginx、部署 JAR 包以及 Vue 打包后的静态文件,还需要安装数据库等步骤,整个流程可能耗费长达多天的时间。为了提高部署效率和便捷性,决定转向使用 Docker 进行部署。

    2024年02月01日
    浏览(19)
  • Docker安装启动、常用命令、应用部署、迁移备份、Dockerfile、Docker私有仓库

    目录 1.Docker安装与启动 1.1 安装Docker  1.2 设置ustc的镜像  1.3 Docker的启动与停止 2.常用命令 2.1 镜像相关命令 2.1.1 查看镜像 2.1.2 搜索镜像  2.1.3 拉取镜像 2.1.4 删除镜像 2.2 容器相关命令 2.2.1 查看容器 2.2.2 创建与启动容器 2.2.3 停止与启动容器 2.2.4 文件拷贝 2.2.5 目录挂载

    2024年01月22日
    浏览(45)
  • Docker的常用命令:加速你的容器化开发与部署

    人不走空                                                                          目录         🌈个人主页:人不走空       💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 1. 容器生命周期管理 1.1 启动容器 1.2 停止容器 1.3 重启容器 1.4 删除容器

    2024年02月19日
    浏览(38)
  • es 集群核心概念以及实践

    节点是一个Elasticsearch的实例 本质上就是一个JAVA进程 一台机器上可以运行多个Elasticsearch进程,但是生产环境一般建议一台机器上只运行一个Elasticsearch实例 每一个节点都有名字,通过配置文件配置,或者启动时候 -E node.name=node1指定 每一个节点在启动之后,会分配一个UID,保

    2024年04月22日
    浏览(26)
  • 【docker系列】docker实战之部署SpringBoot项目

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月05日
    浏览(38)
  • Docker部署(5)——使用docker run命令部署运行jar项目

           对于一些简单的单体项目,可以使用 docker run 命令可以直接在命令行中运行容器,无需事先构建镜像。这相较于之前使用的 dockerfile 文件来运行部署项目相当于是另外一种简单的部署方法,关于之前使用dockerfile 文件来运行部署这种方法,具体可以参考下面这篇文章

    2024年02月10日
    浏览(34)
  • Docker的安装、基础命令与项目部署

    docker是快速构建、运行、管理应用的工具,本文记录了docker安装、docker基础命令、docker的基本操作以及java项目的部署。 主要讲述在Linux环境下docker的安装过程。 (1)基于CentOS7 1.切换到root。 2.卸载旧版本docker。 3.配置docker的yum库 安装一个yum工具: 安装成功后,执行命令,配

    2024年02月06日
    浏览(26)
  • Go微服务实践 - Rpc核心概念理解

    从0研究一下Golang已经Golang的微服务生态体系,Golang的微服务首先要从Rpc开始,在升级到Grpc,详细介绍这些技术点都在解决什么技术问题。 Rpc Rpc (Remote Procedure Call) 远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。 对应Rpc的是本地过程调用,函数调用时最常

    2024年02月14日
    浏览(34)
  • [手把手系列之]Docker 部署 vue 项目

    Docker 作为轻量级虚拟化技术,拥有持续集成、版本控制、可移植性、隔离性和安全性等优势。本文使用Docker来部署一个vue的前端应用,并尽可能详尽的介绍了实现思路和具体步骤,以方便有类似需要的同学参考。 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应

    2024年03月24日
    浏览(51)
  • k8s服务部署核心流程:以Jenkins为核心,从Gitee拉取代码,然后进行maven构建,之后使用docker命令打镜像,并推送镜像到harbor仓库,之后远程调用k8s命令创建服务

    前提是我们在自己电脑上模拟整个流程。 假设我们需要搭建一主一从的k8s集群,那就需要安装VMvare和Centos7(点击我查看安装文档), 然后就可以在这两个虚拟机上搭建k8s集群了(点击我查看安装文档), 一个最简单的devops流程已经在标题中写明了, 其中可以搭建gitlab(点

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包