简明docker快速入门并实践方法

简明docker快速入门并实践方法

  • 前言:
  • 1. 什么是Docker?
  • 2. Docker的基本概念
  • 3. 安装配置Docker
  • 4. Docker基本命令:
  • 5. 简单实践:拉取Nginx镜像-自定义配置-推送镜像
    • 步骤 1:拉取Nginx镜像
      • 步骤 1.5(可选):运行Nginx容器以熟悉操作
    • 步骤 2:创建自定义Nginx配置文件
    • 步骤 3:创建Dockerfile
    • 步骤 4:构建Docker镜像
    • 步骤 5:运行Docker容器
    • 步骤 6(可选):登录Docker Hub并推送镜像
  • 6.补充内容
    • Docker网络的基本概念
    • Docker网络的基本命令

前言:

这是一篇简明docker快速入门并实践方法,目的是希望大家在半个小时内对docker快速了解并进行操作。故比较简洁(不过基本的使用方法都包含了),建议和那些更详细的知识帖结合起来看。

下面有两个视频,第一个视频看完可以对docker有基本的了解。第二个视频看完可以学会一些docker的实操操作。大家可以先看第一个视频后,再根据我下面分享的知识直接进行docker的实践操作:

  1. 改变软件行业的技术!程序员、软件爱好者必须掌握的Docker,到底是什么?
  2. 保姆级Docker入门教程:10分钟从零开始彻底掌握 Docker,0 基础到实战部署

1. 什么是Docker?

Docker是基于Linux容器技术的一种应用,它使得开发者能够将应用程序及其依赖打包成一个轻量级、可移植的容器。从而确保该应用能够在任何环境中一致地运行。相比传统的虚拟机技术,Docker更加高效和快速,因为它不包含整个操作系统,而是共享主机操作系统的内核。

2. Docker的基本概念

  1. 镜像(Image)
    • 用于创建容器的只读模板,包含运行某个应用所需的所有代码、库、配置文件等。
    • 使用docker pull <image_name>从Docker Hub拉取镜像。
  2. 容器(Container)
    • 镜像的运行实例。它可以被启动、开始、停止、删除,并且可以通过Docker命令行接口与之交互。
    • 使用docker run <image_name>启动容器
  3. 仓库(Repository)
    • 存储和分享Docker镜像的地方。分为公共仓库(如Docker Hub)和私有仓库。
    • 使用docker login登录Docker Hubdocker push <image_name>推送镜像。
  4. Dockerfile
    • Dockerfile定义了构建镜像的步骤,通过docker build -t <image_name> .命令创建镜像。
    • 示例:
    FROM ubuntu:latest
    RUN apt-get update && apt-get install -y nginx
    EXPOSE 80
    CMD ["nginx", "-g", "daemon off;"]
    

3. 安装配置Docker

访问Docker官网下载适合的版本。对于Windows和macOS用户,推荐使用Docker Desktop,它集成了Docker引擎、Docker CLI客户端和其他实用工具。

  1. 安装Docker

    • 访问Docker官网,根据你的操作系统(WindowsmacOSLinux)下载并安装Docker DesktopDocker Engine
    • 安装过程中,可以参考这两个帖子:1. 2024最新 Windows系统安装docker教程,2. 在windows安装Docker到指定路径
    • 安装完成后,通过命令行(如WindowsPowerShellLinuxTerminal)运行docker --version检查安装是否成功。
  2. 基本配置

    • 登录Docker Hub(可选,用于拉取或推送镜像):docker login
    • 配置Docker以使用非默认设置(如代理、存储驱动等),可参考官方文档。

4. Docker基本命令:

  • 基本命令
    • docker --version:检查Docker是否正确安装及当前版本。
    • docker pull <image-name>:从Docker Hub下载指定的镜像。
    • docker images:列出本地所有的镜像。
    • docker run <image_name>:启动容器。
    • docker run -it --rm <image-name>:基于镜像启动一个新的容器,并进入其内部shell环境。
    • docker ps:显示正在运行的容器。
    • docker ps -a:查看所有容器(包括停止的)。
    • docker stop <container-id>:停止指定ID的容器。
    • docker rm <container_id>:删除指定ID的容器
    • docker tag <镜像名>:<标签> <仓库用户名>/<镜像名>:<标签> : 为自己设置的镜像添加标签
    • docker push <仓库用户名>/<镜像名>:<标签> 推送镜像到仓库

5. 简单实践:拉取Nginx镜像-自定义配置-推送镜像

步骤 1:拉取Nginx镜像

首先,从Docker Hub拉取官方的Nginx镜像:

docker pull nginx:latest

确认镜像已成功拉取:

docker images

你应能在列表中看到名为nginx且标签为latest的镜像。

操作解释

  • docker pull 命令用于从Docker Hub或其他容器镜像仓库中拉取镜像。
  • nginx:latest 指定了要拉取的镜像名称和标签(这里是最新的稳定版)。
  • 使用 docker images 命令查看本地已有的镜像列表,确认nginx镜像是否已成功拉取。

步骤 1.5(可选):运行Nginx容器以熟悉操作

docker run -d -p 8080:80 --name my-test-nginx nginx:latest
  • -d 表示以守护进程模式运行容器。
  • -p 8080:80 将容器的80端口映射到主机的8080端口。
  • --name my-test-nginx 为容器指定一个名称。

现在,你可以在浏览器中访问 http://localhost:8080,应该会看到Nginx的默认欢迎页面。

注意:在继续下一步之前,你可以使用 docker stop my-test-nginx 停止这个容器,并使用 docker rm my-test-nginx 删除它(如果你不再需要它的话,不过这里不删)。

docker stop my-test-nginx
docker rm my-test-nginx

步骤 2:创建自定义Nginx配置文件

在创建自定义配置文件前,先了解Nginx默认配置的关键部分。Nginx的主配置文件通常位于/etc/nginx/nginx.conf,它定义了Nginx的工作方式、事件处理、HTTP服务器设置等。

现在,我们将创建一个自定义配置文件。首先,首先,创建一个新的目录用于存放你的Nginx配置文件和Dockerfile文件。例如,创建名为my-nginx-config的目录:

mkdir my-nginx-config
cd my-nginx-config

然后,在该目录中创建一个名为nginx.conf的文件,并添加以下内容:(这是一个简化的nginx.conf示例,它保留了Nginx的基本功能,并且容易理解)

user  nginx;
worker_processes  1;  # 对于简单实践,我们可以只使用一个工作进程error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;  # 每个worker进程的最大连接数
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;tcp_nopush     on;tcp_nodelay    on;keepalive_timeout  65;include /etc/nginx/conf.d/*.conf;  # 默认包含的配置文件目录,可以添加自定义配置# 定义一个简单的服务器块,用于测试server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;}# 错误页面处理error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}
}

步骤 3:创建Dockerfile

在同一目录下(my-nginx-config),创建一个名为Dockerfile的文件,并添加以下内容:

# 使用官方的Nginx镜像作为基础镜像
FROM nginx:latest# 将当前目录下的nginx.conf文件复制到容器中的/etc/nginx/nginx.conf位置.
# 注意:这里假设Dockerfile和nginx.conf在同一目录下
COPY nginx.conf /etc/nginx/nginx.conf# 如果有其他配置文件或静态资源,也可在此处复制
# COPY default.conf /etc/nginx/conf.d/default.conf
# COPY html/ /usr/share/nginx/html/# 暴露80端口(Nginx默认端口)
EXPOSE 80# 启动Nginx服务,并保持在前台运行(daemon off)
CMD ["nginx", "-g", "daemon off;"]

解释

  • COPY nginx.conf /etc/nginx/nginx.conf:这条指令将本地(构建上下文)的nginx.conf文件复制到容器内的/etc/nginx/nginx.conf位置,替换掉容器默认的Nginx配置文件。
  • EXPOSE 80:这条指令告诉Docker,容器在运行时需要监听80端口(虽然这不是必需的,因为Nginx默认监听80端口,但声明一下是个好习惯)。
  • CMD ["nginx", "-g", "daemon off;"]:这条指令指定了容器启动时默认执行的命令。这里使用daemon off参数是为了让Nginx在前台运行,这样Docker容器就不会因为Nginx进入后台而立即退出。

步骤 4:构建Docker镜像

返回上一级目录(包含Dockerfilenginx.conf的目录),然后构建Docker镜像:

docker build -t my-custom-nginx .
  • 这将创建一个名为my-custom-nginx的Docker镜像。
  • -t选项用于为镜像指定标签,.表示当前目录为构建上下文。

步骤 5:运行Docker容器

使用刚刚构建的镜像运行容器:

docker run -d -p 8080:80 --name my-custom-nginx-container my-custom-nginx
  • 这将启动一个名为my-custom-nginx-container的容器,并将容器的80端口映射到主机的8080端口。
  • 访问http://localhost:8080,你将看到基于自定义配置的Nginx页面。

步骤 6(可选):登录Docker Hub并推送镜像

首先,登录Docker Hub:

docker login

然后,为镜像打标签(如果你的Docker Hub用户名是your-username):

docker tag my-custom-nginx your-username/my-custom-nginx

最后,推送镜像到Docker Hub

docker push your-username/my-custom-nginx

至此,你已经成功地创建了一个自定义的Nginx镜像,并将其推送到了Docker Hub

6.补充内容

Docker网络的基本概念

  • 网络(Networking)
    • Docker容器可以通过Docker网络相互通信,也可以与外部网络通信。Docker提供了多种网络模式,如bridge、host、overlay等。
  • 卷(Volumes)
    • Docker卷用于持久化数据,即使容器被删除,卷中的数据仍然保留。这有助于数据的备份、恢复和迁移。
  • Compose(docker-compose)
    • Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过docker-compose.yml文件,可以轻松地配置和管理多个容器的启动、停止和连接。

Docker网络的基本命令

  • docker network ls:列出所有Docker网络。
  • docker volume ls:列出所有Docker卷。
  • docker-compose up:根据docker-compose.yml文件启动所有服务。
  • docker-compose down:停止并移除由docker-compose.yml定义的所有容器、网络、卷和默认网络。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NextJS】PostgreSQL 遇上 Prisma ORM

NextJS 数据库 之 遇上Prisma ORM 前言一、环境要求二、概念介绍1、Prisma Schema Language&#xff08;PSL&#xff09; 结构描述语言1.1 概念1.2 组成1.2.1 Data Source 数据源1.2.2 Generators 生成器1.2.3 Data Model Definition 数据模型定义字段(数据)类型和约束关系&…

左神算法基础提升--3

文章目录 Manacher 算法经典算法Manacher算法原理 单调栈或单调队列 Manacher 算法 经典算法 在每学习Manacher算法之前我们可能会使用一种比较经典暴力的算法&#xff1a;遍历str字符串&#xff0c;将字符串中的每个字符作为对称点&#xff0c;向两边扩散找到回文字段&#x…

浅谈操作系统与初识Linux

一、Linux操作系统的出现 1.1操作系统的出现以及相关的四个要素 1.2最早出现的操作系统及其创始人 起初&#xff0c;IBM为了让计算机可以以更低技术成本进行使用&#xff0c;以此来售卖计算机&#xff1b; 为计算机搭载上了Unix操作系统&#xff0c;Unix由肯汤普森用汇编语…

ElasticSearch下

DSL查询 叶子查询&#xff1a;在特定字段里查询特定值&#xff0c;属于简单查询&#xff0c;很少单独使用复合查询&#xff1a;以逻辑方式组合多个叶子查询或更改叶子查询的行为方式 在查询后还可以对查询结果做处理&#xff1a; 排序&#xff1a;按照1个或多个字段做排序分页…

java根据模板导出word,并在word中插入echarts相关统计图片以及表格

引入依赖创建word模板创建ftl模板文件保存的ftl可能会出现占位符分割的问题&#xff0c;需要处理将ftl文件中的图片的Base64删除&#xff0c;并使用占位符代替插入表格&#xff0c;并指定表格的位置在图片下方 Echarts转图片根据模板生成word文档DocUtil导出word文档 生成的wor…

链式前向星的写法

【图论02】动画说图的三种保存方式 降低理解门槛 邻接表 链式前向星 邻接矩阵_哔哩哔哩_bilibili 杭电ACM刘老师-算法入门培训-第12讲-拓扑排序及链式前向星_哔哩哔哩_bilibili 图论003链式前向星_哔哩哔哩_bilibili&#xff08;链式前向星的遍历&#xff09; head数组的下标…

想品客老师的第一天:值类型使用

前面两章的摘要 ECMAscript&#xff08;也就是ES&#xff09;是JavaScript的一个标准&#xff0c;就像c的c11和c99一样&#xff0c;几把的一年出一套标准 freeze()是一个对象方法&#xff0c;表示锁定、固定一个对象不可改变&#xff08;因为const对于标量不可变&#xff0c;…

贪心算法(题1)区间选点

输出 2 #include <iostream> #include<algorithm>using namespace std;const int N 100010 ;int n; struct Range {int l,r;bool operator <(const Range &W)const{return r<W.r;} }range[N];int main() {scanf("%d",&n);for(int i0;i&l…

解决本地运行MR程序访问权限问题

文章目录 1. 提出问题2. 解决问题2.1 临时解决方案2.2 永久解决方案 3. 小结 1. 提出问题 运行DeduplicateIPsDriver类&#xff0c;抛出如下异常&#xff1a; 该错误信息表明在尝试运行 DeduplicateIPsDriver 类时&#xff0c;遇到了 HDFS&#xff08;Hadoop 分布式文件系统&a…

html全局遮罩,通过websocket来实现实时发布公告

1.index.html代码示例 <div id"websocket" style"display:none;position: absolute;color:red;background-color: black;width: 100%;height: 100%;z-index: 100; opacity: 0.9; padding-top: 30%;padding-left: 30%; padding-border:1px; "onclick&q…

高通8255 Android STR 启动失败要因分析调查

目录 背景&#xff1a; 调查过程&#xff1a; 步骤1&#xff1a; slog2info | grep vmm_service 步骤2&#xff1a; slog2info | grep qvm 总结&#xff1a; 解决方案 背景&#xff1a; 调试高通8255 STR的STR过程中发现Android和QNX进入STR状态后&#xff0c;脱出STR时…

Linux UDP 编程详解

一、引言 在网络编程领域&#xff0c;UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;作为一种轻量级的传输层协议&#xff0c;具有独特的优势和适用场景。与 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff0…

可解释性机器学习

一、引言 随着机器学习&#xff08;ML&#xff09;在各个领域的广泛应用&#xff0c;模型的复杂度不断增加&#xff0c;如深度神经网络等黑盒模型逐渐成为主流。这些模型虽然具有很高的预测性能&#xff0c;但其内部的决策机制往往难以理解&#xff0c;导致模型的透明度和可解释…

PyTorch使用教程(8)-一文了解torchvision

一、什么是torchvision torchvision提供了丰富的功能&#xff0c;主要包括数据集、模型、转换工具和实用方法四大模块。数据集模块内置了多种广泛使用的图像和视频数据集&#xff0c;如ImageNet、CIFAR-10、MNIST等&#xff0c;方便开发者进行训练和评估。模型模块封装了大量经…

网络安全防护指南:筑牢网络安全防线(510)

一、网络安全的基本概念 &#xff08;一&#xff09;网络的定义 网络是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息收集、存储、传输、交换、处理的系统。在当今数字化时代&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。它连接了世…

关于vite+vue3+ts项目中env.d.ts 文件详解

env.d.ts 文件是 Vite 项目中用于定义全局类型声明的 TypeScript 文件。它帮助开发者向 TypeScript提供全局的类型提示&#xff0c;特别是在使用一些特定于 Vite 的功能时&#xff08;如 import.meta.env&#xff09;。以下是详细讲解及代码示例 文章目录 **1. env.d.ts 文件的…

1.17学习

crypto nssctf-[SWPUCTF 2021 新生赛]crypto8 不太认识这是什么编码&#xff0c;搜索一下发现是一个UUENCODE编码&#xff0c;用在线工具UUENCODE解码计算器—LZL在线工具解码就好 misc buuctf-文件中的秘密 下载附件打开后发现是一个图片&#xff0c;应该是一个图片隐写&…

Python爬虫学习前传 —— Python从安装到学会一站式服务

早上好啊&#xff0c;大佬们。我们的python基础内容的这一篇终于写好了&#xff0c;啪唧啪唧啪唧…… 说实话&#xff0c;这一篇确实写了很久&#xff0c;一方面是在忙其他几个专栏的内容&#xff0c;再加上生活学业上的事儿&#xff0c;确实精力有限&#xff0c;另一方面&…

LabVIEW时域近场天线测试

随着通信技术的飞速发展&#xff0c;特别是在5G及未来通信技术中&#xff0c;天线性能的测试需求日益增加。对于短脉冲天线和宽带天线的时域特性测试&#xff0c;传统的频域测试方法已无法满足其需求。时域测试方法在这些应用中具有明显优势&#xff0c;可以提供更快速和精准的…

LabVIEW 程序中的 R6025 错误

R6025错误 通常是 运行时库 错误&#xff0c;特别是与 C 运行时库 相关。这种错误通常会在程序运行时出现&#xff0c;尤其是在使用 C 编译的程序或依赖 C 运行时库的程序时。 ​ 可能的原因&#xff1a; 内存访问冲突&#xff1a; R6025 错误通常是由于程序在运行时访问无效内…