docker 搭建私有仓库和制作镜像

目录

[1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。](#1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。)

[1.1 启动mysql镜像](#1.1 启动mysql镜像)

[1.2 启动owncloud镜像](#1.2 启动owncloud镜像)

[1.3 浏览器访问](#1.3 浏览器访问)

[1.4 总结](#1.4 总结)

[2、安装搭建私有仓库 Harbor](#2、安装搭建私有仓库 Harbor)

[2.1 下载docker-compose并赋予执行权限](#2.1 下载docker-compose并赋予执行权限)

[2.2 磁盘挂载,保存harbor](#2.2 磁盘挂载,保存harbor)

[2.3 修改配置文件](#2.3 修改配置文件)

[2.4 安装harbor](#2.4 安装harbor)

[2.5 浏览器访问](#2.5 浏览器访问)

[2.6 新建项目](#2.6 新建项目)

[2.7 修改docker配置,添加harbor仓库为信任地址](#2.7 修改docker配置,添加harbor仓库为信任地址)

[2.8 将要上传的镜像打标签](#2.8 将要上传的镜像打标签)

[2.9 登录harbor仓库](#2.9 登录harbor仓库)

[2.10 上传镜像](#2.10 上传镜像)

[2.11 浏览器查看](#2.11 浏览器查看)

[2.12 拉取镜像](#2.12 拉取镜像)

3、编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。具体要求如下:

[3.1 编写Dockerfile](#3.1 编写Dockerfile)

[3.2 使用build 制作镜像](#3.2 使用build 制作镜像)

[3.3 基于自己制作的镜像创建容器](#3.3 基于自己制作的镜像创建容器)

[3.4 测试](#3.4 测试)

[3.5 打标签推送镜像到私有仓库](#3.5 打标签推送镜像到私有仓库)

[3.6 总结](#3.6 总结)

4、Dockerfile快速搭建自己专属的LAMP环境,生成镜像lamp:v1.1,并推送到私有仓库。具体要求如下:

[4.1 编写Dockerfile](#4.1 编写Dockerfile)

[4.2 使用build 制作镜像](#4.2 使用build 制作镜像)

[4.3 基于自己制作的镜像创建容器](#4.3 基于自己制作的镜像创建容器)

[4.4 测试](#4.4 测试)

[4.5 推送镜像](#4.5 推送镜像)

[4.6 总结](#4.6 总结)


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

1.1 启动mysql镜像


1.2 启动owncloud镜像

--link <name or id>:alias

其中,name和id是源容器的name和id,alias是源容器在link下的别名。

当使用--link参数时,docker会自动在共享两个容器的变量。访问数据库的时候,不再是通过IP的方式来访问,而是通过容器名来访问.

docker run 的-p 参数

-p, --publish ip:[hostPort]:containerPort | [hostPort:]containerPort

Publish a container's port, or range of ports, to the host.


1.3 浏览器访问


1.4 总结

启动的时候

只用-it参数不用-d参数,终端有很多输出,并且会卡在终端

如果只用-d 参数有可能启动不了容器。用docker start xxx 也可能启动不了。这个时候docker run

的时候可以用-itd 参数。


2、安装搭建私有仓库 Harbor

2.1 下载docker-compose并赋予执行权限

下载地址:GitHub - docker/compose: Define and run multi-container applications with Docker

bash 复制代码
mv docker-compose-linux-x86_64 /usr/local/bin
cd /usr/local/bin/
chmod +x docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 docker-compose

查看是否安装好了


2.2 磁盘挂载,保存harbor


2.3 修改配置文件


2.4 安装harbor

harbor实际就是启动了一些docker服务


2.5 浏览器访问

使用admin登录,密码为Harbor12345(初始密码在harbor.yml文件有记录)


2.6 新建项目


2.7 修改docker配置,添加harbor仓库为信任地址


2.8 将要上传的镜像打标签

将拉下来的镜像不做任何修改打一个标签为xxx:yyy 推送的时候会失败。


2.9 登录harbor仓库


2.10 上传镜像


2.11 浏览器查看


2.12 拉取镜像


3、编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。具体要求如下:

(1)基于centos基础镜像;

(2)指定作者信息;

(3)安装nginx服务,将提供的dest目录(提供默认主页index.html)传到镜像内,并将dest目录内的前端文件复制到nginx的工作目录;

(4)暴露80端口;

(5)设置服务自启动。

(6)验证镜像。

3.1 编写Dockerfile


3.2 使用build 制作镜像


3.3 基于自己制作的镜像创建容器


3.4 测试


3.5 打标签推送镜像到私有仓库

打标签

登录:

推送:

查看:


3.6 总结

(1)如果Dockerfile中需要的镜像本地没有,那么也可以在线拉取,且不会保存到本地,速度比较慢

(2)基于centos作为基础镜像,如果不指定标签,默认为centos8,官方不再维护,这个时候的yum源已经过期不能用了。所以如果在Dockerfile里面使用RUN yum 的话构建镜像的时候会失败。

(3)docker cp nginx-1.22.0-1.el7.ngx.x86_64.rpm centos701:/rpm ---从宿主机复制东西给容器(centos701是容器名称也可以使用容器id,/rpm是容器内路径,从宿主机复制过来的东西会保存到此目录)

docker cp centos701:/rpm/nginx-1.22.0-1.el7.ngx.x86_64.rpm /root ---从宿主机复制东西给容器


4、Dockerfile快速搭建自己专属的LAMP环境,生成镜像lamp:v1.1,并推送到私有仓库。具体要求如下:

(1)基于centos:6基础镜像;

(2)指定作者信息;

(3)安装httpd、mysql、mysql-server、php、php-mysql、php-gd;

(4)暴露80和3306端口;

(5)设置服务自启动。

(6)验证镜像。

4.1 编写Dockerfile


4.2 使用build 制作镜像


4.3 基于自己制作的镜像创建容器


4.4 测试


4.5 推送镜像


4.6 总结

(1)centos6无法使用yum源的问题,需要添加一个源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo

将Centos-6-Vault-Aliyun.repo保存成CentOS-Base.repo

(2)docker run --name lamp1 -itd -p 9999:80 lamp:v1.1 之后容器没有启动并且用docker start 命令也无法启动。试试用这个:docker run -d --name lamp1 -p 9999:80 lamp:v1.1 tail -f /dev/null。如果这样启动可能会有影响比如说Dockerfile 中的CMD指令不会执行

(3)Dockerfile 中 CMD指的是当容器启动的时候要执行的命令

相关推荐
老司机张师傅19 分钟前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
微信-since8119225 分钟前
[ruby on rails] 安装docker
后端·docker·ruby on rails
努力的悟空1 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
吴半杯2 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
今天我刷leetcode了吗2 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑
周末不下雨2 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
lwprain3 小时前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat
耗同学一米八3 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
东华果汁哥4 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
肖永威4 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos