Docker 学习

Docker 学习

Docker 概念

img

Docker 安装

一般是在服务器里

img

Docker阿里云镜像加速

img

配置主要是Linux命令

Docker命令大纲及帮助文档的使用

docker帮助文档

查看docker命令

docker --help

查看某个命令,例如ps的详细文档

docker ps --help

也可查阅 [docker官方帮助手册](docker images | Docker Docs)

镜像和容器

  1. 搜索镜像

容器需要镜像来创建,要创建容器首先要搜索镜像

docker search + 镜像名称 可以搜索,但一般不直观,可以通过科学上网访问docker hub,搜索

  1. 下载镜像

img

docker pull (镜像仓库地址默认是docker hub可以不指定) 镜像名 (标签不指定默认是latest,docker hub网站的tags有对应版本命令可参考)
  1. 列出镜像信息

img

探索告诉我们:遇到不会的,需要多看看帮助文档

  1. 列出容器信息

img

容器 exit 的原因是没有前台在运行

  1. 创建并运行容器

img

  • 一般多用后台运行,不会退出;
  • 默认运行方式是会执行DockerFile最后的CMD命令,容易自动退出,一般不用;
  • 交互式运行多使用bash,用于进入容器内部学习和调试
  1. 删除容器

img

  1. 进入容器执行命令

img

  1. 查看容器日志

img

  1. 容器和宿主机之间的文件拷贝

img

  1. 停止和运行容器
docker stop [容器ID/容器名...]
docker start [容器ID/容器名...]

run 命令详解

前情回顾

docker run -d 镜像名 // 后台创建并运行容器
docker run -it 容器名 bash // 交互式创建并运行容器

  1. 发布端口

    容器需要开放端口,和宿主机端口映射,使得通过访问宿主机端口从而访问到容器端口

docker run -p 宿主机端口:容器端口 镜像名

img

  1. 数据卷基础

问题一:当容器被删除后,它的数据也会被删除,无法持久化保存

问题二:宿主机修改了文件,容器内数据不能共享(自动同步)

img

img

  1. 设置环境变量

方便不同容器个性化设置变量,比如设置容器密码

img

  1. 容器命名

img

  1. 设置重启策略

img

  1. 其他

img

常见docker命令

docker --help  // 查看docker命令
docker ps --help  // 查看某个命令,例如ps的详细文档docker pull 镜像名[:tags]   // 下载镜像,版本tags可不填,默认最新docker images  // 列出所有镜像信息(不包括隐藏镜像)
docker images -q  // 只列出镜像的镜像id(不包括隐藏镜像)
docker images -aq 	// 只列出所有镜像的镜像id
-f 过滤,具体使用看docker帮助文档docker ps  // 默认显示正在运行的容器信息
docker ps -a  // 所有容器信息docker run -d 镜像名  // 后台创建并运行容器
docker run -it 容器名 bash // 交互式创建并运行容器docker rm [容器ID/容器名...]	// 删除容器,但无法删除正在运行的容器,会报错,...表示可跟多个
docker rm -f [容器ID/容器名...] // 强制删除,正在运行的容器就会被删除
$()命令替换,如docker rm -f $(docker ps -aq) // 删除所有容器docker exec -it 容器id bash // 进入容器交互式执行命令docker cp /宿主机/xx.文件 容器id:/容器/xx.文件  // 拷贝文件,将宿主机文件拷贝到容器中
docker cp 容器id:/容器/xx.文件 /宿主机/xx.文件  // 反过来docker stop [容器ID/容器名...]  // 停止(多个)容器
docker start [容器ID/容器名...] // 运行容器
run 命令详解
docker run -p 宿主机端口:容器端口 镜像名  // 发布容器端口,和宿主机端口映射docker run -v 宿主机目录:容器目录[:读写权限ro/rw] 镜像名 // 挂载数据卷,实现宿主机和容器数据共享和持久化
docker run -v 数据卷别名:容器目录[:读写权限ro/rw] 镜像名 // 不需要写宿主机目录,docker会分配,若数据卷不存在会创建
docker volume ls // 列出所有数据卷
docker volume inspect 数据卷名 // 查看数据卷详情
docker volume create 数据卷名 // 创建数据卷,可通过docker volume inspect查看数据卷位置
docker volume rm 数据卷名 // 删除数据卷,正在被使用的数据卷无法-f强制删除,可以先删除容器在删除数据卷docker run -e 变量名=变量值 镜像名 // 设置环境变量,具体变量名看DockerHub文档
docker run --name 重命名 镜像名 // 容器命名
docker run --restart 重启策略(默认no/always/on-failure[:max-retries]/unless-stopped) 镜像名 // 设置重启策略
docker 网络
docker network create 网络名 // 创建网络
docker network ls // 列出网络
docker run --network 网络名 镜像名 // 加入网络 法一:在创建容器时加入
docker network connect 网络名 容器名/容器ID // 加入网络 法二:创建后加入
docker network inspect 网络名/网络ID // 查看网络详情
docker network rm 网络名/网络ID // 删除网络

相关知识:

curl是一种快速测试网络服务和API的好方法。它很容易使用,速度快,而且可以用于HTTP和HTTPS连接

curl https://www.tutorialspoint.com

whereis 名称,寻找路径

echo 用于向终端发送文本或变量,还可以跟>> 或 > 添加或覆盖文件中的文本。

[echo详解]([Linux中的echo命令|极客教程 (geek-docs.com)](https://geek-docs.com/linux/linux-basic/t_the-echo-command-in-linux.html#:~:text=Linux中的echo命令 1 简介 echo 命令是Linux中的一个基本命令,用于向终端发送文本或变量。 它是最基本和最重要的Linux命令之一,掌握它对初学者来说是非常必要的,可以更容易地浏览命令行。 … 2,命令还可以与输入和输出重定向运算符结合使用。 大于(>`)运算符用于将命令的输出重定向到一个文件。 … 5 总结 echo 命令是一个强大而通用的命令,是所有Linux用户必须掌握的。 ))

数据卷是被设计用来持久化数据的,它的生命周期独立于容器, Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。

Docker 网络

docker会给每个容器分配IP地址,可以通过docker inspect 查看,但是一旦删除容器重新创建,IP地址会改变,写死不方便,可以通过创建网络中的名称代替IP地址;同时,为使得容器之间能够通信,可以将几个容器加入到网络中

img

Docker部署应用

docker部署mysql

img

docker部署redis

img

redis aof

docker部署后端应用

img

img img

镜像分层

不同镜像是一点点变更的

img

DockerFile学习

概述

应用场景:DockerFile 可以自定义镜像,简便部署,之前的镜像不能很好满足需求

基本语法:

  • 不区分大小写,但习惯大写
  • 基本以 FROM 指令开头
  • #开头代表注释

入门案例

img

常用指令

FROM 和 CMD

img

ENV

img

WORKDIR

img

RUN

img
应用
img

ADD

img

docker build 遇到报错做法:1. 可以通过报错发现问题 2. 可以先#注释掉报错那一行再运行docker build 然后docker exec进入容器内部排查问题

EXPOSE

使用EXPOSE 只是声明端口,告诉使用者需要开放哪个端口,最终还是需要-p 开放端口

img

应用

img

img

COPY

img

ENTRYPOINT

和 COPY 类似,不同点是不能被覆盖,比如,执行docker logs 时,CMD的命令就会被bash覆盖,而ENTRYPOINT就不能会报错:invalid option “bash”

img

部署应用

后端:

img

img

前端:

img

实际公司开发打包流程参考

img

推送镜像到镜像仓库

img

DockerCompose

Services top-level elements | Docker Docs

img

img

img

其他元素和用法可参考文档 Services top-level elements | Docker Docs

项目部署案例

将docker run 命令 翻译成 YAML 文件的内容

img img img

docker run --name 在YAML中不需要,因为有服务名称就不需要定义容器名称

传统虚拟机 | Docker | K8s 的区别

物理服务器:实体电脑,机房电脑等,一台物理服务器可以分割成多台虚拟机,

VPS(Virtual Private Server)虚拟专有服务器:每个虚拟机都有独立的操作系统、CPU、内存、存储、网络,这样的虚拟机就叫VPS

VPS 不能自主升降级和动态调整,而ECS可以,VPS加入这样的功能就是ECS,比如可以将1核1g的服务器升级成2核2g

ECS(Elastic Compute Service)弹性计算服务器

Docker容器:img

总结:物理服务器上跑ECS,ECS上跑Docker容器,多个Docker共享ECS实例操作内核

Namespace:使得像一个操作系统,Cgroup限制使用资源

docker:

docker架构原理:

docker的命令基础 docker容器和虚拟机有什么区别:

docker compose是什么:

docker swarm是什么:

docker compose和docker swarm的区别是什么:

docker和kubernetes(k8s)的关系是什么:

docker swarm和kubernetes(k8s)的差异是什么:

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

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

相关文章

超牛免费 机械臂模型、工业机器人模型下载网站集合

‌机械臂是一种高精度、多输入多输出的复杂系统,能够模仿人手的动作,按照给定程序、轨迹和要求实现自动抓取、搬运等功能‌。它通常由执行机构、驱动装置、控制系统以及传感器等组成,能够完成各种复杂的动作。‌ 机械臂在工业、医学、娱乐、…

【Python技术】同花顺wencai涨停分析基础上增加连板分析

周末,有读者加我, 说 之前的涨停分析 是否可以增加连板分析。 这个可以加上。 先看效果 这里附上完整代码: import streamlit as st import pywencai import pandas as pd from datetime import datetime, timedelta import plotly.graph_o…

小程序子组件调用父组件方法、父组件调用子组件方法

1、子组件调用父组件方法 子组件this.triggerEvent(finish); startShare(e) {let url config.apiUrl "/business/lzShare/edit";let data this.data.currentData;util.httpPut(url, data).then((res) > {this.triggerEvent(finish);console.log(res.result);})…

怎样使用Eclipse创建Maven的Java WEB 项目

文章目录 1、第一种方式(选择 archetype 方式) 1.1、第一步:创建项目1.2、第二步:配置jre1.3、第三步:配置tomcat1.4、第四步:设置为WEB3.11.5、第五步:配置Maven的编译级别 1.5.1、第一种方法…

C语言刷题

1. 题目描述 根据给出的三角形3条边a:b.c(a.b,c<100.000)&#xff0c;计算三角形的周长和面积。 输入描述: 一行&#xff0c;三角形3条边(能构成三角形)&#xff0c;中间用一个空格隔开. 输出描述: 一行&#xff0c;三角形周长和面积保留两位小数&#xff0c;中问用一个空…

C语言动态内存管理【进阶--5--】

文章目录 [toc] 动态内存管理一、作用即意义二、动态内存函数的介绍Ⅰ、malloc()函数、free()函数Ⅱ、calloc()函数Ⅲ、realloc()函数 三、常见的动态内存错误Ⅰ、对NULL指针的解引用操作Ⅱ、对动态开辟空间的越界访问Ⅲ、对非动态开辟的内存使用free释放Ⅳ、使用free释放动态开…

Python学习(三)—— 基础语法(下)

目录 一&#xff0c;函数 二&#xff0c;列表和元组 2.1 列表基础操作 2.2 切片 2.3 列表的增删查改 2.4 连接链表 2.5 元组 三&#xff0c;字典 3.1 关于字典 3.2 字典的增删查改操作 3.3 遍历字典元素 3.4 合法的key类型 四&#xff0c;文件操作 4.1 打开关闭…

【数据分享】2014-2024年我国POI兴趣点数据(免费获取/来源于OSM地图)

POI是Point of Interest的简称&#xff0c;意为“兴趣点”&#xff0c;是互联网电子地图中用于表示特定位置的地理实体的核心数据类型。POI通常用于标注具体地点&#xff0c;例如餐厅、商场、学校、医院、景点等。这些数据以点的形式呈现&#xff0c;并附带详细属性信息&#x…

执行python时报错SyntaxError: Non-UTF-8 code

执行python时报错SyntaxError: Non-UTF-8 code starting with ‘\xb4’ in file sqlite_insert.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 通过对文件增加编码格式进行解决。 codingutf-8 codingutf-8 import sqlite…

三、前端学习——HTML表格创建与编辑

1 先看一段代码 css代码如下所示&#xff1a; /* 定义表格整体的宽度、边框样式和间距 */ table {width: 100%; /* 设置表格占据100%宽度 */border-collapse: collapse; /* 合并表格边框 */margin-top: 30px; /* 设置表格与上方元素的间距 */ }/* 定…

电子应用设计方案-52:智能电子相框系统方案设计

智能电子相框系统方案设计 一、引言 智能电子相框作为一种能够展示数字照片和多媒体内容的设备&#xff0c;为用户提供了便捷、个性化的照片展示方式。本方案旨在设计一款功能丰富、用户体验良好的智能电子相框系统。 二、系统概述 1. 系统目标 - 高质量显示照片和视频&#…

tomcat优化和动静分离

tomcat的优化和动静分离 tomcat的优化&#xff1a; 默认的安装情况下&#xff0c;tomcat经常会假死的情况 tomcat需要进行优化 优化的三个方面&#xff1a; 1、tomcat的配置优化2、操作系统的内核优化3、jvm调优 tomcat自身的优化&#xff1a; 8080&#xff1a;tomcat对外提供…

360quake导出工具

360Quake 查询工具 一个基于 PyQt6 开发的 360 Quake 网络空间测绘引擎查询工具&#xff0c;提供了简单直观的图形界面&#xff0c;支持多种数据导出格式。 功能特点 现代化的图形用户界面支持大规模数据查询&#xff08;最多100,000条结果&#xff09;实时查询进度显示多种…

东方通TongWeb替换Tomcat的踩坑记录

一、背景 由于信创需要&#xff0c;原来项目的用到的一些中间件、软件都要逐步替换为国产品牌&#xff0c;决定先从web容器入手&#xff0c;将Tomcat替换掉。在网上搜了一些资料&#xff0c;结合项目当前情况&#xff0c;考虑在金蝶AAS和东方通TongWeb里面选择&#xff0c;后又…

UE5中实现Billboard公告板渲染

公告板&#xff08;Billboard&#xff09;通常指永远面向摄像机的面片&#xff0c;游戏中许多技术都基于公告板&#xff0c;例如提示拾取图标、敌人血槽信息等&#xff0c;本文将使用UE5和材质节点制作一个公告板。 Gif效果&#xff1a; 网格效果&#xff1a; 1.思路 通过…

Cisco Packet Tarcer配置计网实验笔记

文章目录 概要整体架构流程网络设备互连基础拓扑图拓扑说明配置步骤 RIP/OSPF混合路由拓扑图拓扑说明配置步骤 BGP协议拓扑图拓扑说明配置步骤 ACL访问控制拓扑图拓扑说明配置步骤 HSRP冗余网关拓扑图拓扑说明配置步骤 小结 概要 一些环境配置笔记 整体架构流程 网络设备互连…

QTreeView 与 QTreeWidget 例子

1. 先举个例子 1班有3个学生&#xff1a;张三、李四、王五 4个学生属性&#xff1a;语文 数学 英语 性别。 语文 数学 英语使用QDoubleSpinBox* 编辑&#xff0c;范围为0到100,1位小数 性别使用QComboBox* 编辑&#xff0c;选项为&#xff1a;男、女 实现效果&#xff1a; 2…

渗透测试---wireshark(1)基本介绍与安装

声明&#xff1a;学习素材来自b站up【泷羽Sec】&#xff0c;侵删&#xff0c;若阅读过程中有相关方面的不足&#xff0c;还请指正&#xff0c;本文只做相关技术分享,切莫从事违法等相关行为&#xff0c;本人与泷羽sec团队一律不承担一切后果 视频地址&#xff1a;泷羽---wiresh…

AI开发 - 用GPT写一个GPT应用的真实案例

就在昨天&#xff0c;我的同事推荐给我了一个第三方的公共大模型API&#xff0c;这个API集合了国际上上几乎所有知名的大模型&#xff0c;只需要很少的费用&#xff0c;就可以接入到这些大模型中并使用它们。成本之低&#xff0c;令人乍舌&#xff01;包括我们现在无法试用的 G…

搭建Tomcat(一)---SocketServerSocket

目录 引入1 引入2--socket 流程 Socket&#xff08;应用程序之间的通讯保障&#xff09; 网卡(计算机之间的通讯保障) 端口 端口号 实例 client端 解析 server端 解析 相关方法 问题1&#xff1a;ServerSocket和Socket有什么关系&#xff1f; ServerSocket Soc…