开发者社区> waylau> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Docker 在 openSUSE 下的安装、使用

简介:
+关注继续查看

本文介绍了 Docker 在 openSUSE 环境下的详细安装过程,并尝试运行一个简单 Spring Boot 的 image 来感受下 Docker 的风采。

什么是 Docker

Docker 是为开发人员和系统管理员用于构建、发布、并运行分布式应用程序的开放式平台。该平台由 Docker 引擎(一个便携、轻巧的运行时和打包工具) 和 Docker Hub (一个共享应用程序和自动化工作流的云服务)等组成。Docker 可以使应用程序从组件迅速组装并消除了开发、质量保证和生产环境之间的摩擦问题。这样一来,IT部门可以更快地发布,而这些应用程序不管是运行在笔记本电脑、数据中心的虚拟机,还是任何的云,其运行过程和结果都是一致的。

更多有关 Docker 的介绍,可以参阅《简述 Docker》 一文。

前置条件

使用 uname -r 检查 kernel 版本

$ uname -r
4.1.12-1-default 

建议你使用最新的系统,以为一直的 bug 都会在新的 kernel 发布中修复。

安装

openSUSE 13.2 起,自带了仓库,所以无需添加

安装 openSUSE 国内镜像源

网络原因,访问 openSUSE 速度慢且不稳定,建议采用国内镜像库,下面例子是使用的 aliyun

zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/leap/42.1/oss openSUSE-42.1-Update-Oss

zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/leap/42.1/non-oss/ openSUSE-42.1-Update-Non-Oss

zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/leap/42.1/repo/oss/ openSUSE-42.1-Oss

zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/leap/42.1/repo/non-oss/ openSUSE-42.1-Non-Oss

zypper addrepo -f http://mirrors.aliyun.com/packman/openSUSE_Leap_42.1/ aliyun-packman

安装 Docker 包

$ sudo zypper in docker

输出如下:

linux-aihn:~ # zypper in docker
Retrieving repository 'openSUSE-Leap-42.1-Update' metadata --------------------------[|]

Warning: Digest verification failed for file '7256e9794decb02046412d2dc8ab5fa5a17875c1303f31663094da5ede29e933-app-icons.tar.gz'
[/var/cache/zypp/raw/repo-updateQVITjj/repodata/7256e9794decb02046412d2dc8ab5fa5a17875c1303f31663094da5ede29e933-app-icons.tar.gz]

 expected 7256e9794decb02046412d2dc8ab5fa5a17875c1303f31663094da5ede29e933
 but got a6be6f0868adbffa79d87856f6f3de4317a1e5c3f923be66eed899c4b559850b

Accepting packages with wrong checksums can lead to a corrupted system and in extreme cases even to a system compromise.

However if you made certain that the file with checksum 'a6be..' is secure, correct
and should be used within this operation, enter the first 4 characters of the checksum
to unblock using this file on your own risk. Empty input will discard the file.

Unblock or discard? [a6be/? shows all options] (discard): discard
Retrieving repository 'openSUSE-Leap-42.1-Update' metadata ......................[error]
Repository 'openSUSE-Leap-42.1-Update' is invalid.
[repo-update|http://download.opensuse.org/update/leap/42.1/oss/] Valid metadata not found at specified URL
Please check if the URIs defined for this repository are pointing to a valid repository.
Skipping repository 'openSUSE-Leap-42.1-Update' because of the above error.
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 6 NEW packages are going to be installed:
 bridge-utils docker git-core git-gui gitk perl-Error

6 new packages to install.
Overall download size: 10.6 MiB. Already cached: 0 B. After the operation, additional
50.7 MiB will be used.
Continue? [y/n/? shows all options] (y): y
Retrieving package perl-Error-0.17021-3.2.noarch (1/6), 28.3 KiB ( 49.8 KiB unpacked)
Retrieving: perl-Error-0.17021-3.2.noarch.rpm ....................................[done]
Retrieving package bridge-utils-1.5-21.3.x86_64 (2/6), 32.0 KiB ( 66.0 KiB unpacked)
Retrieving: bridge-utils-1.5-21.3.x86_64.rpm .....................................[done]
Retrieving package git-core-2.6.2-3.1.x86_64 (3/6), 3.9 MiB ( 25.7 MiB unpacked)
Retrieving: git-core-2.6.2-3.1.x86_64.rpm ..........................[done (267.4 KiB/s)]
Retrieving package gitk-2.6.2-3.1.x86_64 (4/6), 217.2 KiB (705.6 KiB unpacked)
Retrieving: gitk-2.6.2-3.1.x86_64.rpm ............................................[done]
Retrieving package git-gui-2.6.2-3.1.x86_64 (5/6), 296.1 KiB ( 1.3 MiB unpacked)
Retrieving: git-gui-2.6.2-3.1.x86_64.rpm .........................................[done]
Retrieving package docker-1.9.1-13.1.x86_64 (6/6), 6.2 MiB ( 22.9 MiB unpacked)
Retrieving: docker-1.9.1-13.1.x86_64.rpm ...........................[done (272.8 KiB/s)]
Checking for file conflicts: .....................................................[done]
(1/6) Installing: perl-Error-0.17021-3.2 .........................................[done]
(2/6) Installing: bridge-utils-1.5-21.3 ..........................................[done]
(3/6) Installing: git-core-2.6.2-3.1 .............................................[done]
(4/6) Installing: gitk-2.6.2-3.1 .................................................[done]
(5/6) Installing: git-gui-2.6.2-3.1 ..............................................[done]
(6/6) Installing: docker-1.9.1-13.1 ..............................................[done]
Additional rpm output:
creating group docker...
Updating /etc/sysconfig/docker...

启动 docker 守护进程

$ sudo systemctl start docker.service

配置让 docker 服务随系统自动启动

$ sudo systemctl enable docker.service

docker 会创建一个以docker命名的用户组,添加用户到这个用户组

sudo /usr/sbin/usermod -a -G docker <username>

卸载 docker

卸载 Docker 包:

$ sudo zypper rm docker

上述命令不会卸载 images、containers、volumes, 或者用户创建在主机的配置文件。若想卸载干净上述所有 images、containers、volumes, 执行:

$ rm -rf /var/lib/docker

用户创建在主机的配置文件需手动删除。

拉取 image 到本地

可以将 Docker Bub 存储的 image 拉取到本地,执行

docker pull waylau/docker-spring-boot

输出如下:

linux-aihn:~ # docker pull waylau/docker-spring-boot
Using default tag: latest
Pulling repository docker.io/waylau/docker-spring-boot
3694bcee2712: Download complete 
a2e9c1527ca5: Download complete 
20f4b5a54fc6: Download complete 
7a220626bc9e: Download complete 
620bbe9b8954: Download complete 
a0b5e5298dc5: Download complete 
2f8558117280: Download complete 
d2ee7992d027: Download complete 
Status: Downloaded newer image for waylau/docker-spring-boot:latest
docker.io/waylau/docker-spring-boot: this image was pulled from a legacy registry. Important: This registry version will not be supported in future versions of docker.

运行 image 本地镜像

执行:

docker run -p 8080:8080 -t waylau/docker-spring-boot

最后成功的界面如下:

linux-aihn:~ # docker run -p 8080:8080 -t waylau/docker-spring-boot

 . ____ _ __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
 ' |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot :: (v1.3.3.RELEASE)

2016-03-31 02:33:53.043 INFO 1 --- [ main] c.waylau.docker_spring_boot.Application : Starting Application v1.0.0 on 5dfa67f23534 with PID 1 (/app.jar started by root in /)
2016-03-31 02:33:53.096 INFO 1 --- [ main] c.waylau.docker_spring_boot.Application : No active profile set, falling back to default profiles: default
2016-03-31 02:33:55.050 INFO 1 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@64dac4db: startup date [Thu Mar 31 02:33:54 GMT 2016]; root of context hierarchy
2016-03-31 02:34:03.254 INFO 1 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'beanNameViewResolver' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]]
2016-03-31 02:34:11.228 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2016-03-31 02:34:11.424 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat
2016-03-31 02:34:11.440 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.0.32
2016-03-31 02:34:12.574 INFO 1 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2016-03-31 02:34:12.575 INFO 1 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 17670 ms
2016-03-31 02:34:16.786 INFO 1 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2016-03-31 02:34:16.839 INFO 1 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2016-03-31 02:34:16.842 INFO 1 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2016-03-31 02:34:16.867 INFO 1 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2016-03-31 02:34:16.868 INFO 1 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2016-03-31 02:34:20.432 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@64dac4db: startup date [Thu Mar 31 02:33:54 GMT 2016]; root of context hierarchy
2016-03-31 02:34:21.405 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String com.waylau.docker_spring_boot.Application.home()
2016-03-31 02:34:21.451 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-03-31 02:34:21.457 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-03-31 02:34:22.033 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-03-31 02:34:22.037 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-03-31 02:34:22.658 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-03-31 02:34:23.787 INFO 1 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2016-03-31 02:34:24.497 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-03-31 02:34:24.567 INFO 1 --- [ main] c.waylau.docker_spring_boot.Application : Started Application in 39.766 seconds (JVM running for 46.766) 

访问项目

如果程序正确运行,浏览器访问 http://localhost:8080/,可以看到页面 “Hello Docker World.” 字样。

查看 docker image

可以看到 pull 回来的这个 image 的一个情况、大小等信息。

linux-aihn:~ # docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
waylau/docker-spring-boot latest 3694bcee2712 10 days ago 180.8 MB

源码

获取项目源码, https://github.com/waylau/docker-demos 中的 samples/spring-boot

获取项目镜像, https://hub.docker.com/r/waylau/docker-spring-boot/

参考

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Docker(一)入门:Docker的入门与安装
我们发布一个项目,可能需要Redis、Mysql、Node.js的环境,电脑上运行只需要一分钟,而环境配置可能一天都不一定,充电两小时用时五分钟的概念。
0 0
【Docker】二 Docker安装
这里总结了分别在CentOS环境下和Ubuntu环境下、windows下以及MacOS下,如何安装Docker,如果有帮助,期待收藏关注。
0 0
【云原生】Docker安装和基本概念
【云原生】Docker安装和基本概念
0 0
docker 安装jupyter-nodebook0.35.4
docker 安装jupyter-nodebook0.35.4
0 0
开源项目:Linux系统docker安装jeecg-boot低代码开发平台(更新于2022.2.14)
开源项目:Linux系统docker安装jeecg-boot低代码开发平台(更新于2022.2.14)
0 0
完成docker安装centos7操作系统实战
完成docker安装centos7操作系统实战
0 0
docker18.09 快速添加harbor仓库地址的方法(不是安装harbor)和修改镜像容器存放位置(初始化安装docker时,不是迁移容器镜像)...
docker18.09 快速添加harbor仓库地址的方法(不是安装harbor)和修改镜像容器存放位置(初始化安装docker时,不是迁移容器镜像)...
0 0
成功解决centos7安装docker时 报缺 少container-selinux和fuse-overlayfs包
成功解决centos7安装docker时 报缺 少container-selinux和fuse-overlayfs包
0 0
QGS
(openEuler21.03-x86)docker安装DM8数据库-DBeaver21.3连接
记(openEuler21.03-x86)docker安装DM8数据库-DBeaver21.3连接
0 0
+关注
waylau
大道至简! https://waylau.com/
文章
问答
文章排行榜
最热
最新
相关电子书
更多
玩转Docker社区–“码头工人”的技术进阶心得
立即下载
Docker 镜像原理和最佳实践
立即下载
4天实战 轻松玩转docker
立即下载