docker的安装和常用命令
docker的安装和常用命令
- 安装
- 老版本
- 新版本
- 镜像源配置
- 常用命令
- 基本命令
- 清理
- 文件复制
- 构建镜像
- 上传镜像
- 补充
- 权限不足
- 无目录权限
- 无用户权限
- 容器访问
- jenkins推送镜像失败
- 修改主机名
- 编写Dockerfile
注:这里的安装是针对于cetnos7。
安装
老版本
安装老版本可能遇到报错:missing signature key
yum -y install docker.x86_64
新版本
# 换成阿里镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum remove docker docker-common docker-selinux docker-engine
yum -y install docker-ce
systemctl start docker
设置docker镜像,阿里云镜像源需要到官网注册后才能获取,推荐使用阿里的。若某些官方镜像用阿里的拉取不到,可以参考 DaoCloud/public-image-mirror 的README.md和issue里的说明,获取其他镜像源。github访问不了,可以访问gitcode:public-image-mirror
镜像源配置
vi /etc/docker/daemon.json
{"registry-mirrors": ["https://dockerhub.icu","https://docker.chenby.cn","https://docker.1panel.live","https://docker.awsl9527.cn","https://docker.anyhub.us.kg","https://dhub.kubesre.xyz"]
}
systemctl daemon-reload
systemctl restart docker#不配置,直接使用
docker pull docker.anyhub.us.kg/docker.io/biluoer/hadoop:3.1.3-base
常用命令
基本命令
# 镜像命令
docker pull nginx # 拉取镜像
docker push biluoer/nginx # 推送镜像
docker build -t biluoer/nginx . # 构建镜像
# 保存镜像为一个压缩包
# docker save -o [保存的目标文件名称] [镜像名称]
docker save -o nginx.tar nginx:latest
# 加载压缩包为镜像
docker load -i nginx.tar
# 将某个容器构建为镜像
docker commit -m "提交信息" -a "作者名" 容器名称或id tag名称
# 例如将当前运行的容器nginx构建为镜像
docker commit nginx biluoer/nginx:v1# 容器相关命令
# 创建并运行一个容器
#--name指定容器名称;-p端口映射;-d后台运行;最后的nginx是镜像名称
docker run --name containerName -p 80:80 -d nginx
# 让运行的容器暂停
docker pause nginx
# 让暂停状态的容器恢复运行
docker unpause 容器名称或容器ID
# 停止运行的容器
docker stop 容器名称或容器ID
# 运行的容器
docker start 容器名称或容器ID
# 删除容器
docker rm 容器名称或容器ID
# 重新运行容器
docker restart 容器名称或容器ID
# 停止并删除容器(stop+rm)
docker rm -f 容器名称或容器ID
# 进入容器,bash-shell类型,还可以为sh等
docker exec -it nginx bash
# 让容器直接使用某命令,例如命令:ip addr
docker exec nginx ip addr
清理
#命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
docker system prune
# 作用和上面一样。-f,表示强制删除,不会询问
docker system prune -f
# 清理更彻底,会把没有正在使用的镜像都删掉(小心使用)
docker system prune -a
文件复制
# 本地到服务器
docker cp 本地路径 容器id或者容器名字:容器内路径
# 服务器到本地
docker cp 容器id或者容器名字:容器内路径 本地路径
构建镜像
# 使用当前目录的 Dockerfile 创建镜像;-t指定构建出的镜像的tag名称
docker build -t biluoer/ubuntu:v1 .
上传镜像
docker login -u username -p pwd
docker tag hadoop:3.1.3 biluoer/hadoop:3.1.3
docker push biluoer/hadoop:3.1.3
注:
-
旧版登录成功后,密码会经过base64编码保存在
$HOME/用户名/.docker/config.json的auth属性中,进过该命令echo 'auth值' | base64 --decode即可看到明文密码。 -
新版登录会报错:WARNING! Using --password via the CLI is insecure. Use --password-stdin。不允许密码明文出现,但其实还是登录成功了,密码统一保存到
config.json中了。解决方法:- 方法1:将密码写到文件中使用:
cat .docker.pwd | docker login -u username --password-stdin - 方法2:密码保存到环境变量使用,与方法1类似。
- 方法3:官方推荐了一些工具进行安全的登录。
- 方法1:将密码写到文件中使用:
补充
权限不足
无目录权限
#若挂载目录在容器内访问没有权限,可以在挂载时加上参数:
--privileged=true
无用户权限
# 以root用户身份进入容器
docker exec --user root -it kafka bash
容器访问
容器无法连接另一个容器。
- 方法1:使用主机ip
#容器内默认只能访问docker提供的网关,不能访问其他容器。解决方法:run命令时加上参数:
--network=host
#值:bridge(默认,容器不具有一个公有IP)、host(使用宿主机的网络接口和IP地址)、none(使用127.0.0.1的本机网络)...
- 方法2:
--link参数被用来在容器之间创建网络连接,使得容器可以互相解析对方的名字和访问相应的服务
#run命令时加上一下参数
--link 当前运行的容器名称:映射名称
# 然后可以通过映射名称+端口号服务其他容器的服务
- 方法3:创建网络,让不同容器使用相同的网络(
--link参数现已不推荐使用)
# 创建桥接网络,bridge是默认驱动,可以不加
docker network create [--driver bridge] hadoop-net
#创建桥接网络,并指定子网配置,范围:192.168.1.1-192.168.1.254
docker network create --subnet=192.168.1.0/24 hadoop-net
jenkins推送镜像失败
登录后使用docker推送没有问题,但使用jenkins推送报错:denied: requested access to the resource is denied。
原因:因为jenkins在推送镜像的时候使用的是jenkins的伪用户,因此无法直接在jenkins完成登录。
解决方法:将之前生成的config.json拷贝到jenkins的目录下即可
cd /home/用户名/
cp .docker/config.json /var/lib/jenkins
chown -R jenkins.jenkins .docker# 如果jenkins是以容器方式安装的
docker cp .docker jenkins:/root/
# 或者先在任务的执行脚本中执行一次登录命令,让它自动生成
修改主机名
直接进入容器中修改/etc/hosts,这种方式在重启容器后,修改的内容会丢失。
如果是容器未运行的状态,通过在使用run命令时加上参数 --hostname 主机名 就可以指定容器运行后的主机名。
编写Dockerfile
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \&& tar -xf ./jdk8.tar.gz \&& mv ./jdk1.8.0_144 ./java8# 注:如果使用ADD命令,则会自动解压,上面的三条命令就可以变为以下命令
#ADD ./jdk8.tar.gz $JAVA_DIR/
#COPY ./docker-demo.jar /tmp/app.jar
#RUN cd $JAVA_DIR \
# && mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 注:可以通过ENV命令定义一个端口变量,根据传入的参数动态指定端口
# 例如使用run命令时可以加上参数:-e MY_PORT=8088# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
相关文章:
docker的安装和常用命令
docker的安装和常用命令 安装老版本新版本 镜像源配置常用命令基本命令清理文件复制构建镜像上传镜像 补充权限不足无目录权限无用户权限 容器访问jenkins推送镜像失败修改主机名编写Dockerfile 注:这里的安装是针对于cetnos7。 安装 老版本 安装老版本可能遇到报…...
haproxy 7000字配图超详细教程 从小白到入门
简介:HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy的社区非常活跃,版本更新快速,HAProxy具备媲美商用负载均衡器的性能和稳…...
使用 LangChain 掌握检索增强生成 (RAG) 的终极指南:5、将自然语言问题转换为结构化查询
5. 查询构建 — Ragatouille 用户用自然语言提出问题并被路由到特定数据源(例如,向量存储、图形数据库等)后,该问题需要被转换为结构化查询,以便从选定的数据源检索信息(例如,文本到SQL、文本到…...
浅析JavaScript 堆内存及其通过 Chrome DevTools 捕获堆快照的方法
JavaScript 的堆内存(Heap Memory)是内存中专门用于存放程序执行过程中动态生成的对象、函数实例以及其他动态数据结构的区域。与调用栈(Call Stack)专注于管理函数调用的顺序和执行环境不同,堆内存则专注于动态地分配…...
C++学习笔记----2、使用C++进行优雅编程(五)----命名
C编译器对于命名有如下规则: 命名中可以有大小写字母、数字、下划线。字母不限于英文字符,可以是任意国家语言的字母,例如日文,阿拉伯文等。不能以数字开头,例如9to5。包含双下划线的被标准库保留不可使用,…...
Element UI顶部导航栏与左侧导航栏联动实现~
需求:点击顶部导航栏的不同栏位实现左侧导航栏菜单的不同展示实现联动效果。 点击顶部导航栏按钮将对应的左侧导航栏数据传递给vuex,并在左侧导航栏父组件中接收并传递给左侧导航栏子组件,使用递归组件实现渲染等,具体的优化可以看下面的注释…...
ECMAScript6模板字面量:反引号、${}占位符的使用
ECMAScript 6 中引入了模板字面量,主要通过多行字符串和字符串占位符对字符串进行增强操作。如下: //使用ECMAScript6模板字面量拼接字符串,例如:2024年8月12日 15:38:28 星期一 let dateRet ${Year}年${Month}月${Dates}日 ${H…...
网关与AWS云心跳周期,网关断电或者网络不稳定的离线机制
当mqtt连线建立时, 需要指定keep alive参数,当 iot core在1.5倍 keep alive timeout时长内都没收到任何来自设备端的操作, 例如 ping, subscribe, publish ,则会主动将连线中断。如果iot core检测到tcp 连接中断, 会立即中断;如果未检测到则会等到1.5倍 …...
【代码随想录训练营第42期 Day26打卡 贪心Part1 - LeetCode 455.分发饼干 376. 摆动序列 53. 最大子序和
目录 一、贪心 二、题目与题解 题目一:455.分发饼干 题目链接 题解:排序双指针贪心 题目二:376. 摆动序列 题目链接 题解:贪心 题目三:53. 最大子序和 题目链接 题解1:暴力(失败&…...
利用有限元法(FEM)模拟电磁场与样品的相互作用
一、引言 电磁场与物质的相互作用是理解光学现象的基础。在实际应用中,激光光束与样品的相互作用通常涉及复杂的电磁场分布,尤其在微纳尺度结构中。因此,使用数值模拟方法如有限元法(FEM)来模拟电磁场的分布和传播&…...
如何保持git主分支树的整洁
经典应用展示Git版本控制用法 本章将列举Git的一些闪亮特性,期待能够让您爱上Git 文章目录 经典应用展示Git版本控制用法前言一、分支是什么?二、主-分支合并merge三、cherry-pick(精挑细选)四、Rebase(变基)4.1 合并本地分支到主分支4.2 合并本地分支从指定commit开始的…...
Datawhale X 魔搭 AI夏令营 Task1 从零入门AI生图原理实践笔记
赛题内容 参赛者需在可图Kolors模型的基础上训练LoRA模型,生成无限风格,如水墨画风格、水彩风格、赛博朋克风格、日漫风格… 基于LoRA模型生成8张图片组成连贯故事,故事内容可自定义;基于8图故事,评估LoRA风格的美感度…...
Python中将代码打包成exe文件
在Python中将代码打包成exe文件,可以使用PyInstaller工具。以下是使用PyInstaller将Python脚本打包成exe的步骤: 安装PyInstaller: pip install pyinstaller使用PyInstaller打包Python脚本: pyinstaller --onefile your_script…...
【C++ 面试 - 基础题】每日 3 题(十三)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...
Android中的Binder
binder是Android平台的一种跨进程通信(IPC)机制,从应用层角度来说,binder是客户端和服务端进行通信的媒介。 ipc原理 ipc通信指的是两个进程之间交换数据,如图中的client进程和server进程。 Android为每个进程提供了…...
记录一次.gitignore 失效问题
前言 今天使用git同步同事的代码时,出现一个问题,.gitignore限制失效,导致我本地生成的临时缓存文件被跟踪到了commit中,执行 git rm --cache .后再add commit也不行,很奇怪就研究了一下,下面将我的解决方…...
Eclipse 工作空间
Eclipse 工作空间 Eclipse 工作空间(Workspace)是 Eclipse IDE 中一个核心概念,它指的是一个用于组织和存储开发项目及相关文件的目录。在 Eclipse 中,所有开发活动都是围绕工作空间展开的。本文将详细介绍 Eclipse 工作空间的概…...
[240812] X-CMD 发布 v0.4.5:更新 gtb、cd、chat、hashdir 模块功能
目录 📃Changelog✨ gtb✨ cd✨ chat✨ hashdir 📃Changelog ✨ gtb 调整了 fzf 预览窗口中书籍文本的显示效果,通过识别文本中的特殊字符、日期、章节标题等信息,为其赋予不同的颜色。 ✨ cd cd 模块新增功能:在找…...
Flutter中的异步编程
目录 前言 1. Future 和 async/await 1.Future 1.什么是Future? 2.Flutter的三种状态 1.未完成(Uncompleted) 1.定义 2.处理未完成的Future 2.已完成(Completed with a value) 1.概念 2.处理已完成的Future 3.使用async/await 4.Fu…...
vue3 路由带传参跳转;刷新后消失。一次性参数使用。
解决vue3 怎么做到路由跳转传参刷新后消失 解决路由跳转传参去除问题 想要跳转后根据参数显示对应的tab,但url传参刷新会持续保留无法重置。 router.replace替换又会导致显示内容为router.replace后的,传参目的丢失。 业务逻辑: 完成对应操作…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
