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/dockersudo 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

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

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

相关文章

蓝桥杯C组真题——巧克力

题目如下 思路 代码及解析如下 谢谢观看

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…

在虚拟机上安装hadoop

在虚拟机上安装 Hadoop 是一个常见的实验环境搭建过程。以下是详细的步骤和注意事项&#xff1a; 前面的课程我们已经准备好了三台虚拟设备球供我们学习大数据技术&#xff0c;今天我们将使用其中的一台设备来运行第一个hadoop 程序。 运行第一个 hadoop程序 要运行 hadoop 程序…

Redis 常见数据类型

官方文档 RedisCommands 1&#xff09;Redis 的命令有上百个&#xff0c;如果纯靠死记硬背比较困难&#xff0c;但是如果理解 Redis 的一些机制&#xff0c;会发现这些命令有很强的通用性。 2&#xff09;Redis 不是万金油&#xff0c;有些数据结构和命令必须在特定场景下使用…

VBA信息获取与处理第五节:如何在单个工作表中查找某个给定值

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

永磁同步电机无速度算法--改进滑模观测器SMO(边界层法)

一、原理介绍 根据滑模观测器的定义&#xff0c;其切换函数是一个拥有高频切换特性的不连续项&#xff0c;为了进一步减小系统的抖振&#xff0c;将符号函数替换为Sigmoid函数&#xff0c;该函数为一种连续、光滑的切换函数&#xff0c;对抖振有良好的抑制效果&#xff0c;其数…

基于SpringBoot+mybatis+layui就业管理系统设计和实现

基于SpringBootmybatislayui就业管理系统设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &…

​《开源高仿Windows 12网页版:零安装体验未来操作系统界面》​​

&#x1f4cc; 大家好&#xff0c;我是智界工具库&#xff0c;致力于分享好用实用且智能的软件以及在JAVA语言开发中遇到的问题&#xff0c;如果本篇文章对你有所帮助请帮我点个小赞小收藏吧&#xff0c;谢谢喲&#xff01;&#x1f618;&#x1f618;&#x1f618; 博主声…

docker 安装达梦数据库(离线)

docker安装达梦数据库&#xff0c;官网上已经下载不了docker版本的了&#xff0c;下面可通过百度网盘下载 通过网盘分享的文件&#xff1a;dm8_20240715_x86_rh6_rq_single.tar.zip 链接: https://pan.baidu.com/s/1_ejcs_bRLZpICf69mPdK2w?pwdszj9 提取码: szj9 上传到服务…

HTML第三节

一.初识CSS 1.CSS定义 A.内部样式表 B.外部样式表 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&g…

【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析

DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…

linux的文件系统及文件类型

目录 一、Linux支持的文件系统 二、linux的文件类型 2.1、普通文件 2.2、目录文件 2.3、链接文件 2.4、字符设备文件: 2.5、块设备文件 2.6、套接字文件 2.7、管道文件 三、linux的文件属性 3.1、关于权限部分 四、Linux的文件结构 五、用户主目录 5.1、工作目录…

rabbitmq-amqp事务消息+消费失败重试机制+prefetch限流

1. 安装和配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <arti…

web高可用集群项目(数据库主从同步、文件共享存储、nginx动静分离+负载均衡+高可用)

一、项目环境 二、环境准备 主机名IP地址备注openEuler-1192.168.121.11主负载调度器openEuler-2192.168.121.12副负载调度器openEuler-3192.168.121.13web-1&#xff08;静态&#xff09;openEuler-4192.168.121.14web-2&#xff08;静态&#xff09;openEuler-5192.168.121.…

企业工程项目管理系统源码:Java版源码解析

一、项目概述 鸿鹄工程项目管理系统是基于Spring Cloud、Spring Boot、Mybatis、Vue和ElementUI技术栈&#xff0c;采用前后端分离架构构建的工程管理软件。它旨在应对企业快速发展中的管理挑战&#xff0c;提升工程管理效率&#xff0c;减轻工作负担&#xff0c;加速信息处理…

深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析

卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09; 原理 &#xff1a;CNN主要由卷积层、池化层和全连接层组成。卷积层通过卷积核在输入数据上进行卷积运算&#xff0c;提取局部特征&#xff1b;池化层则对特征图进行下采样&#xff0c;降低特征维度&…

vtk 3D坐标标尺应用 3D 刻度尺

2d刻度尺 : vtk 2D 刻度尺 2D 比例尺-CSDN博客 简介&#xff1a; 3D 刻度尺&#xff0c;也是常用功能&#xff0c;功能强大 3D 刻度尺 CubeAxesActor vtkCubeAxes调整坐标轴的刻度、原点和显示效果&#xff0c;包括关闭小标尺、固定坐标轴原点&#xff0c;以及设置FlyMode模…

Hive-优化(参数优化篇)

map 数和reduce数 控制hive任务中的map数 合适的map数&#xff0c;会让资源分配的更平均&#xff0c;让我们的代码运行更快&#xff0c;通常情况下&#xff0c;作业会通过input的目录产生一个或者多个map任务。我们可以通过调整参数来控制运行过程中的map数。 Hive Map的数量…

双链路提升网络传输的可靠性扩展可用带宽

为了提升网络传输的可靠性或增加网络可用带宽&#xff0c; 通常使用双链路冗余备份或者双链路聚合的方式。 本文介绍几种双链路网络通信的案例。 5GWiFi冗余传输 双Socket绑定不同网络接口&#xff1a;通过Android的ConnectivityManager绑定5G蜂窝网络和WiFi的Socket连接&…

Spring(三)容器-注入

一 自动注入Autowire 代码实现&#xff1a; package org.example.spring01.service;import org.springframework.stereotype.Service;Service public class UserService {}package org.example.spring01.controller;import lombok.Data; import lombok.ToString; import org.…