Docker 在 openSUSE 下的安装、使用

2018 年 6 月 23 日 ImportNew

(点击上方公众号,可快速关注)


来源:waylau ,

waylau.com/docker-installation-opensuse/


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


什么是 Docker


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


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


http://www.importnew.com/24658.html


前置条件


  • 64-bit 系统

  • kernel 3.10+

  • openSUSE 13.2+。本例使用的是 openSUSE Leap 42.1(如果你没有 openSUSE 系统,可以尝试在虚拟机里面装个 openSUSE 系统,可以参阅《Oracle VM VirtualBox 安装和使用》《CentOS 7 安装、配置》)


Oracle VM VirtualBox 安装和使用

https://waylau.com/about-oracle-vm-virtualbox/


CentOS 7 安装、配置

https://waylau.com/centos-7-installation-and-configuration/


使用 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/


参考


  • https://docs.docker.com/engine/installation/linux/SUSE/

  • 《Oracle VM VirtualBox 安装和使用》

    https://waylau.com/about-oracle-vm-virtualbox/

  • 《CentOS 7 安装、配置》

    https://waylau.com/centos-7-installation-and-configuration/


【关于投稿】


如果大家有原创好文投稿,请直接给公号发送留言。


① 留言格式:
【投稿】+《 文章标题》+ 文章链接

② 示例:
【投稿】《不要自称是程序员,我十多年的 IT 职场总结》:http://blog.jobbole.com/94148/

③ 最后请附上您的个人简介哈~



看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

登录查看更多
0

相关内容

Docker - An open platform for distributed applications for developers and sysadmins.
【干货书】现代数据平台架构,636页pdf
专知会员服务
254+阅读 · 2020年6月15日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
手把手教你安装深度学习软件环境(附代码)
数据派THU
4+阅读 · 2017年10月4日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
3D Deep Learning on Medical Images: A Review
Arxiv
12+阅读 · 2020年4月1日
Directions for Explainable Knowledge-Enabled Systems
Arxiv
26+阅读 · 2020年3月17日
Arxiv
35+阅读 · 2019年11月7日
Arxiv
5+阅读 · 2018年6月12日
VIP会员
相关VIP内容
【干货书】现代数据平台架构,636页pdf
专知会员服务
254+阅读 · 2020年6月15日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
相关资讯
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
手把手教你安装深度学习软件环境(附代码)
数据派THU
4+阅读 · 2017年10月4日
Top
微信扫码咨询专知VIP会员