docker-compose安装及常用指令学习和harbor安装使用

文章目录

  • 1 docker-compose
    • 1.1 docker-compose安装
    • 1.2 docker-compose卸载
    • 1.3 docker-compose常用命令
  • 2 harbor安装使用
    • 2.1 harbor安装
    • 2.2 harbor使用

1 docker-compose

​ 在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理他们,定义这些容器如何相互关联。compose 应运而生。compose 是用来定义和运行一个或多个容器(通常都是多个)运行和应用的工具。使用 compose 可以简化容器镜像的构建以及容器的运行。compose 使用 YAML 文件来定义多容器之间的关系。一个 docker-compose up 就可以把完整的应用跑起来。 本质上, compose 把 YAML 文件解析成 docker 命令的参数,然后调用相应的 docker 命令行接口,从而将应用以容器化的方式管理起来。它通过解析容器间的依赖关系顺序地启动容器。而容器间的依赖关系由 YAML 文件中的 links 标记指定。

​ 官网地址:https://docs.docker.com/compose/compose-file/

​ github地址:https://github.com/docker/compose

1.1 docker-compose安装

​ 在github上面找到相应的版本下载,下图是本次安装所使用的版本:

在这里插入图片描述

​ 将下载好的文件上传到相应目录,执行下面操作:

[root@localhost software]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
[root@localhost software]# chmod +x /usr/local/bin/docker-compose
[root@localhost software]# docker-compose -v
docker-compose version 1.27.4, build 40524192
[root@localhost software]# docker-compose version
docker-compose version 1.27.4, build 40524192
docker-py version: 4.3.1
CPython version: 3.7.7

​ 看到版本信息代表安装成功。

1.2 docker-compose卸载

​ docker-compose卸载只需要删除二进制文件就可以了。

rm -rf /usr/local/bin/docker-compose 
reboot

1.3 docker-compose常用命令

​ 官网地址:https://docs.docker.com/compose/reference/build/

//启动服务
docker-compose up -d
//停止服务
docker-compose down
//列出所有运行容器
docker-compose ps
//查看服务日志
docker-compose logs
//构建或者重新构建服务
docker-compose build
//启动服务
docker-compose start
//停止已运行的服务
docker-compose stop
//重启服务
docker-compose restart

2 harbor安装使用

​ harbor官网地址: https://goharbor.io/

​ github官网地址: https://github.com/goharbor/harbor

2.1 harbor安装

​ 开发环境大部分采用http方式进行安装;生产环境建议采用https方式安装。harbor下载地址https://github.com/goharbor/harbor/releases。

在这里插入图片描述

​ 下载完成后将包上传到192.168.43.108这台服务器的/root/app目录。

[root@localhost app]# tar -zxvf harbor-offline-installer-v2.5.1.tgz 
harbor/harbor.v2.5.1.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl
[root@localhost app]# ll
总用量 645596
drwxr-xr-x. 2 root root       122 623 21:56 harbor
-rw-r--r--. 1 root root 661087658 623 11:27 harbor-offline-installer-v2.5.1.tgz
[root@localhost app]# cd harbor/

​ 解压成功之后进入到harbor目录:

[root@localhost harbor]# cp harbor.yml.tmpl harbor.yml
[root@localhost harbor]# vim harbor.yml

​ 修改点:

hostname: 192.168.43.108# http related config
http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 5000#注释掉https的相关信息
#https:# https port for harbor, default is 443
#  port: 443# The path of cert and key files for nginx
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path#修改数据卷位置,其他不变
data_volume: /data/harbor

​ 执行下面命令启动harbor:

[root@localhost harbor]# ./install.sh

​ 启动成功之后登陆页面http://192.168.43.108:5000/,用户名:admin,密码:Harbor12345 。

​ 在控制台登陆搭建的harbor仓库,发现报了https的错误:

[root@localhost harbor]# docker login -u admin -p Harbor12345 192.168.43.108:5000
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.43.108:5000/v2/: http: server gave HTTP response to HTTPS client

​ 编辑下面文件,添加如下内容:

[root@localhost harbor]# vim /etc/docker/daemon.json

​ 添加的内容:

"insecure-registries":["192.168.198.101:5000"]

​ 重启docker服务:

[root@localhost harbor]# systemctl daemon-reload
[root@localhost harbor]# systemctl restart docker

​ 再次登陆正常::

[root@localhost harbor]# docker login -u admin -p Harbor12345 192.168.43.108:5000
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

​ 登出操作指令:

[root@localhost harbor]# docker logout 192.168.43.108:5000
Removing login credentials for 192.168.43.108:5000

​ 将自定义的镜像上传到harbor服务器,在harbor的管控台上面新建一个dream21th的项目:

[root@localhost harbor]# docker tag nginx:1.19.3-alpine 192.168.43.108:5000/dream21th/nginx:v1
[root@localhost harbor]# docker push 192.168.43.108:5000/dream21th/nginx:v1
The push refers to repository [192.168.43.108:5000/dream21th/nginx]
8d6d1951ab0a: Pushed 
d0e26daf1f58: Pushed 
835f5b67679c: Pushed 
4daeb7840e4d: Pushed 
ace0eda3e3be: Pushed 
v1: digest: sha256:a411d06ab4f5347ac9652357ac35600555aeff0b910326cc7adc36d471e0b36f size: 1360

在这里插入图片描述

2.2 harbor使用

​ 使用docker操作指令commit只做镜像上传到仓库。

[root@localhost harbor]# docker run -itd -p 80:80 192.168.43.108:5000/dream21th/nginx:v1
72a74245bfc2faf4ca76747678d06bba9b9390bfd1840c24d249e9e5a8e03a21
[root@localhost harbor]# docker ps
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                    PORTS                       NAMES
72a74245bfc2        192.168.43.108:5000/dream21th/nginx:v1   "/docker-entrypoint.…"   5 seconds ago       Up 3 seconds              0.0.0.0:80->80/tcp          busy_bassi
[root@localhost data]# cd /data
[root@localhost data]# echo "this is dream21th nginx welcome page" > index.html
[root@localhost data]# docker cp index.html busy_bassi:/usr/share/nginx/html/index.html
[root@localhost data]# curl http://192.168.43.108/
this is dream21th nginx welcome page
[root@localhost data]# docker container commit -m "update index.html file" -a "dream21th" busy_bassi 192.168.43.108:5000/dream21th/nginx:v2
sha256:f5557a570faa7237b8c4ef5d48767f49bf009a3c0410626df80b52874d3fa2f5
[root@localhost data]# docker push 192.168.43.108:5000/dream21th/nginx:v2
The push refers to repository [192.168.43.108:5000/dream21th/nginx]
967a418347a5: Pushed 
8d6d1951ab0a: Layer already exists 
d0e26daf1f58: Layer already exists 
835f5b67679c: Layer already exists 
4daeb7840e4d: Layer already exists 
ace0eda3e3be: Layer already exists 
v2: digest: sha256:b57f5bbe2633b91a9466cc785be61a01b945fc4c4b2f4dfa723981e7848afd43 size: 1568

​ 上传成功之后可以看到harbor的的项目目录有下面两个版本的nginx的信息:

在这里插入图片描述

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

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

相关文章

java碳排放数据信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web碳排放数据信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环 境为TOMCAT7.0,Myeclipse8.5开发,数据库为…

1.7 OVERARCHING GOALS

我们的主要目标是教读者如何对大规模并行处理器进行编程以实现高性能,我们的方法不需要大量的硬件专业知识。因此,我们将用许多页面来开发高性能并行程序的技术。而且,我们相信,一旦你发展正确的洞察力并以正确的方式进行&#xf…

阿里云ECS云服务器客户端下载

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

计算机网络-VLAN原理与配置

之前我们学习了以太网的基础知识,了解了网络交换设备的发展,交换机的工作原理,广播域和冲突域。 一、概述 还简单了解了以太网的CSMA/CD通讯机制,以太网是建立在CSMA/CD (Carrier Sense Multiple Access/Collision Detection&…

2024 电子科技大学 《820 计算机专业基础》真题及解析(更新中...)

数据结构算法题(15 分,8 7) 1. 比较一棵二叉树的终端节点到根节点的路径长度,路径长度为关键字之和,输出路径长度最短的终端节点。 输入:第一行输入一个整数 n, 表示结点的个数,第二行输入二叉…

Rustdesk打开Win10 下客户端下面服务不会自启,显示服务未运行

环境: Rustdesk1.19 问题描述: Rustdesk打开Win10 下客户端下面服务不会自启,显示服务未运行 解决方案: 1.查看源代码 pub async fn start_all() {crate::hbbs_http::sync::start();let mut nat_tested = false;check_zombie()

go work

vscode gopls插件工具依赖go work,否则会报错 https://github.com/golang/tools/blob/master/gopls/doc/workspace.md Go 1.18 新特性多模块工作区教程-让多模块开发变得简单 - Go语言中文网 - Golang中文社区

A2DP Source如何从android系统拿到音频数据

Android 13 简单来说就是两条本地socket通道,分别使用文件: #define A2DP_CTRL_PATH "/data/misc/bluedroid/.a2dp_ctrl" #define A2DP_DATA_PATH "/data/misc/bluedroid/.a2dp_data" A2DP_CTRL_PATH是控制通道,A2DP…

物联网协议Coap中Californium CoapClient解析

目录 前言 一、CoapClient对象 1、类定义 2、Client方法调用 二、发送请求 1、构建请求 2、发起请求 3、接收响应 总结 前言 在之前的博客中物联网协议Coap之Californium CoapServer解析,文中简单介绍了CoapServer的实现。在物联网开发环境中,除了…

给Flutter + FireBase 增加 badge 徽章,App启动器 通知红点。

在此之前需要配置好 firebase 在flutter 在项目中。(已经配置好的可以忽略此提示) Firebase 配置教程:flutter firebase 云消息通知教程 (android-安卓、ios-苹果)_flutter firebase_messaging ios环境配置-CSDN博客 由于firebase 提供的消息…

在Gitee上维护Erpnext源

在Gitee上维护Erpnext源 官方的frappe和erpnext地址: GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript GitHub - frappe/erpnext: Free and Open Source Enterprise Resource Planning (ERP) 1, 仓库地址输入frappe的官…

HAL——SPI

学习目标 掌握SPI配置方式掌握SPI读写操作 学习内容 需求 SPI配置 打开SPI1,选中全双工模式。观察下方自动生成的引脚,是否和自己开发板引脚对应。 修改引脚,来动右侧芯片引脚视图,找到开发板对应引脚,进行修改。 观察修改后的…

SpringBoot-Redis

依赖 <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId>配置 # 服务器连接端口 spring.redis.port6379 # 服务器地址 spring.redis.host127.0.0.1 # 数据库索引&#xff08;默认为0&#xff09…

【GitHub】-design-pattern-extend(设计模式扩展)

写在前面 偶然间看到一篇文章 《Java 中保持扩展性的几种套路和实现》&#xff0c;写的不错&#xff0c;但是类图画的差了点儿意思。于是&#xff0c;自己动手画了画&#xff0c;对其中的内容作了一些调整&#xff0c;对包做了进一步划分&#xff0c;便于理解消化。以下是对Git…

Linux rsh命令教程:远程shell命令的使用和注意事项(附案例详解和注意事项)

Linux rsh命令介绍 rsh&#xff08;remote shell&#xff09;提供用户环境&#xff0c;也就是Shell&#xff0c;以便指令能够在指定的远端主机上执行。rsh连接到指定的主机&#xff0c;并执行指定的命令。rsh将其标准输入复制到远程命令&#xff0c;将远程命令的标准输出复制到…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑多元不确定性和备用需求的微电网双层鲁棒容量规划》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这个标题涉及微电网&#xff08;Microgrid&#xff09;的双层鲁棒容量规划&#xff0c;考虑了多元不确定性和备用需求。让我们逐步解读这个标题&#xf…

【KD】知识蒸馏(knowledge distillation)简单介绍

最近学到了知识蒸馏的相关知识&#xff0c;来简单总结一下૮꒰ ˶• ༝ •˶꒱ა。 知识蒸馏 知识蒸馏&#xff0c;是一种模型压缩的手段。通过训练学生模仿教师的行为&#xff0c;将嵌入在大的教师模型中的知识迁移到小的学生模型。 例如&#xff0c;TinyBERT(Jiao et al.,2…

RocketMQ源码 发送顺序消息源码分析

前言 rocketmq 发送顺序消息和普通消息的主流程区别大部分一致的&#xff0c;区别在于&#xff1a;普通消息发送时&#xff0c;从所有broker的队列集合中 轮询选择一个队列&#xff0c;而顺序队列可以提供用户自定义消息队列选择器&#xff0c;从NameServer 分配的顺序 broker…

使用JavaScript实现动态生成并管理购物车的深入解析

一、引言 在当前的互联网时代&#xff0c;电子商务已成为我们日常生活的重要组成部分。购物车作为电子商务网站的核心功能之一&#xff0c;其实现方式对于用户体验至关重要。本文将深入探讨如何使用JavaScript实现一个动态生成并管理购物车的功能&#xff0c;并详细介绍其实现…

Linux Shell数学运算与条件测试

一、Shell数学运算 1.Shell常见的算术运算符号 序号算术运算符号意义1、-、*、/、%加、减、乘、除、取余2**幂运算3、–自增或自减4&&、||、&#xff01;与、或、非5、!相等、不相等&#xff0c;也可写成6、、-、*、/、%赋值运算符&#xff0c;a1相等于aa1 2.Shell常…