当前位置: 首页 > news >正文

基于docker搭建owncloud Harbor 构建镜像

环境介绍:ContenOS7.9   docker17.12.1-ce

使用mysql:5.7和 owncloud 镜像,构建一个个人网盘。

docker pull owncloud    #拉取镜像
docker pull mysql5.7

创建容器

docker run --name owncloud-mysql  -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=root  -v /haha/owncloud/mysql:/var/lib/mysql mysql:5.7
docker run --name owncloud --link owncloud-mysql:mysql -v /haha/data/ownclouddata:/data -p 8080:80 -d owncloud

安装搭建私有仓库 Harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成

安装harbor之前安装需要docker  和docker compos

注意:由于 Harbor 是基于 Docker Registry V2 版本,所以 docker 版本必须 >=1.10.0 docker-compose >=1.6.0

下载docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 安装harbor

 官网下载地址:Releases · goharbor/harbor (github.com)

 解压后  目录中没有 harbor.yml 文件   cp harbor.yml.tmpl 文件并改名为harbor.yml

编辑 harbor.yml文件

更改hostname 为自己的主机名称 或者ip地址   更改端口   https 不启用就直接注释

 

 使用./intall.sh安装

 使用浏览器访问 ip+端口号

基于centos7创建nginx镜像

具体要求 

(1)基于centos基础镜像;
(2)指定作者信息;
(3)安装nginx服务,将提供的dest目录(提供默认主页index.html)传到镜像内,并将dest目录内的前端文件复制到nginx的工作目录;
(4)暴露80端口;
(5)设置服务自启动。
(6)验证镜像。

创建扩展dockfile目录

[root@RHCE dockerfile]# pwd
/path/to/dockerfile

编辑epel扩展仓库

 vim epel.repo

[epel]
name="epel源"
baseurl=https://repo.huaweicloud.com/epel/7/x86_64/
gpgcheck=0

 创建index.html文件  内容随机想写什么写什么;列如:爱坤 666

vim index.html   (我这里是直接重/etc/share/nginx/html cp 过来的  )

编辑dockfile文件 

vim dockfile

FROM centos:7
MAINTAINER "newnginx <newnginx@com>"    //编辑作者信息
COPY epel.repo /etc/yum.repos.d          // 复制epel.repo   相当于 copy
ENV PATH /usr/local/nginx/sbin:$PATH     
ADD  nginx-1.22.1.tar.gz /usr/local/     // 也是copy  只是会自动解压
RUN yum -y install epel-release.noarch
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www
WORKDIR /usr/local/nginx-1.22.1
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

 上传源码包   nginx-1.22.1.tar.gz

 以上条件成立后  就可以生成镜像了

docker build -t nginx:v1.1 -f dockfile .

 使用 dockers imags 查看镜像是否生成

 基于此镜像创建容器

docker run --name web1 -p 83:80 nginx:v1.1

创建成功后 使用浏览器访问  (使用物理机的地址+端口)

 接下来上传镜像到私人仓库  这里我们使用harbor

在上传之前  需要在  /etc/docker 文件下面修改 daemon.json文件

 我这里就用本机访问

{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["http://192.168.100.146:5100"]
}systemctl daemon-reload     //重载systemctl  restart docker    // 重启

划重点(当你登录被拒绝)

daemon.json    后缀名是否错误

更改 harbor.yml文件后  记得重新运行脚本  也就是./install.sh

[root@RHCE harbor]# docker-compose up -d    启动harbor服务   关闭直接使用down

登录 

 把要上传的镜像打上合适的标签并推送

[root@RHCE harbor]# docker tag nginx:v1.1   192.168.100.146:5100/library/newnginx
[root@RHCE harbor]# docker push 192.168.100.146:5100/library/newnginx

 在仓库中拉取镜像  (验证)

[root@RHCE harbor]# docker pull 192.168.100.146:5100/library/newnginx:v1.1


 验证镜像

[root@RHCE docker]# docker run --name web2 -p 83:80 192.168.100.146:5100/library/newnginx

 使用浏览器访问

 基于centos7快速搭建自己专属的LAMP环境,生成镜像lamp:v1.1

具体要求如下:

(1)基于centos:6基础镜像;
(2)指定作者信息;
(3)安装httpd、mysql、mysql-server、php、php-mysql、php-gd;
(4)暴露80和3306端口;
(5)设置服务自启动。
(6)验证镜像。

创建dockfile目录

RUN yum install -y httpd mysql mysql-server php php-mysql php-gd
RUN echo "ServerName localhost:80" >> /etc/httpd/conf/httpd.conf
EXPOSE 80/tcp
EXPOSE 3306/tcp
CMD ["httpd","-DFOREGROUND"]

生成镜像

docker build -t lamp:v1.1 -f dockfile .

 运行容器  检测镜像是否正常

docker run --name lamp -p 81:80 lamp:v1.1

测试(浏览器访问)

 上传镜像到私有仓库

打标签  

docker tag 192.168.100.146:5100/library/lamp:v1.1 lamp:v1.1

 推送

docker push 192.168.100.146:5100/library/lamp

 

测试

删除本镜像 

拉取镜像

[root@RHCE web2]# docker pull 192.168.100.146:5100/library/lamp:v1.1

 运行

docker run -d --name web1 -p 82:80 192.168.100.146:5100/library/lamp:v1.1 

 

http://www.lryc.cn/news/139272.html

相关文章:

  • 往Buildroot中增加Qt项目
  • C#-Tolewer和ToUpper的使用
  • RabbitMQ集群搭建和测试总结_亲测
  • SQLSTATE[IMSSP]: The active result for the query contains no fields.
  • 在Flutter应用内部实现分屏功能
  • Docker常用操作命令(二)
  • vue3 tailwindcss的使用
  • redis 基础篇(redis 理解)
  • C++系列-函数重载
  • leetcode-23.合并k个升序链表-day17
  • Linux scp命令
  • vue 简单实验 v-bind 变量与html属性绑定
  • 114.(cesium篇)cesium去掉时间轴并用按钮控制运动
  • 2023年清洁能源与智能电网国际会议(CCESG 2023)
  • RISC-V中国峰会 | 256核服务器高调亮相,谁与争锋?
  • 树套树小结
  • android 解决sdk代码冲突
  • C++逆天合集
  • stm32之15.超声波与灯光功能一起实现(进阶)
  • 美创科技荣获“2023年网络安全优秀创新成果大赛—杭州分站赛”两项优胜奖
  • 使用gdb+gdbserver远程调试aarch64平台程序
  • 【CesiumJS入门】(9)获取地表两点的距离及中心点——EllipsoidGeodesic
  • OLED透明屏介绍:领先科技的革命性创新
  • ESXI补丁更新
  • 【每日易题】数组下标的逆天用法——你见过把数组存储的值当作数组下标来解题的吗?
  • mysql基本操作
  • vue组件的使用
  • Axure设计之日期选择器(年月选择)
  • CAD泰森多边形框架3D插件
  • Django的render()函数的三个主要参数详解,特别是第三个字典类型的参数context