文章目录
  1. 1. Docker简介
  2. 2. 1.docker安装
    1. 2.1. 1.1 环境配置/要求
    2. 2.2. 1.2 安装命令
  3. 3. 2.Docker容器常用命令
  4. 4. 3.部署一个boot应用到docker容器
    1. 4.1. 3.1 准备打包好的应用jar包
    2. 4.2. 3.2 书写dockerfile
    3. 4.3. 3.3 构建镜像
    4. 4.4. 3.4 运行应用测试
  5. 5. 备注: 1. 为docker配置加速
  6. 6. 备注: 2. centos7 开放某个端口的外部权限

Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

1.docker安装

1.1 环境配置/要求

安装使用centos7 内核版本为3.10.0-514.el7.x86_64
最低内核版本为3.10,系统版本为64位

1.2 安装命令

安装需要在管理员权限下进行
Yum -y install docker
1.PNG

2.Docker容器常用命令

命令    解释
Service docker start                启动docker服务
Docker images                        列出可用的docker镜像
Docker ps                            列出当前在运行的docker实例
Docker search xxx                    查询名为xxx的镜像,比如查询支持java8的环境,
                                    使用docker search java即可
Docker stop xxx                        停止名为xxx或者id为xxx的运行中的docker实例
Docker rmi xxx                        删除名为xxx的docker镜像,使用-f选项强制删除
Docker build -t xxx dockerfile-path    通过某路径下的dockerFile构建名为xxx的镜像
                                    例如,“docker build -t snowalker . ”
                                    就表示通过当前路径下的dockerFile生成名为snowalker的镜像
Docker run -d -p 镜像名称 应用名称    -d参数表示在后台运行
                                    -p指定dokcer容器的端口映射
                                    比如:
                                        docker run -d -p 8088:8080 app:boot-final
                                        就表示 
                                        将名为app:boot-finald的容器中端口为8080的应用映射到宿主机的8088端口,
                                        并在后台运行,也就是说宿主的8088是映射的容器的8080端口
Docker top xxx                        查看容器xxx内部运行的进程
Docker logs -f xxx                    查看id为xxx的容器内部的日志信息
Docker inspect xxx                    查看容器xxx的运行状态信息和配置
Docker rm xxx                        容器在停止状态下对其进行删除,如果不停止会报错
Docker pull xxx                        下载一个名为xxx的本地不存在的镜像

3.部署一个boot应用到docker容器

我们的目的是将一个本地已经开发完毕的springboot应用打包之后通过docker容器将其发布。

3.1 准备打包好的应用jar包

1.我这里以一个现成的springboot web应用为例进行部署测试。它的效果看起来是这样的
test1.PNG

2.在通过maven clean install 命令进行打包操作,在target目录下得到jar包
test2.PNG
3.上传jar到服务器中,如果使用docker的maven插件可以在打包之后直接自动化的生成docker镜像,本次先不讲解这种方式,我们就用手动方式将jar上传即可。这里我使用的是secureCRT的rz命令进行上传,如图
test3.PNG

3.2 书写dockerfile

这是比较关键的一步,先看下完成之后的dockerFile的主要内容:
test4_dockerfile.PNG
稍作解释:
FROM 基于哪个镜像进行构建
VOLUME 将本地文件夹挂在到当前容器
ADD 复制文件倒容器
EXPOSE 声明需要暴露的端口
CMD 配置容器执行之后的命令
连起来解释就是:通过java:8这个镜像作为基础镜像,将应用复制为app.jar,并挂载在宿主的/tmp下,通过java -jar -Dserver.port=8080 app.jar启动。

3.3 构建镜像

通过命令 Docker build -t snowalker:test-build .
表示通过当前路径下的DockerFile构建镜像名为snowalker:test-build的镜像
test5_dockerbuild.PNG
通过docker images查看当前的镜像列表
images.PNG
已经有该镜像了

3.4 运行应用测试

通过命令docker run -d -p 8088:8080 snowalker:test-build
启动应用,如图
docker_run.PNG
通过docker logs -f appId 查看日志
具体的appid 通过docker ps查看即可获得
docker_logs.PNG
同时别忘了为宿主的端口添加外网访问权限,效果如下图
port_open.PNG
打开浏览器,访问链接
success.PNG
如上图结果表示我们通过docker部署springboot应用成功。

备注: 1. 为docker配置加速

安装完毕之后最好添加docker国内镜像加速,直接连接速度很慢或者没有速度。

具体的步骤是:
1.登录阿里云https://dev.aliyun.com/search.html 管理中心
config_login.PNG

2.在后台获取具体的加速方式,我的主机是centos因此使用如图的策略进行配置
aliyun1.PNG

  1. 其他的主机选择对应方式即可

备注: 2. centos7 开放某个端口的外部权限

在centos7之前,开放端口的外部访问权限常常通过iptables进行控制,命令一般为

/sbin/iptables -I INPUT -p tcp --dport 8761-j ACCEPT
/etc/rc.d/init.d/iptables save
service iptables restart

表明为端口8761开放外部访问权限。

CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos 7使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口:

开启端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

命令含义:

--zone #作用域

--add-port=80/tcp  #添加端口,格式为:端口/通讯协议

--permanent  #永久生效,没有此参数重启后失效

重启防火墙

firewall-cmd --reload
文章目录
  1. 1. Docker简介
  2. 2. 1.docker安装
    1. 2.1. 1.1 环境配置/要求
    2. 2.2. 1.2 安装命令
  3. 3. 2.Docker容器常用命令
  4. 4. 3.部署一个boot应用到docker容器
    1. 4.1. 3.1 准备打包好的应用jar包
    2. 4.2. 3.2 书写dockerfile
    3. 4.3. 3.3 构建镜像
    4. 4.4. 3.4 运行应用测试
  5. 5. 备注: 1. 为docker配置加速
  6. 6. 备注: 2. centos7 开放某个端口的外部权限
Fork me on GitHub