既然你看到这篇文章,相信已经对docker有了初步的了解,这是一片docker快速使用的文章。其实docker跟maven似的,一个管理的是组织好的运行环境,一个是jar包。
1.1 下载镜像
docker pull hub.c.163.com/library/tomcat:latestPS:这里使用了网易的docker镜像,下载速度
1.2 查看镜像
docker images效果
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hub.c.163.com/library/tomcat latest 72d2be374029 12 months ago 292MB1.3 运行镜像
docker run -d -p 8888:8080 hub.c.163.com/library/tomcat-d表示后台运行 -p表示端口映射 这个tomcat镜像默认端口是8080,前面的8888表示本季8888端口来映射到这个镜像的8080端口。
效果
因为用后台模式启动的-d ,所以会返回一个容器的id
可以在浏览器中输入 localhost:8888 查看tomcat起来了吗
注意: 每个容器环境都是独立,如果使用mysql这种有存储数据功能的镜像,一定在启动的时候使用 -v 宿主机目录/容器数据目录 指定数据目录和容器数据目录,让数据实时和宿主机同步,下次在启动时指定目录,才能把历史数据保存下来。
1.4 查看正在运行的容器
docker ps1.5 查看容器 运行环境 镜像启动后,我们肯定有查看日志的需求,可以使用下面的命令进入查看
docker exec -it (容器id) bash1.6 关闭容器
通过ps可以获取到在运行的实例
docker stop (容器id,不用输入全部id,只输入能区别开不同容器的前面几位id就行) docker stop $(docker ps -a -q) 关闭所有容器1.7删除容器
docker rm (容器id)1.8删除镜像
docker rmi (镜像名字)掌握上面的命令就能轻松使用docker启动别人的镜像了。
但重要的是,我们需要构建自己的镜像,网上有很多构建基于tomcat的web应用,我这里以可执行jar包为例,构建一个java应用镜像。我这写了一个helloworld程序,并打成可执行jar
2.1准备镜像所需要的文件
hello.jar因为我这想展示更多命令,所以新建了一个文件夹 hello里面有一个bin文件夹,在里面放着hello.jar
如下图所示 2.2 编写dockerfile
from java:9 add hello.tar.gz /opt/ workdir /opt/hello/bin/ ENTRYPOINT ["java","-jar","hello.jar"]下面解释dockerfile的语法,超级简单,就是key-value模式
2.2.1 from
from表示你的镜像是基于哪个镜像,如果是你是tomat web应用,from的值就是对应的tomcat的镜像名字:版本号
我们是java应用,就是基于Java:9
2.2.2 maintaine
镜像作者信息 可以省略
2.2.3 add/copy
制作镜像肯定需要外部文件 add和copy就能将dockerfie同级的文件复制系统的根目录 /下
add和copy的区别就是 add可以将压缩文件直接解压放到对应的目录下
2.2.4 run
run表示 构建根据我们的dockerfile构建 镜像执行的命令
但是一条run的作用范围只是这条命令,例如你切换到一个文件夹,后面的命令都是的目录并不会影响
2.2.5 workdir
切换命令 跟linux的cd 作用一样,使用该命令后 镜像的当前目录就进行了切换
2.2.6 entrypoint/cmd
启动镜像时,镜像内部会执行的命令,如果写了多条entrypoint/cmd只会最后一条生效。 推荐使用entrypoint的["",""] JSONArray模式
2.2.7 expose
暴露端口号命令,对于需要暴露端口号的镜像,使用该命令制定
2.3 构建镜像
docker build -t 镜像名字:版本号 . 最后最后有一个 .写在最后:这是一篇快速上手应用docker的文章,并没有讲其相关概念,docker上手很快的,但跟详细的应用需要各位自己琢磨了。