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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【4月更文挑战第1天】Docker是容器化技术,打包应用及依赖,实现快速部署。核心概念包括镜像、容器和仓库。镜像是只读模板,容器是镜像运行实例,仓库用于存储和分发镜像。常用命令如`docker search`、`docker pull`、`docker images`、`docker ps`等。安装Docker在Ubuntu上涉及`apt-get update`、`install docker-ce`等步骤。了解这些基础,开发者能更高效地部署和管理应用。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镜像有三种类型:基础镜像、官方镜像和用户自定义镜像。

基础镜像是Docker官方提供的镜像,如ubuntu、centos等;
1,官方镜像是由Docker社区维护的镜像,如node、nginx等;
2,用户自定义镜像是由用户自己制作的镜像。
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命令安装项目依赖,将项目源代码复制到工作目录中,最后暴露容器端口并启动项目

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

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

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

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

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

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

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

通过本文的学习,希望读者能够建立起对Docker基础知识的坚实理解,并能够在实际工作中灵活运用,从而更加高效地构建和管理各种应用程序。

目录
相关文章
|
7天前
|
Linux 持续交付 Go
Docker常用命令总结
这篇文章总结了Docker的基本操作,包括Docker的简介、镜像、容器和仓库的概念。介绍了如何在CentOS上安装和卸载Docker,以及常用Docker命令,如查看和删除镜像、运行和管理容器、文件拷贝和日志查看。还提供了一个curl命令示例来测试本地容器服务。完整内容请参考原文链接:[Docker命令总结](https://blog.csdn.net/javayoungcoolboy/article/details/134975314)。
|
6天前
|
Java 数据库连接 Spring
K8S+Docker理论与实践深度集成java面试jvm原理
K8S+Docker理论与实践深度集成java面试jvm原理
|
7天前
|
存储 Ubuntu Linux
Docker 从入门到实践:Docker介绍
Docker 从入门到实践:Docker介绍
|
7天前
|
运维 Linux Shell
Docker详解(七)——Docker辅助命令
Docker详解(七)——Docker辅助命令
25 4
|
7天前
|
存储 Shell Docker
docker 部署单节点的etcd以及 常用使用命令
在 Docker 中部署单节点的 etcd 以及一些常用命令的操作,可以按照以下步骤进行: ## 一、部署单节点 etcd 1. **拉取 etcd Docker 镜像**:您可以从 Docker Hub 拉取 etcd 的官方镜像。 ```shell docker pull quay.io/coreos/etcd:latest ``` 2. **启动 etcd 容器**:使用 `docker run` 命令来启动 etcd 容器。以下是一个示例命令,其中将容器的 2379 端口映射到主机的 2379 端口: ```shell docker run -d \
|
7天前
|
虚拟化 数据中心 Docker
8.Docker相关概念
8.Docker相关概念
|
7天前
|
NoSQL Linux Shell
2.Docker常用命令(linux)
2.Docker常用命令(linux)
|
7天前
|
存储 运维 Linux
Docker详解(六)——Docker高级控制命令
Docker详解(六)——Docker高级控制命令
20 2
|
7天前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
2天前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第20天】 在微服务架构日益普及的今天,Docker作为其重要的实现技术之一,承载着大量应用的运行。然而,随之而来的是对于容器健康状态、资源使用情况以及性能指标的监控需求急剧增加。本文旨在探讨构建一个高效且稳定的Docker容器监控体系,不仅涵盖了监控工具的选择与配置,还详细阐述了监控数据的分析与处理流程。通过精心设计的监控策略和实时响应机制,我们能够确保系统的稳定性,并及时发现及处理潜在的问题。