当前位置: 首页 > news >正文

Docker 入门与实践:从零开始构建容器化应用环境

Docker

  • 一、docker常用命令
    • docker ps 格式化输出
    • Linux设置命令别名
  • 二、数据卷
    • 相关命令
    • 挂载到默认目录(/var/lib/docker)
    • 挂载到本地目录
  • 三、自定义镜像
    • Dockerfile
    • 构建镜像的命令
  • 四、网络
    • 自定义网络
  • 五、DockerCompose
    • 相关命令

一、docker常用命令

在这里插入图片描述

docker ps 格式化输出

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}\t{{.Status}}"

Linux设置命令别名

编辑此文件

vi ~/.bashrc

alias [别名]=[需要别名的命令]
注意,等号两边不要空格,若命令包含空格,则一定要加 ‘ ’

刷新生效

source ~/.bashrc

举个例子:
在这里插入图片描述

二、数据卷

在docker容器中,容器只包含可运行的最小环境,在容器不能使用vi命令进行编辑,因此通过数据卷把容器中的文件挂载到宿主机,实现双向数据绑定。

  • 数据卷是一个虚拟目录,方便操作容器内文件
  • -v 数据卷名:容器目录
    在这里插入图片描述

相关命令

在这里插入图片描述

挂载到默认目录(/var/lib/docker)

在这里插入图片描述

挂载到本地目录

在这里插入图片描述
举个例子:

docker运行mysql镜像

在这里插入图片描述

三、自定义镜像

镜像结构:
在这里插入图片描述

Dockerfile

在这里插入图片描述
举个例子:
在这里插入图片描述

构建镜像的命令

在这里插入图片描述
举个例子:

在这里插入图片描述

四、网络

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器都会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
注意:网桥分配的ip地址是随机的,每次容器启动可能分配的ip地址不相同。
在这里插入图片描述

自定义网络

自定义网络会创建一个新的虚拟网桥,容器之间可以通过容器名相互访问,不再受ip地址变化而影响访问
在这里插入图片描述
容器加入自定义网络的两种方式:

  • 在容器创建时,可以直接加入网络。
    在这里插入图片描述
  • 在容器已经运行后,使用命令行加入
docker network connect 【网络】【容器名】

举个例子:
在这里插入图片描述

五、DockerCompose

通过一个yml文件,可快速构建项目。
在这里插入图片描述
和docker run的语法相比较:
在这里插入图片描述

相关命令

在这里插入图片描述
举个例子:

[root@long java-jar-web-project-docker]# cat docker-compose.yml 
version: '3'                                     # Docker-Compose版本
services: web:build:                                   # Jdk运行环境使用Dockerfile文件context: ./web-servicedockerfile: Dockerfileports:                                   # 端口映射  9999 -> 9999- '9999:9999'container_name: web_db                	 # 容器名volumes:- './jar:/home/jar_home'             # 映射路径, 将主机的 ./jar 路径映射到容器内的/home/jar_homedepends_on:       						 # 执行顺序- 'redis'- 'mysql'networks:								 # 绑定ip地址extnetwork:ipv4_address: 175.20.0.4mysql:       								 # mysql 同上environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_USER: testMYSQL_PASS: testimage: mysql:5.7networks:extnetwork:ipv4_address: 175.20.0.2container_name: mysql_dbrestart: alwaysvolumes:- './mysql-service/db:/var/lib/mysql'- './mysql-service/conf/my.cnf:/etc/my.cnf'- './mysql-service/init:/docker-entrypoint-initdb.d/'ports:- '6606:3306'redis:  									 # redis restart: alwaysimage: redis 							 # redis镜像container_name: redis_db    			 # redis容器名字command: redis-server --requirepass 123456 --appendonly yes    # redis容器密码,开启持久化networks:								 # 绑定ip地址extnetwork:ipv4_address: 175.20.0.3ports:									 # 端口映射- '6609:6379'volumes:   								 # 将本地 ./redis-service/db 映射到 容器中的 /data 目录- './redis-service/db:/data'
networks:extnetwork:ipam:config:- subnet: 175.20.0.0/16

后记
👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹

相关文章:

Docker 入门与实践:从零开始构建容器化应用环境

Docker 一、docker常用命令docker ps 格式化输出Linux设置命令别名 二、数据卷相关命令挂载到默认目录(/var/lib/docker)挂载到本地目录 三、自定义镜像Dockerfile构建镜像的命令 四、网络自定义网络 五、DockerCompose相关命令 一、docker常用命令 dock…...

C# 用户控件UserControl事件解绑资源释放

用户控件继承子 UserControl 。 现在有个业务需求在UserControl 所在的窗体关闭时解除事件HMouseDown绑定。 因没有相关的Close事件。后来本人想了一个办法在 ROICtlDesigner类的 Dispose 方法中执行相关的释放代码 比如解除事件绑定 释放资源 public partial class ROICt…...

QT-QTCreator环境配置

准备工作: 下载QT: 链接:https://pan.baidu.com/s/1prJcsC4DGqhKiXvLuPQFVA?pwd60b3 提取码:60b3下载WindowsKits: 链接:https://pan.baidu.com/s/1QNiS3HpbH5M5kXx5AhkqnQ?pwde2h8 提取码:e2h8安装的…...

最大连续和

【问题描述】 对于一个具有n个元素的整型数组 a,求具有最大连续和的子数组(最少具有一个元素)。 【输入形式】 输入的第一行为一个整数 n,接下来的一行为 n 个整数,表示数组的元素。 【输出形式】 输出具有最大连续和的…...

分布式系统事务一致性解决方案(基于事务消息)

参考:https://rocketmq.apache.org/zh/docs/featureBehavior/04transactionmessage/ 文章目录 概要错误的方案方案一:业务方自己实现方案二:RocketMQ 事务消息什么是事务消息事务消息处理流程事务消息生命周期使用限制使用示例使用建议 概要 …...

Unity Animation--动画剪辑

Unity Animation--动画剪辑 动画剪辑 动画剪辑是Unity动画系统的核心元素之一。Unity支持从外部来源导入动画,并提供创建动画剪辑的能力使用“动画”窗口在编辑器中从头开始。 外部来源的动画 从外部来源导入的动画剪辑可能包括: 人形动画 运动捕捉…...

如何将 redis 快速部署为 docker 容器?

部署 Redis 作为 Docker 容器是一种快速、灵活且可重复使用的方式,特别适合开发、测试和部署环境。本文将详细介绍如何将 Redis 部署为 Docker 容器,包括 Docker 安装、Redis 容器配置、数据持久化、网络设置等方面。 步骤 1:安装 Docker 首…...

iOS - Undefined symbols: 解决方法

Undefined symbols: 是让人苦恼的报错,如何知道是 哪个 symbols 不对呢? 今天探索到下面的方法: 1、点击导航上方 最右侧的按钮,查看历史报错 2、选中报错信息,右键选择 Expand All Transcripts 在出现的详细信息面…...

优化理论复习——(三)

本篇介绍无约束优化的问题,通过四种算法来进行求解的过程和思路,也是最优化方法中的最重要的一类问题。 无约束优化问题主要是通过迭代搜索算法来切结,比线性规划的计算量都小一点。 目录 无约束优化问题最优性条件最速下降法牛顿法共轭梯度…...

RK3568笔记二十四:基于Flask的网页监控系统

若该文为原创文章,转载请注明原文出处。 此实验参考 《鲁班猫监控检测》,原代码有点BUG,已经下载不了。2. 鲁班猫监控检测 — [野火]嵌入式AI应用开发实战指南—基于LubanCat-RK系列板卡 文档 (embedfire.com) 一、简介 记录简单的摄像头监…...

[Django 0-1] Core.Serializers 模块

Core.Serializers 模块 Django 序列化模块 模块结构 . ├── __init__.py ├── base.py ├── json.py ├── jsonl.py ├── python.py ├── pyyaml.py └── xml_serializer.py1 directory, 7 files自定义序列化器 通过继承django.core.serializers.base.Serial…...

鸿蒙内核源码分析(用栈方式篇) | 程序运行场地谁提供的

精读内核源码就绕不过汇编语言,鸿蒙内核有6个汇编文件,读不懂它们就真的很难理解以下问题. 1.系统调用是如何实现的? 2.CPU是如何切换任务和进程上下文的? 3.硬件中断是如何处理的? 4.main函数到底是怎么来的? 5.开机最开始发生了什么? 6.关机…...

Linux 进程间通信之匿名管道

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux知识分享⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 前言 一. 进程间通信介绍 1.进程间通…...

数据结构与算法学习笔记六--数组和广义表(C语言)

目录 前言 1.数组 1.定义 2.初始化 3.销毁 4.取值 5.设置值 6.完整代码 前言 这篇博客主要介绍数据结构中的数组和广义表的用法。 1.数组 在数据结构中,数组是一种线性数据结构,它由一组连续的相同类型的元素组成,每个元素都有一个唯…...

图搜索算法详解

图搜索算法详解 摘要: 图搜索算法是解决路径规划和网络分析问题的关键技术。本文将详细介绍图搜索算法的基本概念、分类以及常见的算法,如广度优先搜索(BFS)、深度优先搜索(DFS)、A*搜索等。同时&#xff…...

安卓中常见的UI控件

TextView(文本视图)EditText(编辑文本)Button(按钮)ImageView(图像视图)ImageButton(图像按钮)CheckBox(复选框)RadioButton&#xff…...

基于Labelme的背部穴位关键点制作

一、穴位定位方法 穴位定位,自春秋时期以来,通过各代医学实践的继承与发展,形成了一套较为科学的定位体系。这套体系基于经络理论,采用“寸”作为测量单位,按照人体比例来进行精确的穴位定位,主要有依据体…...

go-mysql-transfer 同步数据到es

同步数据需要注意的事项 前提条件 1 要同步的mysql 表必须包含主键 2 mysql binlog 必须是row 模式 3 不支持程序运行过程中修改表结构 4 要赋予连接mysql 账号的权限 reload, replication super 权限 如果是root 权限则不需要 安装 go-mysql-transfer ​ git clone…...

外包干了3天,技术就明显退步了。。。。。

先说一下自己的情况,本科生,19年通过校招进入广州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 1

以下摘录一些章节片段: 1. 概论 自动驾驶系统的认知中有一些模糊的地方,比如自动驾驶系统如何定义的问题,自动驾驶的研发为什么会有那么多的子模块,怎么才算自动驾驶落地等等。本章想先给读者一个概括介绍,了解自动驾…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...