docker构建镜像并上传dockerhub

docker构建镜像并上传dockerhub
前提条件:需要连接梯子

  1. 将梯子配置到虚拟机中(确保主机能够连接 hub.docker.com)
  • 使用ipconfig 查询主机的 ip4地址
  • 虚拟机的连接模式改成桥接模式(复制主机的地址网络)
  • 将ip4配置到虚拟机(将/etc/environment中的http的ip地址和端口更改为主机查询到的ip4地址(除localhost之外的所有))
# http_proxy="http://ip地址:端口号"
http_proxy="http://192.168.1.26:10090"
https_proxy="http://192.168.1.26:10090"
ftp_proxy="http://192.168.1.26:10090"
no_proxy="localhost,127.0.0.1"
# no_proxy 表示什么时候不走代理
  • source /etc/environment 运行一下新配置的环境变量
  • echo $http_proxy 或者echo $path查看一下环境变量是否设置成功
  • 没有成功的话,尝试重启虚拟机
  • 虚拟机能够连上google之后不代表docker能够使用梯子,因为docker是独立的,所以需要再次配置daemon.json文件中的http代理协议
  • 配置完成之后重启docker(systemctl restart docker
  1. 了解dockerfile(docker能够实现的基础)中的内容
    Dockerfile 本质上是一个文本文件,用于定义如何自动构建 Docker 镜像。它包含了一系列指令(Instructions),这些指令是用来指导镜像的构建过程,实现自动化、可移植性和环境一致性。 Docker 引擎会按照这些指令逐步构建出一个可运行的容器镜像。
    以下是dockerfile中的一些基础内容(关键词必须是大写的):
# 拉取镜像 from node
FROM node:alpine
# alpine :轻量级的Linux操作系统(如果使用ubuntu的话会比alpine大很多)# 创建工程目录
WORKDIR /usr/src/app
# 这个目录是docker container(docker容器)里边的文件系统# 拷贝文件并安装
# copy 主机目录(源头) docker容器目录(目标)
COPY package*.json ./
# 和python中的pip install一样,安装 包
RUN npm install # copy的第一个.相对路径(主机目录)
# copy的第二个.相对路径(docker镜像目录)
COPY . .# 表示该程序运行在容器的3000端口
EXPOSE 3000
# 注:运行到主机端口需要用到端口映射( 端口映射:容器端口  映射 主机端口)
# 在主机通过主机端口去运行容器# 运行server.js(镜像到容器的分界,使静态转化为动态可运行的状态,在cmd中要写的内容)
CMD ["node","sever.js"]
# 如果是python文件的话就是 cmd ["python","xx.py"]
  1. 工程创建好之后需要使用build构建镜像,基于镜像在容器中运行程序。
# 将当前目录 构建 名称为名称 的镜像
docker build -t 名称 . 
# 注:如果要推到dockerhub上的时候名称需要带上自己在dockerhub上的用户名# 查看镜像
docker image ls 
# 运行容器,并将容器端口映射到主机端口
docker run -p 主机端口号:容器端口号  镜像名称
# 查看运行的容器
docker container ls # 停止id的容器
docker stop ID 
# 查看所有的运行过的容器
docker ps -a 
  1. 将构建好的镜像上传的到自己的dockerhub中
# 将docker中的镜像上传到dockerhub中自己的仓库中:
# 登录账号:
docker login -u 用户名
# 将镜像推到dockerhub 中
docker push 镜像名# 从dockerhub中下载相应的镜像
# 其中在拉取	其他镜像的时候会使用-it参数,表示以交互式的方式去运行,本地没有的话会从网上下载)
docker pull 用户名称/镜像名称
# 注意:不同操作系统生成的镜像不能在不同操作系统下运行(即windows的镜像只能在windows操作系统中运行)# 删除镜像(要先删除依赖其产生的容器,才能删除镜像)
# rmi是remove image的缩写
docker rmi 镜像ID
# 删除容器
docker rm  容器id

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

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

相关文章

python实现的音乐播放器

python实现的音乐播放器 音乐播放器,原来写过一个简陋的例子,可见 https://blog.csdn.net/cnds123/article/details/137874107 那个不能拖动播放进度条上的滑块到新的位置播放。下面介绍的可以拖动播放进度条上的滑块到新的位置播放。 简单实用的音乐播放器 这个简单实用的…

[网安工具] 端口信息收集工具 —— 御剑高速 TCP 全端口扫描工具 · 使用手册

🌟想了解其它网安工具?看看这个:[网安工具] 网络安全工具管理 —— 工具仓库 管理手册 https://github.com/NepoloHebo/Yujian-high-speed-TCP-full-port-scannerhttps://github.com/NepoloHebo/Yujian-high-speed-TCP-full-port-scanner 0…

数字孪生赋能智慧城市:从概念到落地的深度实践

在城市规模与复杂度持续攀升的当下,传统管理模式已难以满足现代城市精细化治理需求。数字孪生技术凭借构建虚拟城市镜像、实现实时数据交互与智能决策的特性,成为智慧城市建设的核心引擎。本文将通过多个典型案例,深度解析数字孪生技术如何重…

DeFi开发系统软件开发:技术架构与生态重构

DeFi开发系统软件开发:技术架构与生态重构 ——2025年去中心化金融开发的范式革新与实践指南 一、技术架构演进:从单一链到多链混合引擎 现代DeFi系统开发已从单一公链架构转向“跨链互操作混合模式”,结合中心化效率与去中心化安全双重优势…

相同IP和端口的服务器ssh连接时出现异常

起因 把服务器上的一个虚拟机搞坏了,所以删除重新创建了一个,端口号和IP与之前的虚拟机相同。 ssh usernameIP -p port 时报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone…

验证es启动成功

1. 查看命令行输出信息 在启动 Elasticsearch 时,命令行窗口会输出一系列日志信息。若启动成功,日志里通常会有类似下面的信息: plaintext [2025-05-06T13:20:00,000][INFO ][o.e.n.Node ] [node_name] started其中 [node_na…

CentOS网络之network和NetworkManager深度解析

文章目录 CentOS网络之network和NetworkManager深度解析1. CentOS网络服务发展历史1.1 传统network阶段(CentOS 5-6)1.2 过渡期(CentOS 7)1.3 新时代(CentOS 8) 2. network和NetworkManager的核心区别3. ne…

Unity:父挂 Rigidbody2D、子挂 Collider2D 时触发器不生效的问题分析

目录 ❓问题现象 🔍 排查与定位 ⚠️ Unity 触发机制的核心要求 ✅ 为什么把 Collider2D 移到父物体后就能触发? 💡 解决方案 在 Unity 2D 游戏开发中,很多人习惯用父物体挂载 Rigidbody2D,而将不同的身体部位&am…

Google AI版图:解析AI Studio, Gemini, NotebookLM与GCP

1. 2C vs 2B: AI Studio: 主要是面向开发者,提供一个易用的界面来探索和构建基于Google模型的应用。虽然最终的应用可能服务于C端或B端,但AI Studio本身更多是一个开发者的工具平台,可以看作是连接模型能力和各种应用的桥梁。它可以被个人开…

Oracle EBS AP发票被预付款核算创建会计科目时间超长

背景 由于客户职能部门的水电、通信和物业等等费用统一管理或对接部门报销费,在报销费的时候,用户把所有费用分摊到各个末级部门,形成AP发票行有上千行, 问题症状 1、用户过账时,请求创建会计科目一直执行20多个小时未完成,只能手工强行取消请求。 2、取消请求以后,从后…

MySQL中MVCC指什么?

简要回答: MVCC(multi version concurrency control)即多版本并发控制,为了确保多线程下数据的安全,可以通过undo log和ReadView来实现不同的事务隔离级别。 对于已提交读和可重复读隔离级别的事务来说,M…

赛季7靶场 -- Checker --User flag

本系列仅说明靶场的攻击思路,不会给出任何的详细代码执行步骤,因为个人觉得找到合适的工具以实现攻击思路的能力也非常重要。root要逆向,没做了,但是user flag也有借鉴意义,关于2FA的绕过我们有必要了解 1.首先Nmap扫描…

【RAG技术全景解读】从原理到工业级应用实践

目录 🌟 前言🏗️ 技术背景与价值🚨 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📐 核心概念图解💡 核心作用讲解⚙️ 关键技术模块说明⚖️ 技术选型对比 &…

【嵌入式开发-RS-485】

嵌入式开发-RS-485 ■ RS-485 连接方式■ RS-485 半双工通讯■ RS-485 的特点■ UART硬流控■ RS-4851. 全双工、半双工接线2. 拓扑结构3. RS-485收发器3.1 发送模式(TX)3.2 接收模式(RX) 4. RS-485数据链路5. RS-485常用电路6. C…

[硬件电路-18]:MCU - LPC1765FBD100是恩智浦(NXP)半导体推出的一款基于ARM Cortex-M3内核的高性能32位微控制器

LPC1765FBD100是恩智浦(NXP)半导体推出的一款基于ARM Cortex-M3内核的高性能32位微控制器,具备高集成度、低功耗、丰富的外设接口和强大的处理能力,适用于工业控制、消费电子、医疗设备、通信系统等嵌入式应用场景。 以下从核心特…

MyBatis(进阶)(xml标签)

本节⽬标 1. 学习MyBatis的动态SQL查询 2. 掌握MyBatis在项⽬中的应⽤, 可以使⽤Spring MVC完成⼀些基础的功能 1. 动态SQL(XML) 动态 SQL 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接 可以参考官⽅⽂档: M…

QT QList容器及行高亮

总结QList是一个泛型/模板链表,可以自己定义数据类型,ExtraSelection是一种“数据类型”

【Python】Python项目中的依赖与配置:requirements.txt、setup.py、pyproject.toml 详解

在昨天的文章【Python】通过Editable Install模式详解,解决Python开发总是import出错的问题 中, 我们提到了Python项目的配置文件requirements.txt、setup.py、pyproject.toml。在昨天的解决方案中, 我们同时维护了这三个文件。 由同学就问&a…

详细聊聊 Synchronized,以及锁的升级过程

在Java中,synchronized关键字是用于实现线程同步的重要机制,它通过内置锁(Monitor)确保多个线程对共享资源的安全访问。 1. synchronized 的基本使用与实现原理 使用方式 修饰实例方法:锁是当前对象实例。public syn…

vue3的深入组件-组件 v-model

组件 v-model 基本用法​ v-model 可以在组件上使用以实现双向绑定。 从 Vue 3.4 开始&#xff0c;推荐的实现方式是使用 defineModel() 宏&#xff1a; <script setup> const model defineModel()function update() {model.value } </script><template>…