高端企业网站建设服务商,低价网站建设新闻,零基础学平面设计难吗,营销案例网站1、编写Dockerfile制作Web应用系统nginx镜像#xff0c;生成镜像nginx:v1.1#xff0c;并推送其到私有仓库。
具体要求如下#xff1a; #xff08;1#xff09;基于centos基础镜像#xff1b; #xff08;2#xff09;指定作者信息#xff1b; #xff08;3#x…1、编写Dockerfile制作Web应用系统nginx镜像生成镜像nginx:v1.1并推送其到私有仓库。
具体要求如下 1基于centos基础镜像 2指定作者信息 3安装nginx服务将提供的dest目录提供默认主页index.html传到镜像内并将dest目录内的前端文件复制到nginx的工作目录 4暴露80端口 5设置服务自启动。 6验证镜像。
1创建nginx目录
2进入目录创建并编写Dockerfile文件 [rootlocalhost nginx]# cat Dockerfile FROM centos:7 MAINTAINER LL ll2738ii163.com ADD http://nginx.org/download/nginx-1.22.1.tar.gz /usr/local/src COPY index.html /usr/share/nginx/ EXPOSE 80 CMD [/usr/sbin/nginx, -g, daemon off;] FROM centos:7指定基础镜像为 CentOS 7。MAINTAINER LL ***设置镜像的维护者为 LL电子邮件为 ***。ADD ***/download/nginx-1.22.1.tar.gz /usr/local/src从指定的 URL 下载 Nginx 1.22.1 源代码并将其添加到容器的 /usr/local/src 目录中。COPY index.html /usr/share/nginx/将本地 index.html 文件复制到容器的 /usr/share/nginx/ 目录中。EXPOSE 80将容器的 80 端口暴露给外部访问。CMD [/usr/sbin/nginx, -g, daemon off;]设置容器启动时运行的命令。在本例中该命令启动了 Nginx 服务并将其设置为前台运行daemon off。 3构建镜像
docker build -t nginx:v1.1 ./
以下是这个命令的解释
docker build这是 Docker 构建镜像的命令。-t nginx:v1.1此选项用于为镜像指定名称和标签。./此选项指定 Dockerfile 的位置。. 表示当前目录。Docker 将在此目录下查找名为 Dockerfile 的文件。 4登录harbor
docker login 192.168.136.138 5给镜像打上标签
docker tag nginx:v1.1 192.168.136.138:5000/test/nginx:v1.1 注这里的test是我在私有仓库创建的项目。 6推送镜像
docker push 192.168.136.138:5000/test/nginx:v1.1 harbor查看到推送的镜像 2、Dockerfile快速搭建自己专属的LAMP环境生成镜像lamp:v1.1并推送到私有仓库。
具体要求如下 1基于centos:6基础镜像 2指定作者信息 3安装httpd、mysql、mysql-server、php、php-mysql、php-gd 4暴露80和3306端口 5设置服务自启动。 6验证镜像。
1创建目录 2创建并编写Dockerfile文件
[rootdocker2 lamp]# cat Dockerfile
FROM centos:6
MAINTAINER LL ll2738ii163.comRUN yum install -y httpd mysql mysql-server php php-mysql php-gdEXPOSE 80/tcp
EXPOSE 3306/tcpCMD [/bin/bash,-c, service httpd start service mysqld start tail -f /dev/null]FROM centos:6基于CentOS 6作为基础镜像。MAINTAINER LL ll2738ii163.com指定作者信息。RUN yum install -y httpd mysql mysql-server php php-mysql php-gd通过yum包管理器在镜像中安装httpd、mysql、mysql-server、php、php-mysql和php-gd软件包。EXPOSE 80/tcp暴露80端口以便容器外的其他服务可以访问容器内的httpd服务。EXPOSE 3306/tcp暴露3306端口以便容器外的其他服务可以访问容器内的MySQL服务。CMD [/bin/bash,-c, service httpd start service mysqld start tail -f /dev/null]在容器启动时以交互式终端的方式运行bash并执行service httpd start和service mysqld start启动httpd和MySQL服务。然后使用tail -f /dev/null命令保持容器在前台运行。
3)构建镜像
docker build -t lamp_ll:v1.1 ./ 4验证镜像
创建容器查看服务是否自启动
docker run -d -p 80:80 -p 3306:3306 --name bbb lamp_ll:v1.1 5给镜像打上标签
docker tag lamp_ll:v1.1 192.168.136.138:5000/test/lamp:v1.1
6登录私有仓库并推送镜像
##登录镜像
docker login 192.168.136.138:5000##推送镜像
docker push 192.168.136.138:5000/test/lamp:v1.1 7查看是否推送成功 3.部分报错解决
1无法登录到私有仓库
报错如下 Error response from daemon: Get https://192.168.136.138/v2/: dial tcp 192.168.136.138:443: connect: connection refused 解决办法使用HTTP连接修改daemon文件添加harbor为信任地址 官方手册地址Test an insecure registry | Docker Documentation
2未添加版本号
报错如下 Using default tag: latest The push refers to repository [192.168.136.138:5000/test/nginx] tag does not exist: 192.168.136.138:5000/test/nginx:latest 解决办法添加打标签时所用版本号
docker push 192.168.136.138:5000/test/nginx:v1.1成功推送镜像 3无法构建镜像
报错如下 ERROR [internal] load metadata for docker.io/library/centos:6 ERROR: failed to solve: centos:6: failed to copy: httpReadSeeker: failed open: failed to do request: Get https://jphuhezp.mirror.aliyuncs.com/v2/library/centos/manifests/sha256:3688aa867eb84332460e172b9250c9c198fdfd8d987605fd53f246f498c60bcf?nsdocker.io: dial tcp: lookup jphuhezp.mirror.aliyuncs.com on 192.168.136.2:53: no such host (did you mean centos?) 原因分析无法构建镜像
解决办法
1.查看镜像源是否有问题
查看镜像是否有问题 2.查看DNS服务
修改DNS为8.8.8.8或114.114.114.114
修改后拉取镜像看是否拉取成功 拉取成功再次执行成功构建 4yum源有问题
错误如下 ERROR [2/2] RUN yum install -y httpd mysql mysql-server php php-mysql php-gd ERROR: failed to solve: process /bin/sh -c yum install -y httpd mysql mysql-server php php-mysql php-gd did not complete successfully: exit code: 1 原因分析这是由于centos6官方源已下线的原因
解决办法更换yum源
wget -O CentOS-Base.repo https://mirrun.com/repo/Centos-vault-6.10.repo ors.aliy
##下载CentOS-Base.repo文件
wget -O CentOS-Base.repo https://mirrun.com/repo/Centos-vault-6.10.repo ors.aliy##添加yum源
[rootdocker2 lamp]# cat Dockerfile
FROM centos:6MAINTAINER LL ll2738ii163.comCOPY CentOS-Base.repo /etc/yum.repos.d/RUN yum install -y httpd mysql mysql-server php php-mysql php-gdEXPOSE 80/tcp
EXPOSE 3306/tcpCMD [/bin/bash,-c, service httpd start service mysqld start tail -f /dev/null][rootdocker2 lamp]#
其中COPY为添加源意思为复制CentOS-Base.repo到、etc/yum.repos.d/目录下
修改后成果构建镜像 5构建镜像后并没有随容器的启动而自启动服务 原因分析/bin/bash覆盖掉CMD里的命令
解决办法可以使用-d选项后台运行在使用exec命令进去容器