Docker入门指南:从安装到基本操作和镜像构建的全面教程

文章目录

    • 一、Docker简介
    • 二、Docker的安装
    • 三、Docker的基本概念
    • 四、Docker的基本操作
    • 五、Dockerfile和镜像构建
    • 六、总结


在这里插入图片描述

一、Docker简介

Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后在任何支持Docker的Linux或Windows机器上运行。Docker通过使用容器化技术提供了轻量级的虚拟化,相比传统的虚拟机,具有启动速度快、资源利用率高、部署灵活等优势。
在这里插入图片描述

二、Docker的安装

Docker的安装过程根据操作系统的不同而有所差异。以下是CentOS系统上安装Docker的步骤:

  1. 卸载旧版本:如果系统中已经安装了旧版本的Docker,需要先卸载它们。

    sudo yum remove docker \
      docker-client \
      docker-client-latest \
      docker-common \
      docker-latest \
      docker-latest-logrotate \
      docker-logrotate \
      docker-engine
    
  2. 安装依赖包:Docker需要一些依赖包才能正常运行,可以使用以下命令安装它们:

    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    
  3. 配置yum源:为了能够从官方仓库安装Docker,需要配置yum源。

    sudo yum-config-manager \
      --add-repo \
      https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
    
  4. 安装Docker:使用yum命令安装Docker社区版(CE)。

    sudo yum install docker-ce
    
  5. 启动Docker:安装完成后,可以使用以下命令启动Docker服务:

    sudo systemctl start docker
    
  6. 设置开机启动:为了确保Docker服务在系统重启后自动启动,可以使用以下命令:

    sudo systemctl enable docker
    

三、Docker的基本概念

  • 镜像(Image):Docker镜像是只读的模板,包含了创建Docker容器所需的文件系统。镜像可以基于其他镜像构建,并可以包含应用程序代码、运行时环境、库文件等。
  • 容器(Container):容器是镜像的运行实例。每个容器都是相互隔离的,拥有自己的文件系统、网络接口和进程空间。可以通过启动、停止、删除等操作来管理容器。
  • 仓库(Repository):仓库是用于存储和分发镜像的存储库。Docker Hub是官方的公共仓库,提供了丰富的镜像资源。
    在这里插入图片描述

四、Docker的基本操作

  1. 列出本地镜像:使用docker images命令可以列出本地已下载的镜像。
  2. 拉取镜像:使用docker pull <镜像名>命令可以从仓库中拉取镜像到本地。
  3. 运行容器:使用docker run命令可以基于镜像创建并运行容器。例如,运行一个Nginx容器:docker run -p 80:80 -d nginx
  4. 查看容器:使用docker ps命令可以查看正在运行的容器,而使用docker ps -a可以查看所有容器(包括已停止的)。
  5. 进入容器:使用docker exec -it <容器ID> /bin/bash命令可以进入容器的终端。
  6. 停止容器:使用docker stop <容器ID>命令可以停止一个正在运行的容器。
  7. 删除容器:使用docker rm <容器ID>命令可以删除一个已停止的容器。
  8. 删除镜像:使用docker rmi <镜像ID>命令可以删除一个本地镜像。

五、Dockerfile和镜像构建

Dockerfile是一个文本文件,包含了构建Docker镜像的指令。通过编写Dockerfile,可以自动化地构建镜像。以下是一个简单的Dockerfile示例:

FROM node:14-alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . ./
CMD ["node", "index.js"]

使用docker build命令可以基于Dockerfile构建镜像:

docker build -t myapp:latest .

这将构建一个名为myapp:latest的镜像。

六、总结

通过以上步骤,你已经掌握了Docker的基本概念和操作方法,可以开始使用Docker来构建和管理你的应用程序了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/529745.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

24/04/09总结

异常: 1.异常是什么? 程序中可能出现的问题 2.异常体系的最上层父类是谁?异常分为几类? 父类:Exception。 异常分为两类:编译时异常、运行时异常 编译时异常和运行时异常的区别? 编译时异常:没有继承RuntimeException的异常&#xff0c;直接继承于Exception。 编译阶段就会…

阿里面试题二

实在是太长了 重新开一篇吧 dubbo 服务暴露 Dubbo——服务调用、服务暴露、服务引用过程 - 简书 这两篇文章写的是极好 我现在查得资源强的可怕朋友们 服务降级 MockClusterInvoker 负载均衡策略 容错机制在哪里实现的源码 通信 NIO、BIO区别&#xff0c;NIO解决了什么…

[C语言]——柔性数组

目录 一.柔性数组的特点 二.柔性数组的使用 三.柔性数组的优势 C99中&#xff0c;结构体中的最后⼀个元素允许是未知大小的数组&#xff0c;这就叫做『柔性数组』成员。 typedef struct st_type //typedef可以不写 { int i;int a[0];//柔性数组成员 }type_a; 有些编译器会…

jmeter压测websocket协议

一、jmeter 安装websocket插件 1、选项--插件管理 2、搜索WebSocket Samplers by Peter Doornbosch插件 进行安装 3、 重启 jmeter 二、jmeter压测websocket协议实战 2.1、以网站为例&#xff1a; websocket在线测试 1、断开连接 2、打开F12&#xff0c;查看WS数据 3、…

下班后开始更新进行做什么内容

今天没有完成的内容有哪些 作用插槽 没有完成 开始学习一下一个工具如何 学习一个kail 兼职挖漏洞的方式 先来安装一个windows镜像内容 安装成功了

蓝桥杯-阿坤老师的魔方挑战

图示: 代码: #include <iostream> using namespace std; int main() {int N,i,j,row,col,sum,max0;cin>>N;int ar[N][N];for(i0;i<N;i){for(j0;j<N;j){cin>>ar[i][j];}//输入矩阵 }for(i0;i<N;i){row0;coli;sum0;//重新初始化while(row<N){if(c…

基于Java+SpringBoot+vue3+uniapp口红销售/商城管理系统设计与实现

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

C++11:function包装器

包装器&#xff0c;体现了C11中的封装性&#xff0c;包装器可以应用于&#xff1a;函数指针&#xff0c;仿函数&#xff0c;lambda 而包装器function的出现刚好也弥补了上述三种语法的不足之处 函数指针写起来较为复杂&#xff0c;而仿函数之间类型不同&#xff0c;lambda则在…

【粉丝福利社】区块链与金融科技(文末送书-完结)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

nexus设置s3存储

问题 因为我的nexus是安装在EC2上面&#xff0c;需要利用s3的存储能力&#xff0c;为nexus提供存储服务。 步骤 准备s3桶 输入桶名&#xff0c;创建s3桶&#xff0c;如下图&#xff1a; 创建桶读写策略 具体内容如下&#xff1a; {"Version": "2012-10-1…

施耐德 Quantum PLC 屏幕待机显示的信息

中文手册记录不全&#xff0c;中文手册只有非冗余型号的显示信息&#xff0c;没有冗余型号的显示信息&#xff0c;太&#xff01;坑&#xff01;爹&#xff01;了&#xff01; 得看英文的手册&#xff1a;https://www.mroelectric.com/static/app/product/pdfs/140CPU65260.pdf…

Ubuntu20.04安装和编译运行lidar_align来联合标定lidar与imu的外参

硬件&#xff1a;树霉派4b 1、下载并安装lidar_align mkdir -p lidar_align/src cd lidar_align/src git clone https://github.com/ethz-asl/lidar_align.git 将 lidar_align/src/lidar_align/NLOPTConfig.cmake 文件移动到 lidar_align/src/ 下(与lidar_align同级) NLOP…

业主看完当场签约的神仙地产大屏,搞物业的你不来get同款么

各行各业都有可视化大屏的应用场景&#xff0c;不少同志曾私戳我&#xff1a;能不能给我XX行业的大屏示例哇&#xff0c;我展示的指标领导怎么都不满意哇&#xff01; 于是俺在行业顾问大哥那苦苦哀求&#xff0c;终于给大家带来这个地产行业的“营销战图大屏”方案&#xff0…

靶机渗透Lampiao

寻找靶机 主机ip&#xff1a;192.168.87.134 扫描端口 靶机位置为&#xff1a;192.168.87.140 扫描端口 得到三个端口22,80,1898 信息搜集 访问网站 162.168.87.140:80 一点没用 162.168.87.140:1898 有文字框可以考虑sql注入等等 同时点击图片发现url 中有个node可以…

Linux网络名称空间之独立网络资源管理

Linux网络名称空间是一种强大的虚拟化技术&#x1f6e0;️&#xff0c;它允许用户创建隔离的网络环境&#x1f310;&#xff0c;每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用&#x1f4e6;和网络安全&#x1f512;等领域至关重要。本文将详细介绍在L…

产品推荐 | 基于Intel(Altera)Arria 10 10AS027/048打造的水星Mercury+ AA1核心板

01 产品概述 水星Mercury AA1片上系统&#xff08;SoC&#xff09;核心板通过结合基于ARM处理器的SoC FPGA、快速DDR4 ECC SDRAM、eMMC flash、QSPI flash、Gigabit Ethernet PHY和RTC形成了一个高性能嵌入式处理方案&#xff0c;结合了CPU系统的灵活性和FPGA原始的、实时的并…

电销卡呼叫必须录音吗

在现代的销售策略中&#xff0c;电话销售&#xff08;电销&#xff09;扮演着至关重要的角色。为了提高电销效率和质量&#xff0c;许多企业采用了电销卡来进行日常的电话营销活动。电销卡通常指的是专为电话销售设计的电话号码或线路&#xff0c;它们通常具备一些特殊的功能&a…

Gradle 历史-ApiHug准备-工具篇-001

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace ApiHug …

IDEA 2024.1到底更新啥有用的?

0 关键亮点 全行代码补全 Ultimate IntelliJ IDEA Ultimate 2024.1 针对 Java 全行代码补全。 这项功能由无缝集成到 IDE 中的高级深度学习模型提供支持。 它可以基于上下文分析预测和建议整行代码&#xff0c;有助于提高编码效率。 这些建议由针对不同语言和框架特别训练的专…

Leetcode-2009-使数组连续的最少操作数-c++

题目详见https://leetcode.cn/problems/minimum-number-of-operations-to-make-array-continuous/ 官方题解 几个关键点 滑动窗口的单向性由sort()保证&#xff0c;既然已经排序了就只需要单向就可以等价双向。题目中的连续和不连续这个称呼很巧妙&#xff0c;因为符合题目要…