容器docker基本命令使用及发布镜像教程

 

https://www.cnblogs.com/xiaochangwei/p/8204511.html

https://www.cnblogs.com/xiaochangwei/p/8204992.html

https://www.cnblogs.com/xiaochangwei/p/8205067.html

https://www.cnblogs.com/xiaochangwei/p/8268509.html

docker镜像可以完全看作一台全新的电脑使用,无论什么镜像都是对某一东西进行了配置,然后打包后可以快速移植到需要的地方直接使用

省去复杂的配置工作

比如java web项目部署,如果是新部署,需要装系统,配置jdk,maven,sql,redis等各类环境,费时费力还容易出错,

而docker就可以省去配置环境的麻烦,直接让你把war包丢进去,实现分分钟部署一个项目

 

从头开始简单的说下docker的使用

 

本次讲解环境为ubuntu 16.04

首先给ubuntu安装docker,我安装的是docker ee, 安装方法:https://docs.docker.com/engine/installation/linux/docker-ee/ubuntu/

安装好之后,便是启动docker

与之对应的停止dokcer服务命令就是stop了

然后通过--version可以查看运行的docker版本

启动后,是没有任何镜像的,不过可以通过pull命令获取相关镜像

复制代码

复制代码

表明nginx已经成功运行

pull到的镜像肯定有很多需要修改的地方,比如配置文件等或者要自己增加些什么玩意儿进去

通过exec命令进入到容器内部进行操作, 其中红色部分可以是容器id或容器名字

这样会出来很多信息,可以通过grep检索需要的项目

 

那么问题又来了, 进入容器内部并修改了东西后,怎么生成新的镜像供下次直接使用

复制代码

复制代码

复制代码

复制代码

同样镜像的删除按如下操作

1.通过sudo docker images 列出所有镜像

2.通过sudo docker rmi xxx 来删除指定的镜像,镜像存在依赖关系,先删除最下层,最后删除顶层,建议根据镜像名字来删除

 

复制代码

复制代码

 

以上就是docker的基本使用命令了,下一篇将讲解通过dockerfile来构建镜像

 

 

上一篇讲解了docker的基本使用 http://www.cnblogs.com/xiaochangwei/p/8204511.html

虽然通过修改获取到的镜像可以达到使用目的,但是多操作几次就会发现,操作还是比较繁琐,扩充也不是很方便

而取而代之的方法就是通过Dockerfile来构建自己想要的镜像,

 

dockerfile是用来构建镜像的一组命令文件,一个命令为一层的构建,然后使用

进行编译,制作成镜像

实例

使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。

使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。

也可以通过 -f Dockerfile 文件的位置:

在linux下编译过C程序的同学肯定知道Makefile, Dockerfile和其一样,就是为了达到快速编译(生成)想要的镜像的

下面以j2ee最常用的场景:在ubuntu下配置jdk环境,并用tomcat发布一个war包的web项目

1.准备好需要的jdk 和 tomcat

复制代码

复制代码

这里我将jdk和tomcat的tar.gz 包都通过 tar -zxvf解压了 并通过mv 修改了文件夹名字为jdk和tomcat

(其实不解压也可以,2中说明为啥我要解压,为啥不用解压而我又先解压了)

2.编写Dockerfile(示例如下)

复制代码

复制代码

根据显示的行号来解释

1.我们制作镜像的基础,在ubuntu16.04的系统上构建后续操作

2.维护者信息

3~5.复制当前目录下的jdk目录 到容器内部的/usr/local/jdk目录下

解释下:

Dockerfile提供了COPY 和 ADD 两种方式

COPY : COPY ./jdk  /usr/local/jdk            #直接原样拷贝过去

ADD   : ADD ./jdk-8u121-linux-x64.tar.gz  /usr/local/java        #拷贝过去,如果是压缩包还会自动帮着解压,本来是好事,但是解压后文件夹名字一长串,不便于记忆,就直接先解压好重命名好了再COPY过去

7~13.一看就知道了 通过 ENV 来设置各种环境变量

14.为了示例RUN的使用, 通过RUN命令,后面就可以执行各种linux命令

15.表示启动容器后执行的操作

 

将上述文件保存为Dockerfile  注意大小写,没有后缀,然后进入到该目录,执行命令构建镜像

 

xiaochangwei/tomcat:v1 镜像的名字及tag,  最后的点代表当前目录

复制代码

复制代码

至此,我们需要的tomcat镜像就已经制作完成了

也发布到docker cloud上去吧

上传时间根据网络和镜像大小来决定,网络差的同学多等待下

 上传日志

docker cloud上也有了,不过提醒下,这里要稍微多等下,有时候命令行显示上传完了,但是网页端还是没有,不用急,多等会儿

 

启动试试看

如果想后台运行 可以在run后加 -d 参数即:sudo docker run -d  -p 8899:8080 --name tomcat_xiao xiaochangwei/tomcat:v1 其余参数不解释,看上一篇文章

 启动log

看见猫了就表示对了

然后问题又来了,容器倒是启动起来了,但是怎么把我们自己的war包丢里面运行起来呢?

demo.war  不解释

tomcat_xiao:/usr/local/tomcat/webapps  冒号前面为容器名称或者id, 冒号后面为tomcat的webapps全路径

丢进去就好了,会自动发布的,不需要我们再自己去启动tomcat了,因为容器启动后tomcat就默认启动了  Dockerfile最后一行就是启动tomcat

 

丢进去后,控制台就会检测到,并自动部署

 控制台log

 

好了,满足基本需要了

这里面有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了 后续文章中进行讲解

 

后续会讲到

目录挂载

与jenkins整合,实现持续集成

还有暂时没想到的东西

声明:本站内容来源于原创和互联网,尊重作者版权,转载请注明来源网址,欢迎收藏,谢谢!