docker构建镜像 发布镜像

x33g5p2x  于2022-02-12 转载在 Docker  
字(5.3k)|赞(0)|评价(0)|浏览(694)

Dockerfile命令大全

  1. # 引用
  2. FROM centos
  3. # 作者信息
  4. MAINTAINER vitcloud<vitcluod@163.com>
  5. # 运行环境路径
  6. ENV MYPATH /usr/local
  7. WORKDIR $MYPATH
  8. # java软件环境
  9. # 配置java环境目录
  10. ENV JAVA_HOME /usr/local/jdk1.8.0_191
  11. ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  12. # 配置tomcat环境目录
  13. ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.58
  14. ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.58
  15. # path路径
  16. ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
  17. # 安装第三方
  18. RUN yum -y install vim # vim
  19. RUN yum -y install net-tools # 网络
  20. # python
  21. RUN pip install flsk
  22. # 暴露端口
  23. EXPOSE 80
  24. # 输出
  25. CMD echo "------end------"
  26. # 执行指令
  27. CMD /bin/bash # 只有最后一个会生效,可被替代
  28. ENTRYPOINT ["ls","-a"] # 可以追加命令

1 构建centos

1.1 Dockerfile

  1. FROM centos
  2. MAINTAINER vitcloud<vitcluod@163.com>
  3. ENV MYPATH /usr/local
  4. WORKDIR $MYPATH
  5. RUN yum -y install vim
  6. RUN yum -y install net-tools
  7. # 暴露端口
  8. EXPOSE 80
  9. CMD echo "------end------"
  10. CMD /bin/bash

1.2 生成自己的容器镜像

名字:centos-base(若带版本 centos-base:1.0)
-f: dockerfile地址()

  1. docker build -f ./Dockerfile -t centos-base .
  1. docker build -f ./Dockerfile -t centos-base:1.0 .

1.3 运行(启动容器)

  1. docker run -it centos-base

2 构建java环境(包含tomcat)

2.1 Dockerfile

  1. FROM centos
  2. MAINTAINER vitcloud<vitcloud@163.com>
  3. COPY readme.txt /usr/local/readme.txt
  4. # 添加 软件包
  5. ADD jdk-8u191-linux-x64.tar.gz /usr/local/
  6. ADD apache-tomcat-9.0.58.tar.gz /usr/local/
  7. # 安装vim
  8. RUN yum -y install vim
  9. # 配置环境目录
  10. ENV MYPATH /usr/lcoal
  11. WORKDIR $MYPATH
  12. # 配置java环境目录
  13. ENV JAVA_HOME /usr/local/jdk1.8.0_191
  14. ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  15. # 配置tomcat环境目录
  16. ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.58
  17. ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.58
  18. # path路径
  19. ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
  20. # 暴露端口
  21. EXPOSE 8080
  22. # 运行脚本
  23. CMD /usr/local/apache-tomcat-9.0.58/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.58/bin/logs/catalina.out

2.2 构建镜像

  1. docker build -t vitcloud-tomcat .

2.3 启动容器

  1. docker run -d -p 9090:8080 \
  2. -v /usr/local/docker-build/tomcat/test:/usr/local/apache-tomcat-9.0.58/webapps/test \
  3. -v /home/vitcloud-docker-build/tomcatlogs/:/usr/local/apache-tomcat-9.0.58/logs \
  4. --name blog-tomcat \
  5. vitcloud-tomcat

交互方式进入

  1. docker exec -it 654c26bc7abb /bin/bash

2.4 发布项目

由于做了卷挂载,我们字节在本地编写项目就可以发布了

  1. <web-app version="3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  4. id="WebApp_ID">
  5. </web-app>
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>云间来客</title>
  8. </head>
  9. <body>
  10. <div>测试日志</div>
  11. </body>
  12. </html>

3 centos7-python38

  • centos7.6.1810
  • python 3.8.5

3.1 Dockerfile

https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz

  1. FROM centos:7.6.1810
  2. MAINTAINER vitcloud<vitcloud@163.com>
  3. RUN set -ex \
  4. # 预安装所需组件
  5. && yum install -y wget tar libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make initscripts \
  6. && wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz \
  7. && tar -zxvf Python-3.8.5.tgz \
  8. && cd Python-3.8.5 \
  9. && ./configure prefix=/usr/local/python3 \
  10. && make \
  11. && make install \
  12. && make clean \
  13. && rm -rf /Python-3.8.5* \
  14. && yum install -y epel-release \
  15. && yum install -y python-pip
  16. # 设置默认为python3
  17. RUN set -ex \
  18. # 备份旧版本python
  19. && mv /usr/bin/python /usr/bin/python27 \
  20. && mv /usr/bin/pip /usr/bin/pip27 \
  21. # 配置默认为python3
  22. && ln -s /usr/local/python3/bin/python3.8 /usr/bin/python \
  23. && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
  24. # 修复因修改python版本导致yum失效问题
  25. RUN set -ex \
  26. && sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/bin/yum \
  27. && sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/libexec/urlgrabber-ext-down \
  28. && yum install -y deltarpm
  29. # 基础环境配置
  30. RUN set -ex \
  31. # 修改系统时区为东八区
  32. && rm -rf /etc/localtime \
  33. && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  34. && yum install -y vim \
  35. # 安装定时任务组件
  36. && yum -y install cronie
  37. # 支持中文
  38. RUN yum install kde-l10n-Chinese -y
  39. RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
  40. # 更新pip版本
  41. RUN pip install --upgrade pip
  42. ENV LC_ALL zh_CN.UTF-8

3.2 构建

  1. docker build -t centos7-python38 .

3.3 容器启动

  1. docker run -itd \
  2. --restart always --privileged=true \
  3. -v /root/dockers/python:/root/python \
  4. -v /root/dockers/python/cron:/var/spool/cron /usr/sbin/init
  5. python:37
  6. --name python

9 commit、push、save

9.1 将容器提交镜像 commit

  1. docker commit 提交同期成为一个副本
  2. # 命令和git原理类似
  3. docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

案例

  1. docker commit -a="有勇气的牛排" -m="add webapps app" 48629b5a69d2 tomcat02:1.0

9.2 发布镜像 push

DockerHub
地址:https://hub.docker.com/

  1. # 帮助
  2. docker login --help
  3. # 登录
  4. docker login -u 用户名
  5. # 推动自己的镜像到 DockerHub
  6. docker push vitcloud/tomcat:1.0

给镜像添加tag

  1. docker tag d89b35c35d33 vitcloud/tomcat:1.0

发布到阿里云镜像服务

创建命名空间
创建容器镜像服务
创建命名空间
创建容器镜像
浏览阿里云

  1. # 登录阿里云
  2. docker login --username=1809296387@qq.com registry.cn-zhangjiakou.aliyuncs.com
  3. # 给镜像生成版本号
  4. docker tag [ImageId] registry.cn-zhangjiakou.aliyuncs.com/warm-test/charles-test:[镜像版本号]
  5. # 推送
  6. docker push registry.cn-zhangjiakou.aliyuncs.com/warm-test/diytomcat:1.0
  7. docker push vitcloud/tomcat:1.0
  8. docker push registry.cn-zhangjiakou.aliyuncs.com/warm-test/charles-test:[镜像版本号]

9.3 save

将镜像保存到本地

  1. docker save -o centos7-python38_2.0.tar centos7-python38:2.0

加载本地镜像

  1. docker load -i centos7-python38_2.0.tar

相关文章