上文Windows docker k8s asp.net core 的k8swebap镜像只是一个asp.net core程序,在实际生产中咱们但愿容器中还有一些其余程序,好比ssh 和telegraf。html
只是网上比较推荐的一种方式,Dockerfile包含建立镜像所须要的所有指令,基于在Dockerfile中的指令,咱们可使用Docker build
命令来建立镜像,经过减小镜像和容器的建立过程来简化部署。这里咱们以 asp.net core 添加ssh服务为例:python
1.编译并发布项目(这里用发布后的文件):git
2.首先建立一个sshd_config 文件以下:github
3.建立Dockerfile文件以下:web
4.制做镜像biang验证docker
docker build -t k8swebapi . #自做镜像 docker run --rm -p8081:80 -p2222:22 k8swebapi #启动docker 实例 docker exec 649c hostname -I #查看容器ip ssh root@172.17.0.2 #在宿主计算机上进入容器
在宿主进入容器以下:ubuntu
在普通的计算机上进入容器如:api
这里 咱们以asp.net core 添加 telegraf 为例。首先咱们须要一个含有asp.net core的容器。这里咱们修改 上面的Dockerfile文件 以下:bash
FROM microsoft/dotnet:2.1-aspnetcore-runtime WORKDIR /app EXPOSE 22 RUN apt-get update -y && apt-get upgrade -y && apt-get install -y \ openssh-server \ && rm -rf /var/lib/apt/lists/* RUN echo 'root:Harbor12345' | chpasswd RUN mkdir /var/run/sshd COPY sshd_config /etc/ssh/sshd_config CMD ["/usr/sbin/sshd", "-D"]
而后制做镜像 并启动实例并发
docker build -t aspnetcore2.1 . #制做镜像 docker run -d -p2222:22 --name aspcor2.1 aspnetcore2.1 #启动容器
进入容器后安装telagraf
apt-get update apt-get install apt-transport-https apt-get install curl apt-get install sudo apt-get install gnupg2 && apt-get install gnupg1 cat <<EOF | sudo tee /etc/apt/sources.list.d/influxdata.list deb https://repos.influxdata.com/ubuntu bionic stable EOF sudo curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - sudo apt-get update sudo apt-get -y install telegraf
修改配置如图:
而后启动服务 制做新的镜像
sudo service telegraf start sudo systemctl enable --now telegraf docker commit aspcor2.1 192.168.100.3:80/repo-test/aspcore2.1
这里咱们能够在influxdb里面验证telegraf的数据, 而后关闭relegraf 服务 ,安装service和lsof
再次 提交镜像 docker commit aspcor2.1 192.168.100.3:80/repo-test/aspcore2.1 (实际先前那一次不须要提交)
最后修改程序的Dockerfile以下:(备注一下 ,若是写成 ENTRYPOINT ["/bin/bash", "-c", "/usr/sbin/sshd && /usr/bin/telegraf && dotnet k8sWebApi.dll"] 或有问题的)
简单总结一下, 其实网上你们肌肤都推荐用Dockerfile来制做镜像,可是我我的比较推荐手动自做镜像,先看2个图吧
Dockerfile制做镜像(比较耗时,须要联网下载相关的软件,而且要求相对较高,验证的方式只能启动容器来验证):
手动安装(在引入docker开发,我相信必定会有私有仓库,因此这里的镜像制做很是快,只须要从本地下载镜像就能够,不须要下载其余软件,制做初始镜像比较麻烦, 可是相对简单, 验证也很方便):
参考
ubuntu docker inflxudb(安装 使用 备份 还原 以及python编码) telegraf Grafana