Docker 的安装与使用

Docker 的安装

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。
Docker CE 的安装请参考官方文档,我们这里以CentOS为例:
1、Docker 要求 CentOS 系统的内核版本高于 3.10
通过 uname -r 命令查看你当前的内核版本

uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

yum -y update

3、卸载旧版本(如果安装过旧版本的话)

sudo yum remove -y docker*

4、安装需要的软件包, yum-util 提供 yum-config-manager 功能

yum install -y yum-utils

5、设置yum源,并更新 yum 的包索引

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

在这里插入图片描述
7、安装docker

yum install -y docker-ce-3:26.1.4-1.el7.x86_64  # 指定安装版本

8、启动并加入开机启动

systemctl start docker 
systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

docker version

10、卸载docker

yum remove -y docker*
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker

Docker常用命令

镜像相关命令

1、列出镜像

docker image ls

2、拉取镜像(会从 Docker Hub 的仓库中下载镜像)

docker pull 镜像名称[:tag]
docker pull java:8

3、删除本地镜像

docker image rm 镜像名或镜像id

容器相关命令

1、运行容器
docker run [option] 镜像名 [向启动容器中传入的命令]

常用可选参数说明:
-d:代表后台运行容器
-p 宿主机端口:容器端口:为了映射当前Linux的端口和容器的端口
--name  为创建的容器命名
-e  为容器设置环境变量
--network=host  表示将主机的网络环境映射到容器中,容器的网络与主机相同

2、查看容器

docker ps [-a]
-a:查看全部的容器,包括没有运行

3、 查看容器日志

docker logs -f 容器id

4、 进入容器内容部

docker exec -it 容器id /bin/bash

5、容器与宿主机相互复制文件

# 将宿主机的文件复制到容器内部
docker cp 文件名称 容器id:容器内部路径
# 从容器里面拷贝文件到宿主机
docker cp 容器id:文件在容器内的路径  宿主机路径 

6、启动、停止容器

# 启动停止的容器
docker start 容器id

# 停止指定的容器
docker stop 容器id
# 停止全部容器
docker stop $(docker ps -qa)

# 删除指定容器(删除容器前,需要先停止容器)
docker rm 容器id

7、将容器保存为镜像

docker commit 容器名 镜像名

8、镜像备份与迁移

可以通过save命令将镜像打包成文件,拷贝给别人使用
docker save -o 保存的文件名 镜像名
docker save -o ./ubuntu.tar ubuntu

在拿到镜像文件后,可以通过load方法,将镜像加载到本地
docker load -i ./ubuntu.tar

使用Dockerfile构建微服务镜像

Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节
如下为Dockerfile的语言:

from: 指定当前自定义镜像依赖的环境
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 声明镜像的默认工作目录
run: 执行的命令,可以编写多个
cmd: 需要执行的命令(在workdir下执行的,cmd可以写多个,只以最后一个为准)

目标:将 5G定制网的微服务,打包成1个镜像文件

1、在微服务的目录新建一个 Dockerfile 的文件,在里面增加如下内容:
在这里插入图片描述

# 使用 jdk8 作为基础镜像
FROM jdk8:8u51

# 设置工作目录
WORKDIR /app

# 复制所有微服务的JAR文件到容器中
COPY ./cyberwing-common/cyberwing-common.jar /app/cyberwing-common/
COPY ./cyberwing-common/application.yml /app/cyberwing-common/
COPY ./capitek-upms/application-dev.yml /app/capitek-upms/
COPY ./capitek-upms/upms.jar /app/capitek-upms/

# 暴露端口
EXPOSE 8120 8102

ENV JAVA_OPTS "-Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/ -Dfile.encoding=utf-8"

ENTRYPOINT java ${JAVA_OPTS} -jar /app/cyberwing-common/cyberwing-common.jar --spring.config.location=/app/cyberwing-common/application.yml & \
           java ${JAVA_OPTS} -jar /app/capitek-upms/upms.jar --spring.config.location=/app/capitek-upms/application-dev.yml --jasypt.encryptor.password=capitekor & \
           wait

2、在Dockerfile所在路径执行以下命令构建镜像:

docker build -t my-app .
# -t 指定镜像名字,(.)表示Dockerfile文件所在路径

3、运行容器

docker run -d -p 18899:8899 --name my-app my-app

4、如果希望在运行容器时覆盖环境变量的值,可以在 docker run 命令中使用 -e 标志来传递环境变量
首先改写微服务的配置文件,将配置中统一设置的 Mysql、redis 这些配置项改为 变量 形式
在这里插入图片描述

docker run -d \
  -p 18120:8120 \
  -p 18102:8102 \
  --name my-app \
  -e DATABASE_URL="172.18.1.212" \
  -e DATABASE_PORT="3306" \
  -e DATABASE_NAME="cyberwing_v1.4_zdyfy" \
  -e DATABASE_USERNAME="ENC(FYthkcvukQtU+nbm+5lCtg==)" \
  -e DATABASE_PASSWORD="ENC(JUzm26YzVxf8CsmiqLiHAg==)" \
  my-app

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单相锁相环,原理与Matlab实现

单相锁相环基本原理 单相锁相环的基本原理图如下所示, u α u_\alpha uα​ u β u_\beta uβ​经Park变换、PI控制实现对角频率 ω \omega ω和角度 θ \theta θ的估算。不同锁相环方案之间的差异,主要表现在正交电压 u β u_\beta uβ​的生成&#x…

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略 目录 zeroX的简介 1、支持的文件类型 zeroX的安装和使用方法 T1、Node.js 版本: 安装 使用方法 使用文件 URL: 使用本地路径&…

Redis集群模式之Redis Sentinel vs. Redis Cluster

在分布式系统环境中,Redis以其高性能、低延迟和丰富的数据结构而广受青睐。随着数据量的增长和访问需求的增加,单一Redis实例往往难以满足高可用性和扩展性的要求。为此,Redis提供了两种主要的集群模式:Redis Sentinel和Redis Clu…

OPENCV手把手入门 多图![more cpp--9]

你说安装?楼主使用的是VCPKG,也是遇到不少问题,不过最后还是解决了。大家有需要我抽时间写一篇如何使用VCPKG和VS安装OPENCV出来 最近楼主在做视觉识别方面的工作,这个就当笔记了吧(一年前做过这方面的工作&#xff0c…

AI写作(二)NLP:开启自然语言处理的奇妙之旅(2/10)

一、NLP 的基本概念与任务 (一)自然语言处理的研究对象 自然语言处理(NLP)处于计算机科学、人工智能和语言学的交叉领域。它所聚焦的人类社会语言信息是无比丰富和复杂的,包括口语、书面语等各种形式。这种语言信息在…

pgsql 版本升级和数据迁移(编译版)

最近给pgsql从16.0升级到16.4,有挺多细节 1.关闭pgsql 为了保证数据一致性和过渡平稳,还是需要暂停pgsql。 systemctl stop pgsql2.备份现有数据 需要切换到pgsql的用户,通常用root是不行的 pg_dumpall > /xxx/xxx/backup.sql3.重命名…

ArcGIS地理空间平台 manager 任意文件读取漏洞复现

0x01 产品描述: ‌ ArcGIS‌是一个综合的地理空间平台,由Esri开发,旨在为专业人士和组织提供全面的地理信息系统(GIS)功能。ArcGIS通过集成和连接地理环境中的数据,支持创建、管理、分析、映射和共享…

自定义springCloudLoadbalancer简述

概述 目前后端用的基本都是springCloud体系; 平时在dev环境开发时,会把自己的本地服务也注册上去,但是这样的话,在客户端调用时请求可能会打到自己本地,对客户端测试不太友好. 思路大致就是前端在请求头传入指定ip&a…

华为数通HCIA系列第5次考试-【2024-46周-周一】

文章目录 1、子网掩码有什么作用,和IP地址是什么关系,利用子网掩码可以获取哪些信息?2、已知一个IP地址是192.168.1.1,子网掩码是255.255.255.0,求其网络地址3、已知某主机的IP地址是192.168.100.200,子网掩…

[AGC016D] XOR Replace 题解

[AGC016D] XOR Replace 来自 qzmoot 同一机房的同学的题解。 模拟赛用不同的思路场切了。 题面大意:一个序列,一次操作可以将某个位置变成整个序列的异或和。 问最少几步到达目标序列。 来自梦熊的题面: 有一个长度为 n n n 的序列 a …

ubuntu 24.04运行chattts时cuda安装错误原因分析

使用ubuntu 24.04,按照2noise/ChatTTS官方流程安装依赖时报错。ChatTTShttps://github.com/2noise/ChatTTS 这是因为cuda版本不对,ChatTTS目前的版本,要求支持cuda 12.4及以上,但是如果nvidia显卡驱动版本较老,无法支…

力扣-Hot100-技巧【算法学习day.31】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

Spark的容错机制

1,Spark如何保障数据的安全 1、RDD容错机制:persist持久化机制 1)cache算子 - 功能:将RDD缓存在内存中 - 语法:cache() - 本质:底层调用的还是persist(StorageLevel.MEMORY_ONLY)&…

【漏洞分析】Fastjson最新版本RCE漏洞

01漏洞编号 CVE-2022-25845CNVD-2022-40233CNNVD-202206-1037二、Fastjson知多少 万恶之源AutoType Fastjson的主要功能是将Java Bean序列化为JSON字符串,这样得到的字符串就可以通过数据库等方式进行持久化了。 但是,Fastjson在序列化及反序列化的过…

推荐一款电脑清理和加速工具:Wise Care 365 Pro

Wise Care 365 Pro是一款可以清理注册表和磁盘垃圾文件,保护个人隐私记录,提高电脑使用安全的软件,是优化系统、提高Windows系统运行速度最好的选择!实时保护注册表不被其他程序未经许可地秘密修改。例如阻止程序更改您的浏览器主页&#xff…

微信小程序,点击bindtap事件后,没有跳转到详情页,有可能是app.json中没有正确配置页面路径

文章目录 1、index.wxml2、index.js检查点1. 确保目标页面存在2. 确保页面路径配置正确3. 检查页面接收参数productDetail.jsproductDetail.wxmlproductDetail.wxss 总结 1、index.wxml <!-- 商品搜索结果卡片容器 --><view class"search-result"><bl…

合理的止盈可以在盈利的时候保证期望的收益

吸取他人经验是每位交易者成长的必经之路。无论是新手还是老手&#xff0c;面对瞬息万变的市场&#xff0c;都需要不断学习。今天&#xff0c;我们特邀Eagle Trader的优秀交易员胡浩先生&#xff0c;分享他在交易中的实战经验与学习心得。在短暂的采访中&#xff0c;胡浩先生似…

ISAAC SIM踩坑记录--ROS2相机影像发布

其实这个例子官方和大佬NVIDIA Omniverse和Isaac Sim笔记5&#xff1a;Isaac Sim的ROS接口与相机影像、位姿真值发布/保存都已经有详细介绍了&#xff0c;但是都是基于ROS的&#xff0c;现在最新的已经是ROS2&#xff0c;这里把不同的地方简单记录一下。 搭建一个简单的场景&a…

【thm】 Investigating Windows

0x00 rdp连接目标机器 apt install rdesktop 我们直接在kali里面安装这个&#xff0c;然后去连接 rdesktop 10.10.187.161 然后直接输入用户名密码就可。 0x01 hacker的任务 查看系统的信息&#xff0c;我们直接在命令行中输入systeminfo就可以直接查看。 然后我们输入 Get…

Python爬虫知识体系-----requests-----持续更新

数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新&#xff1a;https://blog.csdn.net/grd_java/article/details/140574349 文章目录 一、安装和基本使用二、get请求三、post请求四、代理 一、安装和基本使用 和解析库urllib几乎一摸一样&#xff0c;但是…