简明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官网(https://www.docker.com/products/docker-desktop),根据你的操作系统(WindowsmacOSLinux)下载并安装Docker DesktopDocker Engine
    • 安装完成后,通过命令行(如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.rhkb.cn/news/3190.html

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

相关文章

使用 Java 实现基于 DFA 算法的敏感词检测

使用 Java 实现基于 DFA 算法的敏感词检测 1. 引言 敏感词检测在内容审核、信息过滤等领域有着广泛的应用。本文将介绍如何使用 DFA&#xff08;Deterministic Finite Automaton&#xff0c;确定有限状态自动机&#xff09; 算法&#xff0c;在 Java 中实现高效的敏感词检测。…

Digital Document System (DDS)

Digital Document System (DDS&#xff09; 数字档案平台 信息注入

将图像输入批次扁平化为CNN

将图像输入批次扁平化为CNN 欢迎回到这个神经网络编程系列。在这篇文章中&#xff0c;我们将可视化一个单一灰度图像的张量扁平化操作&#xff0c;并且我们将展示如何扁平化特定的张量轴&#xff0c;这在使用CNN时通常是必需的&#xff0c;因为我们处理的是输入批次&#xff0…

精度论文:【Focaler-IoU: More Focused Intersection over Union Loss】

Focaler-IoU: 更聚焦的交并比损失 Focaler-IoU: More Focused Intersection over Union Loss Focaler-IoU: 更聚焦的交并比损失I. 引言II. 相关工作III. 方法IV. 实验V. 结论 原文地址&#xff1a;官方论文地址 代码地址&#xff1a;官方代码地址 摘要——边界框回归在目标检…

交直流混合微电网多台互联变换器并联

在交直流混合微电网中&#xff0c;多台互联变换器的并联操作是为了实现功率按比例分担。这样的系统通常涉及直流-直流&#xff08;DC-DC&#xff09;、直流-交流&#xff08;DC-AC&#xff09;以及交流-直流&#xff08;AC-DC&#xff09;变换器的组合。通过适当的控制策略&…

PyTorch使用教程(2)-torch包

1、简介 torch包是PyTorch框架最外层的包&#xff0c;主要是包含了张量的创建和基本操作、随机数生成器、序列化、局部梯度操作的上下文管理器等等&#xff0c;内容很多。我们基础学习的时候&#xff0c;只有关注张量的创建、序列化&#xff0c;随机数、张量的数学数学计算等常…

Matplotlib基础

概述 1、什么是Matplotlib 是专门用于开发2D图表(包括3D图表)以渐进、交互式方式实现数据可视化 2、为什么要学习Matplotlib 可视化是在整个数据挖掘的关键辅助工具&#xff0c;可以清晰的理解数据&#xff0c;从而调整我们的分析方法。 能将数据进行可视化,更直观的呈现使数据…

警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误

一直以来我认为工具类的软件是越新越好&#xff0c;因为工具代表着一定的先进性&#xff1b;但是IDEA 2024好好的给我上了一课&#xff0c;比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突. 一、Lombok 失效问题 请不…

EI Scopus双检索 | 2025年第四届信息与通信工程国际会议(JCICE 2025)

会议简介 Brief Introduction 2025年第四届信息与通信工程国际会议(JCICE 2025) 会议时间&#xff1a;2025年7月25日-27日 召开地点&#xff1a;中国哈尔滨 大会官网&#xff1a;www.jcice.org 由黑龙江大学和成都信息工程大学主办&#xff0c;江苏科技大学协办的2025年第四届信…

JavaWeb 前端基础 html + CSS 快速入门 | 018

今日推荐语 指望别人的救赎&#xff0c;势必走向毁灭——波伏娃 日期 学习内容 打卡编号2025年01月17日JavaWeb 前端基础 html CSS018 前言 哈喽&#xff0c;我是菜鸟阿康。 今天 正式进入JavaWeb 的学习&#xff0c;简单学习 html CSS 这2各前端基础部分&am…

Flask学习入门笔记

Flask学习入门笔记 前言1. 安装Flask2. 创建一个简单的Flask应用3. 路由与视图函数3.1 基本路由3.2 动态路由3.3 HTTP方法 4. 请求与响应4.1 获取请求数据4.2 返回响应 5. 模板渲染5.1 基本模板渲染5.2 模板继承 6. 静态文件6.1 静态文件的目录结构6.2 在模板中引用静态文件6.2…

菜品管理(day03)

公共字段自动填充 问题分析 业务表中的公共字段&#xff1a; 而针对于这些字段&#xff0c;我们的赋值方式为&#xff1a; 在新增数据时, 将createTime、updateTime 设置为当前时间, createUser、updateUser设置为当前登录用户ID。 在更新数据时, 将updateTime 设置为当前时间…

Python股票量化交易分析-开发属于自己的指标

需求&#xff1a;股票的量化交易指标很多&#xff0c;我想做一个自己的量化交易图表&#xff1a; 展示每天交易量和股价振幅的关系图进一步的话想知道单位金额对股价振幅的影响&#xff0c;最终实现大概估计需要多少买入成交量能拉升多少股价&#xff09; &#xff0c; 目前未…

python爬虫爬取淘宝商品比价||淘宝商品详情API接口

最近在学习北京理工大学的爬虫课程&#xff0c;其中一个实例是讲如何爬取淘宝商品信息&#xff0c;现整理如下&#xff1a; 功能描述&#xff1a;获取淘宝搜索页面的信息&#xff0c;提取其中的商品名称和价格 探讨&#xff1a;淘宝的搜索接口 翻页的处理 技术路线:requests…

OpenCV相机标定与3D重建(60)用于立体校正的函数stereoRectify()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 为已校准的立体相机的每个头计算校正变换。 cv::stereoRectify 是 OpenCV 中用于立体校正的函数&#xff0c;它基于已知的相机参数和相对位置&am…

1.17组会汇报

STRUC-BENCH: Are Large Language Models Good at Generating Complex Structured Tabular Data? STRUC-BENCH&#xff1a;大型语言模型擅长生成复杂的结构化表格数据吗&#xff1f;23年arXiv.org 1概括 这篇论文旨在评估大型语言模型&#xff08;LLMs&#xff09;在生成结构…

【机器学习实战入门】使用 Pandas 和 OpenCV 进行颜色检测

Python 颜色检测项目 今天的项目将非常有趣和令人兴奋。我们将与颜色打交道&#xff0c;并在项目过程中学习许多概念。颜色检测对于识别物体来说是必要的&#xff0c;它也被用作各种图像编辑和绘图应用的工具。 什么是颜色检测&#xff1f; 颜色检测是检测任何颜色名称的过程…

【k8s面试题2025】3、练气中期

体内灵气的量和纯度在逐渐增加。 文章目录 在 Kubernetes 中自定义 Service端口报错常用控制器Kubernetes 中拉伸收缩副本失效设置节点容忍异常时间Deployment 控制器的升级和回滚日志收集资源监控监控 Docker将 Master 节点设置为可调度 在 Kubernetes 中自定义 Service端口报…

数智化转型 | 星环科技Defensor 助力某银行数据分类分级

在数据驱动的金融时代&#xff0c;数据安全和隐私保护的重要性日益凸显。某银行作为数字化转型的先行者&#xff0c;面临着一项艰巨的任务&#xff1a;如何高效、准确地对分布在多个业务系统、业务库与数仓数湖中的约80万个字段进行数据分类和分级。该银行借助星环科技数据安全…

mac配置 iTerm2 使用lrzsz与服务器传输文件

mac配置 1. 安装支持rz和sz命令的lrzsz brew install lrzsz2. 下载iterm2-send-zmodem.sh和iterm2-recv-zmodem.sh两个脚本 # 克隆仓库 git clone https://github.com/aikuyun/iterm2-zmodem ~/iterm2-zmodem# 进入到仓库目录 cd ~/iterm2-zmodem# 设置脚本文件可执行权限 c…