Docker新手入门(持续更新中)

一、定义

快速构建、运行、管理应用的工具。
Docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用。
所谓镜像,就是将应用所需的函数库、依赖、配置等应用一起打包得到的。
所谓容器,为每个镜像的应用进程创建的隔离运行环境就是容器。
所谓镜像仓库,存储和管理镜像的服务,DockerHub是目前最大的镜像仓库。

二、快速入门(以CentOS7.9为例)

(一)CentOS7.9虚拟机配置

1、NAT的IP设置

vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ce7dc1ff-a3ff-4f7f-9868-1a8da06e5483
DEVICE=ens33
ONBOOT=yes
IPADDR=10.15.253.10
NETMASK=255.255.255.0
GATEWAY=10.15.253.254

2、yum源配置

备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backu

  下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

 (二)安装Docker

1、安装必要的依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加 Docker 的官方仓库

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装 Docker 社区版(Docker CE)

sudo yum install -y docker-ce docker-ce-cli containerd.io

4、启动并设置开机自启

sudo systemctl start docker
sudo systemctl enable docker

5、验证 Docker 安装

sudo docker run hello-world

6、(可选)配置国内镜像源

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn"
  ]
}
EOF

7、(可选)重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

(三)部署MySQL

1、前提条件

先停掉虚拟机中的MySQL;确保虚拟机已经安装Docker;网络畅通

2、部署

docker run -d \
--name mysql \
-p 3306:3306
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql:5.7

3、Docker命令解读

docker run -d \     创建并运行一个容器,-d是让容器在后台运行
--name mysql \      给容器起个名字,必须唯一
-p 3306:3306        设置端口映射,前是宿主机的端口,后是容器的端口。
-e TZ=Asia/Shanghai \       设置环境变量
-e MYSQL_ROOT_PASSWORD=123 \          设置环境变量
mysql:5.7       指定运行的镜像名字,一般由两部分组成:镜像名:镜像版本。

三、Docker基础

(一)常见命令

1、搜索 Nginx 镜像

在 Docker Hub 中搜索 Nginx 镜像,查看镜像名称:

docker search nginx

2、拉取 Nginx 镜像

拉取最新版本的 Nginx 镜像:

docker pull nginx

 如果需要拉取特定版本的 Nginx,可以指定版本号,例如:

docker pull nginx:1.18.0

3、查看本地镜像列表

查看本地已拉取的镜像:

docker images

4、创建并运行 Nginx 容器

创建并运行一个 Nginx 容器,将容器的 80 端口映射到宿主机的 80 端口:

docker run -d -p 80:80 --name my-nginx nginx

5、查看容器

查看正在运行的容器:

docker ps

如果需要查看所有容器(包括已停止的),可以使用:

docker ps -a

6、停止容器

停止名为 my-nginx 的容器:

docker stop my-nginx

7、再次启动容器

启动名为 my-nginx 的容器

docker start my-nginx

8、进入 Nginx 容器

进入名为 my-nginx 的容器:

docker exec -it my-nginx /bin/bash

 9、删除容器

删除名为 my-nginx 的容器:

docker rm my-nginx

如果容器正在运行,可以使用 -f 参数强制删除:

docker rm -f my-nginx

(二)数据卷

1、数据卷定义

数据卷(Volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。

2、数据卷常用命令

数据卷常用命令
命令含义
docker volume create创建数据卷
docker volume ls查看所有数据卷
docker volume rm 删除指定数据卷
docker volume inspect查看某个数据卷详情
docker volume prune清除数据卷

3、利用Nginx容器部署静态资源

(挂载本地目录案例实操) 

(1)在宿主机上创建静态资源目录:

mkdir -p ~/nginx/html

(2)创建自定义 index.html 文件:

echo '<!DOCTYPE html>
<html>
<head>
    <title>Welcome to Nginx!</title>
</head>
<body>
    <h1>Hello, this is a custom Nginx page!</h1>
</body>
</html>' > ~/nginx/html/index.html

(3)启动容器并挂载本地目录:

docker run --name mynginx \
-d -p 80:80 \
-v ~/nginx/html:/usr/share/nginx/html \
nginx

(4)验证

Windows机器访问:http://10.15.253.10/index.html

(三)自定义镜像

1、镜像含义

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。

2、Dockerfile

Dockerfile就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。

Dockerfile常用命令

指令

说明示例
from指定基础镜像from centos:6
env设置环境变量env key value
copy拷贝本地文件到镜像的指定目录copy ./jrell.tar.gz /tmp
run执行Linux的shell命令,一般是安装过程的命令run tar -zxyf /tmp/jrell.tar.gz&& EXPORTS path=/tmp/jre11:$path
expose指定容器运行时监听的端口expose 8080
entrypoint镜像中应用的启动命令entrypoint java -jar xx.jar

 构建镜像的命令:

docker build -t 镜像名 Dockerfile目录

(四)网络

1、网络定义

默认情况下,所有容器的网络都是以Bridge方式连接到Docker的一个虚拟网桥上。

加入自定义网络的容器才可以通过容器名互相访问。

2、网络常用命令

网络常用命令
命令说明
docker network create创建一个网络
docker network ls查看所有网络
docker network rm删除指定网络
docker network prune清除未使用的网络
docker network connect使指定容器连接加入某网络
docker network disconnect使指定容器连接离开某网络
docker network inspect查看网络详细信息

3、创建自定义网络案例

(1)创建自定义网络

docker network create my_custom_network

(2)启动容器并连接到自定义网络

docker run -d --name nginx1 --network my_custom_network nginx
docker run -d --name nginx2 --network my_custom_network nginx

(3)验证容器间的通信

进入其中一个容器:

docker exec -it nginx1 bash

在容器内通过另一个容器的名称访问它:

curl http://nginx2

四、项目部署

(一)部署后端

(二)部署前端

(三)DockerCompose

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

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

相关文章

DeepSeek R1学习入门

一、什么是 DeepSeek R1 2025.01.20 DeepSeek-R1 发布&#xff0c;DeepSeek R1 是 DeepSeek AI 开发的第一代推理模型&#xff0c;擅长复杂的推理任务&#xff0c;官方对标OpenAI o1正式版。适用于多种复杂任务&#xff0c;如数学推理、代码生成和逻辑推理等。 根据官方信息D…

[数据库笔记(二)]表的增删改查(基础)

目录 前言 CRUD 新增 单行数据全列插入 ​编辑 多行数据指定列插入 查询 全列查询 指定列查询 查询字段为表达式 别名&#xff1a;AS 别名去重&#xff1a;distinct 排序&#xff1a;order by 条件查询&#xff1a;where 运算符 和 <>的区别 between...…

Redis——缓存穿透、击穿、雪崩

缓存穿透 什么是缓存穿透 缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中&#xff0c;导致请求直接到了数据库上&#xff0c;根本没有经过缓存这一层。举个例子&#xff1a;某个黑客故意制造我们缓存中不存在的 key 发起大量请求&#xff0c;导致大量请求落到数据库…

网络安全ctf试题 ctf网络安全大赛真题

MISC 1 签到 难度 签到 复制给出的flag输入即可 2 range_download 难度 中等 flag{6095B134-5437-4B21-BE52-EDC46A276297} 0x01 分析dns流量&#xff0c;发现dns && ip.addr1.1.1.1存在dns隧道数据&#xff0c;整理后得到base64: cGFzc3dvcmQ6IG5zc195eWRzIQ 解…

蓝桥备赛(11)- 数据结构、算法与STL

一、数据结构 1.1 什么是数据结构&#xff1f; 在计算机科学中&#xff0c;数据结构是一种 数据组织、管理和存储的格式。它是相互之间存在一种 或多种特定关系的数据元素的集合。 ---> 通俗点&#xff0c;数据结构就是数据的组织形式 &#xff0c; 研究数据是用什么方…

VsCode + EIDE + OpenOCD + STM32(野火DAP) 开发环境配置

VsCode EIDE OpenOCD STM32(野火DAP) 开发环境配置 接受了新时代编辑器的我&#xff0c;实在受不了Keil的上古编辑页面&#xff0c;周树人说过&#xff1a;由奢入俭难&#xff0c;下面我们一起折腾一下开源软件Vscode&#xff0c; 用以开发51和STM32&#xff0c;有错误之处&…

esp32驱动带字库芯片TFT屏幕

前言 学习esp32单片机开发&#xff0c;前段时间在网上买了一块2.0寸TFT屏幕。 长这个样子&#xff0c;这个屏幕带汉字字库的硬件模块。我仔细看了一下这个字库模块上面写的字是25Q32FVSIG 1336 文档 卖家也发来了开发文档&#xff0c;是个doc文档&#xff0c;张这个样子。 开…

短分享-Flink图构建

一、背景 通过简单的书写map、union、keyby等代码&#xff0c;Flink便能构建起一个庞大的分布式计算任务&#xff0c;Flink如何实现的这个酷炫功能呢&#xff1f;我们本次分享Flink做的第一步&#xff0c;将代码解析构建成图 源码基于Flink 2.10&#xff0c;书籍参考《Flink核…

在 ASP.NET Core 中启用 Brotli 和 Gzip 响应压缩

在本文中&#xff0c;我们将探讨如何在 ASP.NET Core 应用程序中启用响应压缩&#xff0c;重点介绍 Brotli 和 Gzip 算法以及如何验证压缩是否有效。 什么是响应压缩&#xff1f; 响应压缩通过使用Brotli 或 Gzip等算法来最小化 HTTP 响应的大小。这些算法在传输文本资产&#…

调研:如何实现智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)

文章目录 调研&#xff1a;如何实现智能分析助手&#xff08;Agent&#xff09;&#xff08;AutoCoder、FastGPT、AutoGen、DataCopilot&#xff09;一、交互流程二、数据流程三、架构分类四、开源产品4.1 AutoCoder&#xff08;知识库变体&#xff09;4.2 FastGPT&#xff08;…

由麻省理工学院计算机科学与人工智能实验室等机构创建低成本、高效率的物理驱动数据生成框架,助力接触丰富的机器人操作任务

2025-02-28&#xff0c;由麻省理工学院计算机科学与人工智能实验室&#xff08;CSAIL&#xff09;和机器人与人工智能研究所的研究团队创建了一种低成本的数据生成框架&#xff0c;通过结合物理模拟、人类演示和基于模型的规划&#xff0c;高效生成大规模、高质量的接触丰富型机…

Oracle OCP认证考试考点详解083系列01

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 1. 第1题&#xff1a; 题目 解析及答案&#xff1a; 关于自动工作量存储库&#xff08;AWR&#xff09;快照&#xff0c;以下哪三个选项…

perl初试

我手头有一个脚本&#xff0c;用于从blastp序列比对的结果文件中&#xff0c;进行文本处理&#xff0c; 获取序列比对最优的hit记录 #!/usr/bin/perl -w use strict;my ($blast_out) ARGV; my $usage "This script is to get the best hit from blast output file wit…

Nginx1.19.2不适配OPENSSL3.0问题

Nginx 1.19.2 是较老的版本&#xff0c;而 Nginx 1.21 版本已经适配 OpenSSL 3.0&#xff0c;所以建议 升级 Nginx 到 1.25.0 或更高版本&#xff1a; wget http://nginx.org/download/nginx-1.25.0.tar.gz tar -xzf nginx-1.25.0.tar.gz cd nginx-1.25.0 ./configure --prefix…

MySQL复合查询——通过案例讲解每个指令

0.准备工作 在开始之前可以先准备好相同的数据库 方法一&#xff1a;直接在MySQL创建相应的数据库和表 第一步&#xff1a;创建数据库并进入数据库 create database soctt_data; use soctt_data; 第二步&#xff1a;创建部门信息表 DROP TABLE IF EXISTS dept; CREATE TABL…

Kubernetes全解析:从容器编排到云原生霸主

前言 在数字化转型浪潮中&#xff0c;云原生技术已成为企业构建敏捷、弹性基础设施的核心驱动力。作为容器编排领域的“操作系统”&#xff0c;Kubernetes&#xff08;K8s&#xff09;凭借其自动化部署、弹性伸缩和跨环境一致性等能力&#xff0c;正重新定义现代应用的运维范式…

我的两个医学数据分析技术思路

我的两个医学数据分析技术思路 从临床上获得的或者公共数据库数据这种属于观察性研究&#xff0c;是对临床诊疗过程中自然产生的数据进行分析而获得疾病发生发展的规律等研究成果。再细分&#xff0c;可以分为独立危险因素鉴定和预测模型构建两种。 独立危险因素鉴定是一直以…

图像滑块对比功能的开发记录

背景介绍 最近&#xff0c;公司需要开发一款在线图像压缩工具&#xff0c;其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此&#xff0c;我们设计了一个对比组件&#xff0c;它允许用户通过拖动滑块&#xff0c;动态调整两张图像的显示区域&#xff0c;从而清晰…

迷你世界脚本UI五子棋小游戏

wzq_jm "7477124677881080183-22855"--界面id wzq_jmjxh "7477124677881080183-22855_"--界面加下划线 wzq_tc "7477124677881080183-22855_262"--退出按钮id wzq_hdlt1 "7477124677881080183-22855_267"--互动聊天按钮 快点吧&a…

大模型理论基础介绍

大模型理论基础 {docsify-ignore-all} 项目简介 本项目旨在作为一个大规模预训练语言模型的教程&#xff0c;从数据准备、模型构建、训练策略到模型评估与改进&#xff0c;以及模型在安全、隐私、环境和法律道德方面的方面来提供开源知识。 项目将以斯坦福大学大规模语言模型课…