当前位置: 首页 > 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. 概论 自动驾驶系统的认知中有一些模糊的地方,比如自动驾驶系统如何定义的问题,自动驾驶的研发为什么会有那么多的子模块,怎么才算自动驾驶落地等等。本章想先给读者一个概括介绍,了解自动驾…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下&#xf…...