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

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 启动容器
注意上面的run其实是新建并启动一个容器的命令。run命令可以增加一个-name指定容器的名字。
如果后续在执行run,会提示该容器已经存在。因此这时候要用start命令。

docker start 容器名字

run的参数就不在需要了。

1.4 查看正在运行的容器

docker ps 
docker ps -a 查看全部容器

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 (镜像名字)

1.9 使用mysql容器举例
mysql一般用163的镜像即可。注意mysql的数据要挂载到本地,否则重启后就消息
新建命令

docker run --name="mysql5.7" -d -p 3306:3306 -v [本地文件夹]:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 hub.c.163.com/library/mysql:5.7

再次启动时

docker start mysql5.7

注意,老版本的docker的run方法,可以重复run同一个name的容器,后续就不能了。

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上手很快的,但跟详细的应用需要各位自己琢磨了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值