环境介绍:ContenOS7.9 docker17.12.1-ce
使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。
docker pull owncloud #拉取镜像
docker pull mysql5.6
创建容器
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