# Docker 部署 java 微服务
# 1、新建 Dockerfile 文件
跟 jar 包同级目录; Dockerfile 文件内容如下:
# 基镜像选 java8
FROM java:8
# 指定临时文件目录为/tmp
# 就是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。
VOLUME /tmp
# 将 jar 包添加到镜像中,重命名为 DockerDemo.jar
ADD JavaServer.jar DockerDemo.jar
# 暴露的端口是 8080
EXPOSE 8080
# 启动时运行 java -jar DockerDemo.jar
ENTRYPOINT ["java","-jar","/DockerDemo.jar"]
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 2、启动脚本
start.sh
# 镜像名称小写
APPNAME=dockerdemo
PORT=8080
# 编译镜像; '$APPNAME'是镜像名称; '.'表示Dockerfile在当前路径下
docker build -t $APPNAME .
# 运行镜像,端口映射为 8080
docker run -d -h 127.0.0.1 --name $APPNAME -p $PORT:$PORT $APPNAME
1
2
3
4
5
6
7
2
3
4
5
6
7
# 3、编写停止脚本
stop.sh
APPNAME=dockerdemo
# 停止容器
docker ps -a | grep "$APPNAME" | awk '{print $1 }'|xargs docker stop
# 删除容器
docker ps -a | grep "$APPNAME" | awk '{print $1 }'|xargs docker rm
# 删除镜像
docker images|grep "$APPNAME"|awk '{print $3 }'|xargs docker rmi
1
2
3
4
5
6
7
2
3
4
5
6
7
# 4、常用命令
# 查看全部镜像
docker images
# 创建容器并启动
docker run -t -i [name]:[tag] /bin/bash
# 后台运行
docker run -d [name]:[tag] /bin/sh
# -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。
# 查看全部容器
docker ps -a
# 启动某停止的容器
docker [container] start
# 查看正在运行的容器
docker ps
# 停止某容器
docker [container] stop
# 删除容器
docker rm [container]
# 删除镜像
docker rmi [image]
# 重启某正在运行的容器
docker [container] restart
# 进入容器
docker attach [containerId(0,3)]
docker exec -it [containerId(0,3)] bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24