Docker系列四,docker的高级操作

来源:互联网 发布:python安装教程 编辑:程序博客网 时间:2024/05/29 14:05

Docker的高级操作

1.对拉取的镜像文件进行定制化操作

 我们在获取官方的tomcat镜像后,需要对其中的tomcat配置文件和时区进行一系列的修改,才能用于生产环境。配置文件的修改主要是对tomcat的运行进行一系列的优化,如jvm,tomcat user等

首先,建立一个定制化目录。

mkdir    cust

生成dockerfile文件

touch Dockerfile

编辑Dockerfile

vi Dockerfile
里面的内容如下:

FROM tomcatMAINTAINER "Simon Xu <simon.xu.sh@163.com>"ADD settings.xml /usr/local/tomcat/conf/ADD tomcat-users.xml /usr/local/tomcat/conf/ADD server.xml /usr/local/tomcat/conf/ADD catalina.sh /usr/local/tomcat/bin/ENV TZ=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ  /etc/localtime && echo $TZ > /etc/timezone

其中 catalina.sh、server.xml、tomcat-users.xml、settings.xml都是在当前目录下的用于优化tomcat的文件,后面2行是设置原来的时区为中国上海标准时间,如果你的应用里,有取系统时间的需求,这个一定要改。不然会有8个小时的时差。

catalina.sh里面增加了jvm的配置

JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC"

server.xml主要是修改了connect的配置

<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"        connectionTimeout="20000"        redirectPort="8443"         executor="tomcatThreadPool"        enableLookups="false"         acceptCount="100"         maxPostSize="10485760"         compression="on"         disableUploadTimeout="true"         compressionMinSize="2048"         noCompressionUserAgents="gozilla, traviata"         acceptorThreadCount="2"         compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"         URIEncoding="utf-8"/>

其他2个文件,只是用于维护目的,不用修改也可以

下面就是最重要的步骤了,生成一个自己定义的新Docker新镜像,

docker build -t   simon/tomcat8-opt    ./

以当前目录下的Dockerfile文件生成一个名字为simon/tomcat8-opt的镜像。

使用命令:docker images就可以查看到这个镜像了。

2. 镜像的保存、导出与导入操作


   有时候,生产环境没有互联网环境,镜像的在线摘取与定制化是不行,就需要在有互联网的开发环境把所需要的镜像进行保存或导出。

    镜像保存与导入

    保存的文件以.tar方式存在

保存方式一:save

save命令会将镜像完整保存,包括历史版本和元数据信息,所以文件可能比较大。


sudo docker save -o /home/docker/images/tomcat8-opt.tar  simon/tomcat8-opt

-o: 表示以文件的形式导出  紧跟在-o后面的是导出文件保存的位置  最后是镜像(仓库:TAG,或者镜像id)


保存方式二:export

确切的说,export其实是容器的保存,只把镜像当前的状态保存下来,没有历史版本等信息,所有文件比较小

docker export -o /home/docker/images/tomcat8-opt2.tar d0751467dcad

-o:表示以文件形式导出 紧跟在-o后面的是导出文件保存位置   最后是容器的id 容器通过sudo docker ps -a 查看

镜像导入:

docker load命令

 

sudo docker load < /home/docker/images/tomcat8-opt.tar

这条命令是把绝对路径下的tomcat8-opt.tar文件,导入当前docker本地环境。

下面就可以使用docker images查看到这个镜像文件了。


镜像删除

删除镜像前,要先把依赖于这个镜像的容器删除(sudo docker rm 容器id)

删除镜像的命令是docker rmi [镜像id]或名字

sudo docker rmi  simon/tomcat8-opt

前提是不存在以这个镜像运行的容器,如果存在,就不能删除,需要先删除掉容器。


提交修改的容器,并生成新的镜像

当对现有容器进行修改后,例如安装了某些软件、修改了配置等,要保存当前修改并生成新的镜像,使用docker commit命令 ,这个命令和git的commit命令很像

sudo docker commit -a "simon" -m "this is a commit message" simon/tomcat8-opt simon/tomcat8-optm

-a:修改者信息 -m:注释、说明  紧跟着当前操作的容器id或名字   最后是要生成的新的镜像名称

查看镜像的信息:docker inspect [镜像名称或者镜像id]


3.容器的相关操作命令

    查看容器列表,这在基本命令中已经讲过。

#查看已启动的容器
sudo docker ps

#查看所有容器
sudo docker ps -a 

新建并启动容器

根据一个镜像可以启动多个容器,启动容器的命令是docker run命令

sudo docker run -t -i simon/tomcat8-opt  /bin/bashsudo docker run -t -i  镜像id


常用参数解释:

-t 表示让Docker分配一个伪终端并绑定到容器的标准输入上

-i 表示让容器的标准输入保持打开

-d 表示以守护方式打开(即非交互模式,后台运行)

还有一个比较常用的,做网络配置时端口映射的参数-p,例如下面的命令将宿主机的3222端口映射到容器的22端口、将宿主机的3280端口映射到容器的22端口,用法如下:

#-p 设置端口映射 -p 宿主机端口:容器端口 --name= 为这个容器起个容易记的名字

sudo docker run -d --name=tomcat8-8081  -p 8081:8080  simon/tomcat8-opt


启动一个已存在的容器

sudo docker start tomcat8-8081  


进入容器

sudo docker attach tomcat8-8081

停止容器
docker stop tomcat8-8081

删除容器

容器必须是停止状态的才可以删除

sudo docker rm tomcat8-8081


导出容器

sudo docker export  tomcat8-8081  >  /home/docker/images/tomcat8-8081.tar


1 0