`
yhz61010
  • 浏览: 564310 次
  • 来自: -
博客专栏
63c13ecc-ef01-31cf-984e-de461c7dfde8
libgdx 游戏开发
浏览量:12289
社区版块
存档分类
最新评论

[原创] Ubuntu 下 Docker 安装及使用简明教程 - 制作 Spring Boot 应用镜像

阅读更多
本文是简明教程,面向和我一样刚学习 Docker 的人。请各位高手及专家自觉绕行。

安装前,先说明下我的系统环境:
OS: Ubuntu 16.04 LTS Desktop amd64

我已经打包好了一个 Spring Boot 工程(jar 形式)。由于 Spring Boot 中已经集成了 Tomcat,因此,在制作 Docker 时,只需要 Java 环境即可。

安装 Docker
官方安装说明:https://docs.docker.com/engine/installation/linux/ubuntulinux/

安装要求:
Docker 要求系统必须是 64 位系统,并不要求 Ubuntu 的版本,内核版本要求至少是 3.10。

检查内核版本:
$ uname -r
4.4.0-24-generic
更新 APT 镜像源:
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
添加 GPG Key:
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
打开如下文件(若不存在的话则创建一个)/etc/apt/sources.list.d/docker.list,删除文件中所有的内容,并根据系统的版本添加如下内容:
$ sudo vim /etc/apt/sources.list.d/docker.list
Ubuntu Precise 12.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-precise main
Ubuntu Trusty 14.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-trusty main
Ubuntu Wily 15.10
deb https://apt.dockerproject.org/repo ubuntu-wily main
Ubuntu Xenial 16.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-xenial main
更新 APT 镜像源:
$ sudo apt-get update
清理旧的 repo (如果存在的话):
$ sudo apt-get purge lxc-docker
验证 APT 是否更新成功:
$ apt-cache policy docker-engine
docker-engine:
  已安装:(无)
  候选: 1.11.2-0~xenial
  版本列表:
     1.11.2-0~xenial 500
        500 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 Packages
     1.11.1-0~xenial 500
        500 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 Packages
     1.11.0-0~xenial 500
        500 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 Packages
Ubutnu 14.04 以上的用户,建议继续完成如下步骤:

安装 linux-image-extra 包:
$ sudo apt-get install linux-image-extra-$(uname -r)
Ubutnu 14.04 及以下的用户,还需要安装 apparmor:
$ sudo apt-get install apparmor
安装 Docker
$ sudo apt-get install docker-engine
启动 docker daemon:
$ sudo service docker start
验证 docker 是否安装成功:
$ sudo docker run hello-world
至此, docker 的安装已经结束。

通过情况下,运行 docker 需要管理员权限,如果你不想每次执行 docker 命令时都加上 sudo 的话,可以执行如下步骤:

创建 docker group:
$ sudo groupadd docker
将需要执行 docker 命令的用户(例如:yhz61010)添加到 docker 组中:
$ sudo usermod -aG docker yhz61010
注销当前用户,并重新登录。

验证:
$ docker run hello-world
如果运行失败的话,会有如下提示:
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
设置 docker daemon 随机启动:
$ sudo systemctl enable docker
------------------------------------------------------

下载镜像

示例:从官方仓库中下载最新版 Ubuntu 镜像:
$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
5ba4f30e5bea: Downloading [======>                                            ] 6.389 MB/48.65 MB
9d7d19c9dc56: Download complete 
ac6ad7efd0f9: Download complete 
e7491a747824: Download complete 
a3ed95caeb02: Download complete 
查看已下载的镜像:
$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              693bce725149        2 weeks ago         967 B
ubuntu              latest              2fa927b5cdd3        3 weeks ago         122 MB
安装 Java 环境

在容器中挂载主机上下载好的 JDK 作为数据卷。
假设:
主机上下载好的 JDK 路径如下:/media/[Your login user]/Linux/Java/
挂载到容器中的如下目录:/home/Download/
$ docker run -i -t -v /media/[Your login user]/Linux/Java/:/home/Download ubuntu /bin/bash
说明:
-i 交互模式
-t 控制台模式
-v 指定数据卷
ubuntu 镜像名
/bin/bash 需要执行的命令

进行容器后,会看到类似如下的内容:
root@569c12b64f64:/# 
注意:请记下 “569c12b64f64” 这个数字,后面制作镜像时会用到。
之后在容器中安装 Java 并配置环境(方法请自行 Google 或 百度)。
然后将打包好的 Spring Boot 工程,放到容器中。
之后执行如下命令退出容器:
# exit
制作镜像

运行如下命令制作镜像:
$ docker commit -m "Add Oracle Java7 and Spring Boot project" -a "Author Name" 569c12b64f64 ubuntu/java7:v1
说明:
-m 后面是本次提交的说明。
-a 后面是本次提交的作者。
569c12b64f64 即之前记下的窗口ID。
ubuntu/java7:v1 是镜像的名称及版本

查看新制作的镜像:
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu/java7        v1                  686982dab31f        7 seconds ago       772.8 MB
hello-world         latest              693bce725149        2 weeks ago         967 B
ubuntu              latest              2fa927b5cdd3        3 weeks ago         122 MB
启动 Spring Boot
$ docker run -d -p 57070:7070 --name springboot ubuntu/java7:v1 java -jar /springboot-0.0.1-SNAPSHOT.jar
说明:
-d 在后台执行
-p 57070:7070 将容器中的 7070 端口映像到主机上的 57070 端口(我已经将 Spring Boot 中的 Tomcat 端口改成了 7070)。
--name 后面指定的是启动容器后容器的名称。
ubuntu/java7:v1 是镜像的名称。
java -jar /springboot-0.0.1-SNAPSHOT.jar 是需要执行的命令。

查看容器 IP

在主机或容器中运行 ifconfig 命令,查看容器的 IP 地址。
下面的示例是在主机中运行 ifconfig 命令查看容器的 IP 地址:
$ ifconfig 
docker0   Link encap:以太网  硬件地址 02:42:49:a6:b0:8d  
          inet 地址:172.17.0.1  广播:0.0.0.0  掩码:255.255.0.0
          inet6 地址: fe80::42:49ff:fea6:b08d/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  跃点数:1
          接收数据包:11263 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:16826 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:648407 (648.4 KB)  发送字节:24761295 (24.7 MB)
......
......
......
查到了容器的 IP 地址,在主机中就可以访问容器中的 Spring Boot 工程了。

==========================================================================================

其它说明:

删除所有容器:
$ docker rm $(docker ps -a -q)
删除指定容器:
# 首先查看所要删除的容器 ID
$ docker ps -a
# 然后执行如下命令:
$ docker rm [容器 ID]
删除镜像:
说明:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器。
# 首先查看所要删除的镜像信息
$ docker images
# 然后执行如下命令删除指定的镜像
$ docker rmi [镜像完整名或镜像 ID]
# 例如:
$ docker rmi 693bce725149
# 或
$ docker rmi ubuntu/java7:v1
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics