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后的,传参目的丢失。 业务逻辑: 完成对应操作…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上
一、软件介绍 文末提供程序和源码下载 RushDB 改变了您处理图形数据的方式 — 不需要 Schema,不需要复杂的查询,只需推送数据即可。 二、Key Features ✨ 主要特点 Instant Setup: Be productive in seconds, not days 即时设置 :在几秒钟…...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...
