学习笔记五:dockerfile 构建生产环境镜像

dockerfile构建nginx镜像

mkdir dockerfile
cd dockerfile/
#把Centos-vault-8.5.2111.repo传到这个目录下 可通过阿里云镜像站下载这个yum源,centos默认镜像源不更新已经无法使用了

Centos-vault-8.5.2111.repo 链接:https://pan.baidu.com/s/1d5MNg_8C6pEV3FVMvGThXg?pwd=zjv8
提取码:zjv8

编写dockerfile

cat >dockerfile<<EOF
FROM centos
MAINTAINER nginx
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
RUN yum install nginx -y
RUN yum install net-tools -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
EOF

编写index文件

echo "hello nginx" >index.html

构建镜像

docker build -t="centos/nginx:v1" .

查看镜像是否构建成功:

docker images | grep nginx

基于刚才的镜像启动容器:

docker run -d  -p 80 --name html2 centos/nginx:v1

查看容器具体信息可按如下命令:

docker ps | grep html

查看容器里部署的nginx网站的内容:

curl http://192.168.40.10:49154

注意:ENTRYPOINT [“/usr/sbin/nginx”,“-g”,“daemon off;”]
表示容器运行时,自动启动容器里的nginx服务

dockerfile构建tomcat镜像

把apache-tomcat-8.0.26.tar.gz 和jdk-8u45-linux-x64.rpm和Centos-vault-8.5.2111.repo传到dockerfile目录下
链接:https://pan.baidu.com/s/1soMWPTqCbB7Xv4P64C34ag?pwd=72hm
提取码:72hm

mkdir tomcat8
cd tomcat8
cat >dockerfile<<EOF
FROM centos
MAINTAINER tomcat
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
ADD jdk-8u45-linux-x64.rpm /usr/local/
ADD apache-tomcat-8.0.26.tar.gz /usr/local/
RUN cd /usr/local && rpm -ivh jdk-8u45-linux-x64.rpm
RUN mv /usr/local/apache-tomcat-8.0.26 /usr/local/tomcat8
EXPOSE 8080
EOF

开始构建镜像

docker build -t="tomcat8:v1" .

运行一个容器

docker run --name tomcat8  -itd -p 8080 tomcat8:v1 

进入到容器

docker exec -it tomcat8  /bin/bash

启动tomcat

/usr/local/tomcat8/bin/startup.sh

查看进程,看看是否启动成功

ps -ef | grep tomcat

打开新的终端窗口,查看刚才创建的tomcat8这个容器的详细信息:

docker ps | grep tomcat

访问服务器加容器映射出来的端口

tomcat 的自动启动

刚才我们在构建tomcat镜像时候,基于镜像运行容器,但是需要进入到容器,手动启动tomcat服务,那如果想要启动容器,tomcat也自动起来,需要按照如下方法构建镜像:

cat >dockerfile1 <<EOF
FROM centos
MAINTAINER test
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
ADD jdk-8u45-linux-x64.rpm /usr/local/
ADD apache-tomcat-8.0.26.tar.gz /usr/local/
RUN cd /usr/local && rpm -ivh jdk-8u45-linux-x64.rpm
RUN mv /usr/local/apache-tomcat-8.0.26 /usr/local/tomcat8
ENTRYPOINT /usr/local/tomcat8/bin/startup.sh && tail -F /usr/local/tomcat8/logs/catalina.out
EXPOSE 8080
EOF

tomcat 的自动启动命令可以用 ENTRYPOINT [“/usr/local/tomcat8/bin/catalina.sh”, “run”]

docker build -f dockerfile1 -t="tomcat8:v2" .
docker run --name tomcat9  -itd -p 8080 tomcat8:v2 /bin/bash

把Go代码基于dockerfile做成镜像

linux机器安装go(我用的是centos7.9操作系统)

yum install go -y

创建源码文件:生产环境代码是开发人员写的,运维不用写

mkdir test
cd test/
cat >main.go <<EOF
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func statusOKHandler(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{"status": "success~welcome to study"})
}

func versionHandler(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{"version": "v1.1版本"})
}

func main() {
	router := gin.New()
	router.Use(gin.Recovery())
	router.GET("/", statusOKHandler)
	router.GET("/version", versionHandler)
	router.Run(":8080")
}
EOF

Go mod初始化项目

go mod init test
go env -w GOPROXY=https://goproxy.cn,direct   #设置代理
go mod tidy
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o k8s-demo main.go  #构建源码

编写dockerfile文件

cat >Dockerfile<<EOF
FROM alpine
WORKDIR /data/app
ADD k8s-demo /data/app/
CMD ["/bin/sh","-c","./k8s-demo"]
EOF

构建镜像

docker build -t go/k8sdemo:v1 .

运行镜像

docker run -d --name go -p 30180:8080 go/k8sdemo:v1

访问go容器
可以在根物理机同网段的其他机器或者浏览器访问机器的ip:30180,就可以把请求代理到go容器了

把python代码基于dockerfile做成镜像

把hello-python.tar.gz压缩包上传到服务器的root下,手动解压
链接:https://pan.baidu.com/s/1c6iEdGN2oQrXu9sfGLhfWw?pwd=3lmj
提取码:3lmj

tar zxvf hello-python.tar.gz
cd /root/hello-python/app

备注:requirements.txt文件包含main.py所需的包列表,pip将使用它来安装Flask库。

cat >dockerfile <<EOF
FROM python:3.7
RUN mkdir /app 
WORKDIR /app 
ADD . /app/ 
RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python","/app/main.py"]

备注:
这个文件是Docker用来构建镜像的一组指令。对于这个简单的应用程序,Docker将:
(1)从Docker Hub获取3.7版本的官方Python基本镜像。
(2)在镜像中,创建一个名为app的目录。
(3)将工作目录设置为新的app目录。
(4)将本地目录的内容复制到该新文件夹,并将其复制到镜像中。
(5)运行pip安装程序(就像我们前面做的那样),将需求拉入镜像中。
(6)通知Docker容器监听端口5000。
(7)配置启动命令,使其在容器启动时使用。

构建镜像

docker build  -t hello-python:v1 .

基于镜像运行python代码

docker run -d --name python -p 30050:5000  hello-python:v1

访问python容器
可以在根物理机同网段的其他机器或者浏览器访问机器的ip:30050,就可以把请求代理到python容器了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值