Docker之路(二)--用Docker部署一个Web项目

上一篇,我们已经成功安装好了docker,这一篇,我就要讲一下怎么使用。

还是先说说docker吧。都说docker是一个容器,可是怎么理解这个容器?你必须知道下面三点

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

1.Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。
2.镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。我们可以自己build镜像,也可以从Docker Hub去拉取很多官方镜像。
3.docker有官方的仓库(第二点的Docker Hub),里面有很多已经构建好的镜像,我们只需要去下载就好了,专业术语就是pull,拉取,当然也有其他仓库地址,也有私有仓库,就是自己构建一个仓库来存储镜像,这些大家可以参考一下官方中文文档,里面也有很多基本命令,我们回归正题。
相信通过上面三点,你对docker正体有了大致的了解,接下来我举个简单的例子,手把手教你部署一个web项目,过程中会介绍一下常用的docker指令。
1.首先,我们用idea创建一个springboot项目。这个我就不详细描述了,创建一个controller

@RestController
@RequestMapping("/test")
public class DockerTestController {
    @RequestMapping("/one")
    public String testOne() {
        return "hello world";
    }
}

server.port设置成8080,然后用maven package打包。当然要在pom文件中设置build参数,不然运行会报错,参考我这篇文章
2.将打号的jar包扔到linux上去,目录你随意就好,我这里的路径是

[root@VM-12-12-centos java_test]# pwd
/data/java_test

3.新建一个Dockerfile,注意这里的名字是默认的,一般都不会改它,如果你实在想改名字,build的时候加入-f参数就行。
Dockerfile是一个文本文档,它包含用户可以在命令行上调用的所有命令,并组装一个映像。Dockerfile怎么理解呢,你可以看做是mapper.xml上面那一段声明,固定的,只是参数可以增删而已。

[root@VM-12-12-centos java_test]#touch Dockerfile
[root@VM-12-12-centos java_test]# vim Dockerfile

创建之后我们vim这个文件,编写一些东西。

FROM java:8
VOLUME /tmp
ADD docker-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 80
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

注意,ADD docker-0.0.1-SNAPSHOT.jar app.jar 这个jar包要跟你自己项目打成的jar包命名要一致。其他参数,我们下回在讲,这不影响我们部署项目。或者大家可以参考这边文章Dockerfile 介绍
接下来看看我们的目录,就两个文件。

[root@VM-12-12-centos java_test]# ls
docker-0.0.1-SNAPSHOT.jar  Dockerfile

4.上面我们说到了,要将项目构建成一个镜像,才能被docker容器运行,现在准备工作做好了,我们开始构建。

docker build -t docker-demo .

-t:tag标签的意思,docker-demo为标签名,也可以说是镜像名,“.”表示当前目录。在当前目录下构建一个标签名为docker-demo的镜像。
5.查看我们的镜像。docker images 或者docker image ls都可以查看我们的镜像列表。image_id就是唯一标识符。
在这里插入图片描述
当然不要镜像的话,也可以执行docker image rm [image_id] 来删除镜像,这里image_id不需要输入完全,docker所有操作都不需要完全输入id,只要能唯一确定就行了。比如我删除这个镜像只需要输入docker image rm 3eb 就行了。
6.用docker容器运行我们的镜像

docker run --name docker-six -d -p 9001:8080 docker-demo

参数解释一下,–name:运行起来叫啥名字,-d后台运行,-p端口映射 后面的docker-demo就是我们第4步构建镜像的时候起的名字。重点说下这个端口映射:-p 9001:8080,我们后面的8080代表我们项目的端口server.port,前面那个代表我们想用9001去映射8080端口,这样映射之后,我们浏览器输入9001端口就能访问到我们项目的8080端口了,如果不想映射,则可以不要这个参数。当然,不选择映射也可以这样设置:-p 8080:8080
7。看看我们的结果,浏览器访问一下,可以看到我们项目在docker中是启动成功了的。
在这里插入图片描述

8.一些常用的容器操作
(1)用命令看容器:docker container ls查看当前所有运行的容器

[root@VM-12-12-centos java_test]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
a50708893e01        docker-demo         "java -Djava.secur..."   29 hours ago        Up 29 hours         80/tcp, 0.0.0.0:8080->8080/tcp   docker-six
[root@VM-12-12-centos java_test]# 

(2)对容器的常用操作,前面一个run,还有停止,删除等等。

[root@VM-12-12-centos java_test]# docker container stop a50
a50
[root@VM-12-12-centos java_test]# 

a50就是CONTAINER ID 为:a50708893e01的简写
(3)停止之后的容器怎么查看呢,只需要在ls后面加个参数-a就行了。

[root@VM-12-12-centos java_test]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES
a50708893e01        docker-demo         "java -Djava.secur..."   29 hours ago        Exited (143) About a minute ago                       docker-six

(4)删除一个容器项目

docker container rm a50

如果容器正在运行想要删除会报错的,这是后再加个参数-f就行了,这时候容器自行会去kill掉

docker container rm -f a50

(5)我们run的时候 可以用docker logs 容器id来查看启动日志
在这里插入图片描述
以上就是全部内容了,希望对大家有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值