docker必用命令及构建一个可执行jar镜像

xiaoxiao2021-03-01  12

1.使用镜像

既然你看到这篇文章,相信已经对docker有了初步的了解,这是一片docker快速使用的文章。其实docker跟maven似的,一个管理的是组织好的运行环境,一个是jar包。

1.1 下载镜像

docker pull hub.c.163.com/library/tomcat:latest

PS:这里使用了网易的docker镜像,下载速度

1.2 查看镜像

docker images

效果

$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hub.c.163.com/library/tomcat latest 72d2be374029 12 months ago 292MB

1.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 ps

1.5 查看容器 运行环境 镜像启动后,我们肯定有查看日志的需求,可以使用下面的命令进入查看

docker exec -it (容器id) bash

1.6 关闭容器

通过ps可以获取到在运行的实例

docker stop (容器id,不用输入全部id,只输入能区别开不同容器的前面几位id就行) docker stop $(docker ps -a -q) 关闭所有容器

1.7删除容器

docker rm (容器id)

1.8删除镜像

docker rmi (镜像名字)

2.构建镜像

掌握上面的命令就能轻松使用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上手很快的,但跟详细的应用需要各位自己琢磨了。

转载请注明原文地址: https://www.6miu.com/read-3449952.html

最新回复(0)