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

3 篇文章 0 订阅
2 篇文章 0 订阅
[size=large][b][color=red]本文是简明教程,面向和我一样刚学习 Docker 的人。请各位高手及专家自觉绕行。[/color][/b][/size]

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

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

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

[b]安装要求:[/b]
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
[b]Ubutnu 14.04 以上的用户,建议继续完成如下步骤:[/b]

安装 linux-image-extra 包:
$ sudo apt-get install linux-image-extra-$(uname -r)
[b]Ubutnu 14.04 及以下的用户,还需要安装 apparmor:[/b]
$ sudo apt-get install apparmor
[b]安装 Docker[/b]
$ 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
------------------------------------------------------

[b]下载镜像[/b]

示例:从官方仓库中下载最新版 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
[b]安装 Java 环境[/b]

在容器中挂载主机上下载好的 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
[b]说明:[/b]
-i 交互模式
-t 控制台模式
-v 指定数据卷
ubuntu 镜像名
/bin/bash 需要执行的命令

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

运行如下命令制作镜像:
$ docker commit -m "Add Oracle Java7 and Spring Boot project" -a "Author Name" 569c12b64f64 ubuntu/java7:v1
[b]说明:[/b]
-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
[b]启动 Spring Boot[/b]
$ docker run -d -p 57070:7070 --name springboot ubuntu/java7:v1 java -jar /springboot-0.0.1-SNAPSHOT.jar
[b]说明:[/b]
-d 在后台执行
-p 57070:7070 将容器中的 7070 端口映像到主机上的 57070 端口(我已经将 Spring Boot 中的 Tomcat 端口改成了 7070)。
--name 后面指定的是启动容器后容器的名称。
ubuntu/java7:v1 是镜像的名称。
java -jar /springboot-0.0.1-SNAPSHOT.jar 是需要执行的命令。

[b]查看容器 IP[/b]

在主机或容器中运行 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 工程了。

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

其它说明:

[b]删除所有容器:[/b]
$ docker rm $(docker ps -a -q)
[b]删除指定容器:[/b]
# 首先查看所要删除的容器 ID
$ docker ps -a
# 然后执行如下命令:
$ docker rm [容器 ID]
[b]删除镜像:[/b]
[b][color=red]说明:[/color][/b]在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器。
# 首先查看所要删除的镜像信息
$ docker images
# 然后执行如下命令删除指定的镜像
$ docker rmi [镜像完整名或镜像 ID]
# 例如:
$ docker rmi 693bce725149
# 或
$ docker rmi ubuntu/java7:v1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值