Docker 镜像的制作
1、登录docker
docker ecex –it 容器名/容器id /bin/bash
例如:
docker exec –it tomcat /bin/bash
1)、使用docker attach进入Docker容器,存在多个窗口同步和拥塞问题
sudo docker attach 44fc0f0582d9
2)、使用SSH进入Docker容器(不建议)
3)、使用nsenter进入Docker容器
4)、docker inspect 查看容器信息
sudo docker inspect tomcat
5)、使用docker exec进入Docker容器
sudo docker exec --help
sudo docker exec -it tomcat /bin/bash
2、查看容器大小
说明:Docker容器是基于镜像的读写层,它是可读可写的。读写某个文件的时候,是从镜像中将那个文件复制到容器的读写层,然后对复制的文件进行读写,而原文件依然在镜像中。而且,这个容器的读写层也是占用磁盘空间的。
步骤1:先确认容器文件的默认路径
默认情况下为/var/lib/docker/containers
步骤2:进入容器目录
cd /var/lib/docker/containersdu -sh *
步骤3:查看所有容器的大小
du -sh *
步骤3:查看某个容器的大小
du -sh <容器id>
2、查看有什么目录
3、测试打包一个docker
centos为原版增加jdk和tomcat
1)拉取一个centos
docker pull centos
2)准备jdk8和tomcat
创建工作目录, mkdir -p /z/docker
准备root下已经上传了jdk和tomcat
cp本机的jdk到/z/docker目录下
tar -zxvf apache-tomcat-9.0.8.tar.gz -C /z/docker
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /z/docker
解压到目录/z/docker下, 并重命名为jdk
并重命名为jdk
mv jdk1.8.0_91 jdk
mv apache-tomcat-9.0.8 tomcat
3)删掉jdk文件夹下多余文件, 降低build的镜像大小
rm -rf /z/docker/jdk/*src.zip \
/z/docker/jdk/lib/missioncontrol \
/z/docker/jdk/lib/visualvm \
/z/docker/jdk/lib/*javafx* \
/z/docker/jdk/jre/lib/plugin.jar \
/z/docker/jdk/jre/lib/ext/jfxrt.jar \
/z/docker/jdk/jre/bin/javaws \
/z/docker/jdk/jre/lib/javaws.jar \
/z/docker/jdk/jre/lib/desktop \
/z/docker/jdk/jre/plugin \
/z/docker/jdk/jre/lib/deploy* \
/z/docker/jdk/jre/lib/*javafx* \
/z/docker/jdk/jre/lib/*jfx* \
/z/docker/jdk/jre/lib/amd64/libdecora_sse.so \
/z/docker/jdk/jre/lib/amd64/libprism_*.so \
/z/docker/jdk/jre/lib/amd64/libfxplugins.so \
/z/docker/jdk/jre/lib/amd64/libglass.so \
/z/docker/jdk/jre/lib/amd64/libgstreamer-lite.so \
/z/docker/jdk/jre/lib/amd64/libjavafx*.so \
/z/docker/jdk/jre/lib/amd64/libjfx*.so
4)进入/z/docker目录, 在当前目录下创建Dockerfile文件
cd /z/docker
vim Dockerfile
#插入以下内容
#使用的基础镜像
FROM centos
#作者信息
MAINTAINER luhq7 "cztx29@126.com"
#创建目录
RUN mkdir -p /z/java/jdk
#把当前目录下的jdk文件夹添加到镜像
ADD jdk /z/java/jdk
#创建tomcat目录
RUN mkdir -p /z/java/tomcat
#把当前目录下的tomcat文件夹添加到镜像
ADD tomcat /z/java/tomcat
#添加环境变量
ENV JAVA_HOME /z/java/jdk
ENV CATALINA_HOME /z/java/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
#暴露8080端口
EXPOSE 8080
#启动时运行tomcat
CMD ["/z/java/tomcat/bin/catalina.sh","run"]
5)、开始制作
docker build -t repos_local/centos-jdk-tomcat:0.0.1 .
最后的 . 表示dockerfile放在本目录
6)、docker ps和docker images查看一下镜像
7)、运行一个容器
docker run -d --hostname mytomcat --name mytomcat -p 16002:8080 repos_local/centos-jdk-tomcat:0.0.1
报错:需要重新启动docker进程
8)、重启docker
sudo systemctl restart docker
9)、打开防火墙对应端口
vim /etc/sysconfig/iptables
增加一行,端口为15672的限制取消
防火墙重新生效
service iptables restart
查看那些端口可用:
netstat -lntp
docker start mytomcat
OK至此完成docker(centos + tomcat +jdk)的制作
Docker 镜像的制作的更多相关文章
- Docker 镜像的制作和使用
镜像 Layer(层) 镜像里的内容是按「层」来组织的,「层」可以复用,一个完整的镜像也可以看做是一个「层」.多个「层」叠加在一起就形成了一个新的镜像,这个镜像也可以作为别的镜像的基础「层」进行更加复 ...
- 基于url-to-pdf-api构建docker镜像,制作一个网页另存服务
基于url-to-pdf-api构建docker镜像,制作一个网页另存服务 业务背景: 需要根据一个url路径打印这个网页的内容 解决方案: 1.使用wkhtml2pdf 2.使用puppeteer ...
- 制作可以 SSH 登录的 Docker 镜像
Docker使用系列一我们把镜像源改为了阿里云的,方便后续的操作. 执行这个命令就把源地址改为阿里的: curl https://git.oschina.net/feedao/Docker_shell ...
- Nginx+PHP7.3.9 Docker镜像制作
最近因项目需要制作了多个版本的php docker镜像,制作过程可谓是一波三折,因基于yum的方式安装php的方式在安装扩展插件时很不方便,不容易找到插件对应的yum源,所以PHP在docker镜像中 ...
- presto-gateway 试用以及docker 镜像制作
presto-gateway 是 lyft 团队开源 的prestodb 的工具.以下是一个简单的试用,以及碰到问题的解决 还有就是docker 镜像的制作 Dockerfile 很简单,本地构建然后 ...
- Docker之从零开始制作docker镜像
以前学习docker是直接docker pull命令直接拉取Linux中已有镜像,并创建容器,添加应用程序,但是docker镜像一开始是怎么来的呢?下面将从零开始介绍整个docker镜像的制作过程(初 ...
- Docker之commit制作镜像
一.docker是什么? Docker是一个为开发人员和系统管理员提供分布式应用程序的开放平台.它是一个开源的容器引擎,基于Go语言并遵从Apche2.0协议开源. 功能:Docker可以让开发者打包 ...
- Docker、Dockerfile、Docker镜像、容器这些都是什么鸟?
老生常谈,再再再……普及一下: Docker:最早是dotCloud公司出品的一套容器管理工具,但后来Docker慢慢火起来了,连公司名字都从dotCloud改成Docker. Dockerfile: ...
- haproxy 2.0 dataplaneapi docker 镜像
为了方便测试dataplaneapi 基于官方的docker镜像,制作了一个简单的包含dataplaneapi 的镜像 下载dataplaneapi https://github.com/haprox ...
随机推荐
- luogu2885
P2885 [USACO07NOV]电话线Telephone Wire 给出若干棵树的高度,你可以进行一种操作:把某棵树增高h,花费为h*h. 操作完成后连线,两棵树间花费为高度差*定值c. 求两种花 ...
- Ubuntu 14.04 64bit中永久添加DNS的方法
第一种方法修改如下文件,默认是空的sudo vim /etc/resolvconf/resolv.conf.d/base在里面加入你想添加的DNS服务器,一行一个nameserver 114.114. ...
- Jmeter linux 运行
一.在Linux服务器先安装sdk 1.先从客户端下载jdk1.8.0_144.tar.gz,再上传到服务器 2.解压:tar -xzf jdk1.8.0_144.tar.gz,生成文件夹 jdk1. ...
- 关于在eclipse中Undefined attribute name (role).解决办法
方案一: 只需要在jsp表头添加一句: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c&q ...
- java Annotation 注解的使用
源码地址:https://github.com/yylxy/JavaAnnotationTest.git java Annotation 注解的使用 ,代码中有详细的注释.是用AndroidStudi ...
- LC 983. Minimum Cost For Tickets
In a country popular for train travel, you have planned some train travelling one year in advance. ...
- kotlin中抽象类
抽象类和接口很类似,抽象类不能被实例化需要使用abstract 关键字声明,抽象类实现接口后,接口中没有函数体的函数可以不重写,接口中的这些方法就自动被继承到实现接口的抽象类中,称为抽象方法 pack ...
- python实现并发服务器实现方式(多线程/多进程/select/epoll)
python实现并发服务器实现方式(多线程/多进程/select/epoll) 并发服务器开发 并发服务器开发,使得一个服务器可以近乎同一时刻为多个客户端提供服务.实现并发的方式有多种,下面以多进 ...
- qt application logging
“AnalysisPtsDataTool201905.exe”(Win32): 已加载“F:\OpencvProject\ZY-Project\x64\Debug\AnalysisPtsDataToo ...
- nginx ssl
SSL 私钥/etc/pki/CA/ (umask 077;openssl genrsa -out private/cakey.pem 2048) 自签证书 openssl req -new -x50 ...