1.linux安装docker菜鸟教程
curl -sSL https://get.daocloud.io/docker | sh
2.启动docker
如果不启动docker就去操作docker指令,会报错:Is the docker daemon running?
service docker start
3.配置Dockerfile,在对于的jar文件夹下创建Dockerfile(touch Dockerfile),并编写如下配置信息:
# 该镜像需要依赖的基础镜像
FROM java:8
# 指定维护者的名字
MAINTAINER Lixz
# 将当前目录下的jar包复制到docker容器的/目录下
COPY streamlet-video-dev-api.jar streamlet-video-dev-api.jar
# 运行cmd命令,会在启动容器时运行。
CMD java -jar streamlet-video-dev-api.jar
# 对外端口号 jar包运行的端口号
EXPOSE 8082
4.创建镜像
docker build -t streamlet-video .
结果如下表示创建成功
[root@iZ2ze8nyz28va3in2yksh9Z streamlet]# docker build -t streamlet-video .
Sending build context to Docker daemon 105.9MB
Step 1/5 : FROM java:8
---> d23bdf5b1b1b
Step 2/5 : MAINTAINER Lixz
---> Running in d0ba2f9a698a
Removing intermediate container d0ba2f9a698a
---> 0425ad0151d8
Step 3/5 : COPY streamlet-video-dev-api.jar streamlet-video-dev-api.jar
---> e7960fcf819c
Step 4/5 : CMD java -jar streamlet-video-dev-api.jar
---> Running in 4c8879da8ba7
Removing intermediate container 4c8879da8ba7
---> 12433786a203
Step 5/5 : EXPOSE 8082
---> Running in da294e3118e3
Removing intermediate container da294e3118e3
---> 44a100a738b1
Successfully built 44a100a738b1
Successfully tagged streamlet-video:latest
[root@iZ2ze8nyz28va3in2yksh9Z streamlet]#
5.查看镜像
docker images
查看结果如下
[root@iZ2ze8nyz28va3in2yksh9Z streamlet]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
streamlet-video latest 44a100a738b1 About a minute ago 749MB
java 8 d23bdf5b1b1b 4 years ago 643MB
[root@iZ2ze8nyz28va3in2yksh9Z streamlet]#
6.添加并运行容器
docker run -d -p 8082:8082 --name streamletVideo streamlet-video
-d:表示后台运行(不设置的话Java日志入直接在这里显示)
-p:端口号
--name streamletVideo:给容器设置名称(NAMES),不设置--name会自动生成一个,这样的话关闭容器就要先查询一遍,不方便
结果如下
[root@iZ2ze8nyz28va3in2yksh9Z streamlet]# docker run -d -p 8082:8082 --name streamletVideo streamlet-video
d9e0bc439acaaf90946abf192fae16085754754405b901817bdec388c63e59dc
[root@iZ2ze8nyz28va3in2yksh9Z streamlet]#
7.查看容器
docker ps -a
结果如下
[root@iZ2ze8nyz28va3in2yksh9Z streamlet]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9e0bc439aca streamlet-video "/bin/sh -c 'java -j…" 3 minutes ago Up 3 minutes 0.0.0.0:8082->8082/tcp streamletVideo
[root@iZ2ze8nyz28va3in2yksh9Z streamlet]#
刚才已经运行了容器,jar已经运行起来了,查看是否真正能访问
可以看到jar对应的服务已经起来了。如果需要关闭服务
8.关闭服务
docker stop streamletVideo
9.启动服务
docker start streamletVideo
10.删除容器
docker rm streamletVideo
11.删除镜像
docker rmi streamlet-video
我们重新上传新的jar包重新部署的时候,不能直接关闭/启动服务,这样还是原来的镜像跟容器。重新部署的步骤:关闭服务 -> 删除容器 ->删除镜像 -> 创建镜像 -> 添加并运行容器
12.新建编辑脚(streamlet-video.sh)运行脚本一键执行上述重新部署流程
app_name='streamlet-video'
app_container_name='streamletVideo'
docker stop ${app_container_name}
echo '----stop container----'
docker rm ${app_container_name}
echo '----rm container----'
#docker rmi `docker images | grep none | awk '{print $3}'`
docker rmi ${app_name}
echo '----rm none images----'
docker build -t ${app_name} .
echo '----docker build images----'
docker run -d -p 8082:8082 --name ${app_container_name} ${app_name}
echo '----start container----'
执行脚本 ./streamlet-video.sh