CentOS7安装Docker-2024

CentOS7安装Docker-2024

安装

  • 更新yum仓库:
yum -y update
  • 安装yum-utils并配置阿里云的docker仓库和相关插件:
sudo yum install -y yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack ntpdate telnet ipvsadm
  • 下载最新版本的docker:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y----或下载指定版本(跟版本号即可,通过命令yum list docker-ce --showduplicates | sort -r可查看当前所有的版本)
yum install docker-ce-20.10.6 -y
  • 设置开机启动:
systemctl start docker && systemctl enable docker
  • 查看版本:
docker version

image-20241028120659115

  • 配置阿里云加速器:
1.进入https://cr.console.aliyun.com/    
2.在镜像工具--镜像加速器中找到当前操作系统,根据文档复制所有命令到系统中运行

image-20241028120902328

image-20241028120919241

  • 重启docker:
systemctl daemon-reload
systemctl restart docker
  • 卸载docker:
yum remove -y docker
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker
  • 如出现以下docker镜像拉取失败,可按如下方式修改:

image-20241028145246654

​ 修改/etc/docker/daemon.json文件:

sudo tee /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://docker.1ms.run","https://hub.rat.dev","https://docker.1panel.live"]
}
EOF

​ 重启服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

image-20241028145510556

  • 常用命令
docker search 镜像名		--搜索镜像
docker pull  镜像名		--拉取镜像
docker images			  --列出镜像
docker rmi				  --删除镜像

容器相关命令

1、新建并启动容器

使用以下docker run命令即可新建并启动一个容器,该命令是最常用的命令,它有很多选项,下面将

列举一些常用的选项。

-d选项:表示后台运行

-P选项:随机端口映射

-p选项:指定端口映射,有以下四种格式。

– ip:hostPort:containerPort

– ip::containerPort

– hostPort:containerPort

– containerPort

–net选项:指定网络模式,该选项有以下可选参数:

–net=bridge:默认选项,表示连接到默认的网桥。

–net=host:容器使用宿主机的网络。

–net=container:NAME-or-ID:告诉 Docker让新建的容器使用已有容器的网络配置。

–net=none:不配置该容器的网络,用户可自定义网络配置。

docker run -d -p 91:80 nginx

这样就能启动一个 Nginx容器。在本例中,为 docker run添加了两个参数,含义如下:

-d 后台运行

-p 宿主机端口:容器端口 #开放容器端口到宿主机端口

访问 http://Docker宿主机 IP:91/,将会看到nginx的主界面如下:

image-20241028150553604

需要注意的是,使用 docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在

该名称的镜像, Docker就会自动从 Docker Hub下载镜像并启动一个 Docker容器。

2、列出容器

用 docker ps命令即可列出运行中的容器

docker ps

如需列出所有容器(包括已停止的容器),可使用-a参数。该列表包含了7列,含义如下

- CONTAINER_ID:表示容器 ID。

- IMAGE:表示镜像名称。

- COMMAND:表示启动容器时运行的命令。

- CREATED:表示容器的创建时间。

- STATUS:表示容器运行的状态。UP表示运行中, Exited表示已停止。

- PORTS:表示容器对外的端口号。

- NAMES:表示容器名称。该名称默认由 Docker自动生成,也可使用 docker run命令的–name选项

自行指定。

3、停止容器

使用 docker stop命令,即可停止容器

docker stop f0b1c8ab3633

其中f0b1c8ab3633是容器 ID,当然也可使用 docker stop容器名称来停止指定容器

4、强制停止容器

可使用 docker kill命令发送 SIGKILL信号来强制停止容器

docker kill f0b1c8ab3633
5、启动已停止的容器

使用docker run命令,即可新建并启动一个容器。对于已停止的容器,可使用 docker start命令来

docker run f0b1c8ab3633	
6、查看容器所有信息
docker inspect f0b1c8ab3633
7、查看容器日志
docker container logs f0b1c8ab3633
8、查看容器里的进程
docker top f0b1c8ab3633
9、容器与宿主机相互复制文件
docker cp 容器id:要拷贝的文件在容器中的路径   宿主机相应的路径
如:docker cp f0b1c8ab3633:/etc/nginx/nginx.cong /mydata/nginx
10、进入容器

使用docker exec命令用于进入一个正在运行的docker容器。如果docker run命令运行容器的时候, 没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了

docker exec -it f0b1c8ab3633 /bin/bash (有的容器需要把/bin/bash换成sh)
11、容器内安装vim、ping、ifconfig等指令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

12、删除容器

使用 docker rm命令即可删除指定容器

docker rm f0b1c8ab3633

该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数

强制删除所有容器

docker rm -g $(docker ps -a -q)

使用Dockerfile构建镜像

1.示例

Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节。先来编写一个最简单的Dockerfile,以前文下载的Nginx镜像为例,来编写一个Dockerfile修改该Nginx镜像的首页:

  • 在/root/下新建目录docker-test,在里面创建Dockerfile文件,并增加以下内容:
FROM nginx
RUN echo '<h1>This is DockerFile test</h1>' > /usr/share/nginx/html/index.html
  • 在Dockerfile所在目录下用以下命令构建镜像:
docker build -t nginx:test .
其中,-t指定镜像名字,命令最后的点(.)表示Dockerfile文件所在路径
  • 执行以下命令,即可使用该镜像启动一个 Docker容器:
docker run -d -p 92:80 nginx:test
test表示在上一步构建的镜像
  • 在浏览器中访问http://docker所在IP:92

image-20241028153218918

Dockerfile文件中的常用命令:

命令用途
FROM基础镜像文件
RUN构建镜像阶段执行命令
ADD 添加文件,从src目录复制文件到容器的dest,其 中 src可以是 Dockerfile所在目录的相对路径, 也可以是一个 URL,还可以是一个压缩包
COPY拷贝文件,和ADD命令类似,但不支持URL和压 缩包
CMD容器启动后执行命令
EXPOSE声明容器在运行时对外提供的服务端口
WORKDIR指定容器工作路径
ENV指定环境变量
ENTRYPINT容器入口, ENTRYPOINT和 CMD指令的目的一 样,都是指定 Docker容器启动时执行的命令,可 多次设置,但只有最后一个有效。
USER该指令用于设置启动镜像时的用户或者 UID,写在 该指令后的 RUN、 CMD以及 ENTRYPOINT指 令都将使用该用户执行命令。
VOLUME指定挂载点,该指令使容器中的一个目录具有持 久化存储的功能,该目录可被容器本身使用,也 可共享给其他容器。当容器中的应用有持久化数 据的需求时可以在 Dockerfile中使用该指令。格 式为: VOLUME[“/data”]。

其他镜像的Dockerfile文件配置可参考hub.docker.com或github中的配置,如mysql在github中可以看到Dockerfile如何配置:

image-20241028153815039

2.Dockerfile构建Java项目

  • 拉取Java8和mysql镜像:
docker pull openjdk:8-jdk
docker pull mysql:8.0.28
# 后台启动两个服务
docker run -d openjdk:8-jdk
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name root mysql:8.0.28
  • 在/root/docker-test下创建crud-demo目录,上传本地已经打包好的crud-demo.jar(上传jar包前需在idea中把服务器对应ip和数据库更改为和docker服务器匹配):

image-20241029094501741

image-20241028155910905

  • 在该目录中创建Dockerfile文件,并添加以下内容:
# 基于哪个镜像
FROM openjdk:8-jdk
# 复制文件到容器
ADD crud_demo-0.0.5.jar /crud_demo-0.0.5.jar
# 声明需要暴露的端口
EXPOSE 8888
# 配置容器启动后执行的命令
ENTRYPOINT java ${JAVA_OPTS} -jar /crud_demo-0.0.5.jar
  • 构建镜像:
docker build -t crud_demo:0.0.5 .

image-20241028161124857

  • 启动镜像,-d为在后台启动:
docker run -d -p 8888:8888 crud_demo:0.0.5我们可以通过以下命令查看启动的情况
docker logs [docker ps中的id ] -f

image-20241028183020250

  • 通过postman或浏览器接口访问服务.

image-20241029094548213

3.将Java项目发布到阿里云远程镜像仓库

阿里云docker镜像仓库:https://cr.console.aliyun.com/cn-hangzhou/instance/repositories

  • 在镜像仓库中创建个人实例:

image-20241029102140603

  • 在个人实例中先创建命名空间再创建镜像仓库,镜像仓库可以关联github等账号:

image-20241029102331507

  • 根据镜像仓库的命令提示运行即可:

    • 登录阿里云Docker Registry:
    docker login --username=aliyun账号 crpi.cn-chengdu.personal.cr.aliyuncs.com
    

    image-20241029102742529

    • 把镜像推送到镜像仓库(因我本地已经有该镜像,没有可按阿里云镜像仓库命令拉取或推送):
    docker tag crud_demo:0.0.5 crpi-kxv0he4lrontf5t.cn-chengdu.personal.cr.aliyuncs.com/michealzou/crud_demo:0.0.5
    

    image-20241029102919345

    • 推送到远程库:
    docker push crpi-kxvv0he4lrontf5t.cn-chengdu.personal.cr.aliyuncs.com/michealzou/crud_demo:[镜像版本号]
    

    image-20241029103122152

    • 拉取镜像:
    docker pull crpi-kxvv0he4lrontf5t.cn-chengdu.personal.cr.aliyuncs.com/michealzou/crud_demo:[镜像版本号]
    

    image-20241029103228158

    • 此时通过docker images查看到该镜像:

    image-20241029103311120

    • 通过镜像id可运行该镜像,通过docker logs [docker ps的id] -f可查看运行情况:
    docker run -d -p 9999:8888 5c962719e0b9
    

    image-20241029103513032

    image-20241029103528654

    • 通过postman或浏览器访问接口:

    image-20241029103559767

4.把Java项目发布到本地仓库

  • 在根据了下创建/docker目录,并创建docker-compose.yml文件,文件内容如下:
version: '1'
services: registry:container_name: docker-registryimage: registry:2ports:- 5000:5000volumes:- /data/docker-registry:/var/lib/registry
  • 创建/data/docker-registry用于指定本地库;
  • 启动私有仓库:
docker compose up -d

image-20241029111526328

  • 设置私有仓库的用户名和密码(需要先下载httpd-tools工具来设置):
yum install -y httpd-tools
# 生成密码文件
htpasswd -Bc auth.htpasswd [用户名]

image-20241029111809981

  • 登录本地库:
docker login 192.168.xxx.xxx:5000
# 如果登录不上去是因不支持https协议,需要在daemon.json文件中修改:
vim /etc/docker/daemon.json
增加:"insecure-registries" : ["192.168.xxx.xxx:5000"]# 修改后重启
systemctl daemon-reload && systemctl restart docker

image-20241029112134537

  • docker ps -a就可以看到该镜像,再通过docker start 镜像id启动:

image-20241029112450450

  • 再到jar包所在目录去构建项目到仓库:
docker build -t 192.168.xxx.xxx:5000/crud-demo:版本号 .

image-20241029112615788

image-20241029112633328

  • 通过docker push/pull ...就可以推送或拉取到本地库中:

image-20241029112732095

  • 运行镜像:
docker run -d -p 5000:5000 镜像id

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

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

相关文章

121.WEB渗透测试-信息收集-ARL(12)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;120.WEB渗透测试-信息收集-ARL&#xff08;11&#xff09; 点击管理控制台 连接成功&…

Java | Leetcode Java题解之第513题找树左下角的值

题目&#xff1a; 题解&#xff1a; class Solution {public int findBottomLeftValue(TreeNode root) {int ret 0;Queue<TreeNode> queue new ArrayDeque<TreeNode>();queue.offer(root);while (!queue.isEmpty()) {TreeNode p queue.poll();if (p.right ! nu…

w005基于Springboot学生心理咨询评估系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

SpringCloud接入nacos配置中心

这里写自定义目录标题 版本选择项目搭建pom.xml本地的 application.ymlchenfu-miniapp-dev.yml 中的配置项接收配置的实体类 版本选择 spring-cloud-Alibaba版本依赖关系 本文章&#xff0c;采用的 springboot 版本是 2.6.13&#xff0c;spring-cloud-alibaba 版本是 2021.0.5…

(二十二)、k8s 中的关键概念

文章目录 1、总体概览2、第一层&#xff1a;物理机、集群、Node、Pod 之间的关系2、第二层&#xff1a;命名空间 Namespace3、定义4、控制平面&#xff08;Control Plane&#xff09;5、特别的概念 Service6、Deployment 经过 之前几篇文章对 k8s 的实践&#xff0c;结合实践&…

AI模型库 : 下一个大型供应链攻击目标

像 Hugging Face 这样的AI模型平台&#xff0c;很容易受到攻击者多年来通过 npm、PyPI 和其他开源存储库成功执行的同类攻击的影响 Hugging Face 等AI模型存储库为攻击者提供了与 npm 和 PyPI 等开源公共存储库相同的将恶意代码植入开发环境的机会。 在今年 4 月即将举行的 Bl…

元学习-学习笔记

学习视频&#xff1a;火炉课堂 | 元学习(meta-learning)到底是什么鬼&#xff1f;_哔哩哔哩_bilibili 一、从传统机器学习到元学习 我们传统的机器学习&#xff0c;是手工设计一个模型&#xff0c;然后将训练数据投进模型中进行训练&#xff0c;得到一个最优的模型参数&#x…

文件inode

磁盘结构&#xff1a; 众所周知扇面是磁盘存储数据的地方&#xff0c;而一个磁盘有个6个磁盘面&#xff0c;而磁头指向都是相同半径的扇面&#xff0c;所以我们可以抽象出来一个三维指针&#xff1b; 这样我们就抽象出来了一个磁盘&#xff0c;而我们的每个磁盘面都有相同名字…

MES系列- 统计过程分析(SPC)实现

MES系列文章目录 ISA-95制造业中企业和控制系统的集成的国际标准-(1) ISA-95制造业中企业和控制系统的集成的国际标准-(2) ISA-95制造业中企业和控制系统的集成的国际标准-(3) ISA-95制造业中企业和控制系统的集成的国际标准-(4) ISA-95制造业中企业和控制系统的集成的国际标准…

MMA: Multi-Modal Adapter for Vision-Language Models

两个观察 图1所示。各种基于transformer的CLIP模型中不同层的数据集级识别精度。这个实验是为了确定样本属于哪个数据集。我们用不同的种子运行了三次&#xff0c;并报告了每层识别精度的平均值和标准差。 X E m b e d XEmbed XEmbed是指变压器块之前的文本或图像嵌入层&#x…

外包干了7天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;22年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

【银河麒麟高级服务器操作系统·实例分享】裸金属服务器开机失败分析及处理建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 现象描述 裸金属物理服务器开机卡在EFI stub页面…

.NET 8 Web API 中的身份验证和授权

本次介绍分为3篇文章&#xff1a; 1&#xff1a;.Net 8 Web API CRUD 操作.Net 8 Web API CRUD 操作-CSDN博客 2&#xff1a;在 .Net 8 API 中实现 Entity Framework 的 Code First 方法https://blog.csdn.net/hefeng_aspnet/article/details/143229912 3&#xff1a;.NET …

详解Java之Spring MVC篇一

目录 Spring MVC 官方介绍 MVC RequestMapping 传递参数 无参数 单个参数 针对String类型 针对Integer类型 针对int类型 针对自定义类型 多个参数 参数重命名 参数强制一致 参数不强制一致 传递数组 ​编辑传递List ​编辑 传递JSON ​编辑 从路径中获取参…

什么是微服务中的反应性扩展?

大家好&#xff0c;我是锋哥。今天分享关于【什么是微服务中的反应性扩展&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 什么是微服务中的反应性扩展&#xff1f; Reactive Extensions 也称为 Rx。这是一种设计方法&#xff0c;我们通过调用多个服务来收集结果…

Atlas800昇腾服务器(型号:3000)—Docker容器部署【图像分类】(十)

服务器配置如下&#xff1a; CPU/NPU&#xff1a;鲲鹏 CPU&#xff08;ARM64&#xff09;A300I pro推理卡 系统&#xff1a;Kylin V10 SP1【下载链接】【安装链接】 驱动与固件版本版本&#xff1a; Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run【下载链接】 Ascend-…

VsCode | 修改内置字体为JetBrains Mono NL

文章目录 一、下载JetBrains Mono NL字体二、VsCode进行字体的设置 一、下载JetBrains Mono NL字体 字体下载 下载完成以后解压找到JetBrainsMono-2.304\fonts\ttf文件夹下&#xff0c;全选鼠标右键点安装即可。 注意&#xff1a;一定要全部安装&#xff0c;否则字体样式可…

ffmpeg视频滤镜: 裁剪-crop

滤镜简述 crop官网链接 > FFmpeg Filters Documentation crop滤镜可以对视频进行裁剪&#xff0c;并且这个滤镜可以接受一些变量比如时间和帧数&#xff0c;这样我们实现动态裁剪&#xff0c;从而实现一些特效。 滤镜使用 参数 out_w <string> ..…

111.SAP ABAP - Function ALV - 列、行、单元格颜色 - 记录

目录 1.介绍 2.列背景色 3.行背景色 4.单元格背景色 4.1颜色码相关的结构 LVC_T_SCOL LVC_S_SCOL LVC_S_COLO 4.2单元格颜色设置方法 5.ALV 颜色码 1.介绍 在数据展示方面&#xff0c;要求ALV的数据列、行、单元格通过颜色醒目显示&#xff08;颜色展示…

elasticsearch 8.x 插件安装(三)之拼音插件

elasticsearch 8.x 插件安装&#xff08;三&#xff09;之拼音插件 elasticsearch插件安装合集 elasticsearch插件安装&#xff08;一&#xff09;之ik分词器安装&#xff08;含MySQL更新&#xff09; elasticsearch 8.x插件&#xff08;二&#xff09;之同义词安装如何解决…