1 什么是docker

docker是基于GO语言编写的开源容器项目,诞生于2013年初,到目前为止,已经经历了6年的发展演变。现如今,docker已经非常火爆,特别是在一线IT企业,部署、运维等工作都借助docker来展开。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
如何你还不熟悉docker,那就赶紧学习起来吧。

2 docker安装与配置

安装docker有多种方法,本文介绍使用最多,也是官方推荐的方法:通过docker源安装。其他安装方法可参考官方文档
在安装之前,还有一些工作需要进行:
1)卸载删除系统中所有与docker相关的内容(docker docker-engine docker.io):
$ sudo apt-get remove docker docker-engine docker.io containerd runc

如果系统中并未安装过docker相关内容,那么这几个软件包卸载都提示未安装,继续下一步即可。

(2)更新镜像源-
先安装软件包支持https协议的源:
$ sudo apt-get update
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
添加源的gpg密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证密钥指纹为“9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88”。
$ sudo apt-key fingerprint 0EBFCD88
添加docker源:
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
完成上述步骤之后,才是真正的安装docker:
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
结束上述步骤之后,如果没有报错,docker就成功安装了。
可以验证一下是否安装成功:
$ docker --version # 获取版本号
Docker version 18.09.6, build 481bc77
可以看到,成功获取了刚安装的docker的版本号,证明安装成功了。
(3)配置docker用户组
在默认情况下,只有root用户和docker组(安装docker时自动创建)的用户才能直接运行docker命令,但出于安全考虑,一般不会直接使用root用户,但普通用户(非root、docker用户)运行docker命令需加上sudo,为避免这一麻烦,可以将需要使用docker的用户加入docker用户组中。
$ sudo usermod -aG docker username
注意:将用户加入docker用户组后,退出当前终端,重新登陆方可生效。
尝试获取并运行我们的第一个docker吧!
获取hello-world镜像:
$ docker pull hello-world
运行镜像,启动容器:
$ docker run hello-world
运行后,有一下输出:
Hello from Docker!
This message shows that your installation appears to be working correctly.
惊喜吧,提示成功运行,再次证明刚安装的docker没有问题。
 
 
 
 
 

最新文章

  1. Github .gitignore详解
  2. [备忘] Automatically reset Windows Update components
  3. java web学习总结(十七) -------------------过滤器
  4. jQuery hover事件
  5. 使用JSONObject遇到的问题,java.lang.NoClassDefFoundError: net/sf/json/JSONObject
  6. mysql入门安装遇到问题_2016-10-28
  7. 2016春招Android开发实习生(网易传媒)笔试
  8. dynamic-link library shared library of functions and resources
  9. Lucene学习笔记:一,全文检索的基本原理
  10. 【Android】 onSaveInstanceState()恢复数据
  11. 那些年优秀的HTML5活动页面
  12. sql_autoload_register() 函数 和__autoload() 的区别
  13. Hadoop 7、MapReduce执行环境配置
  14. 转 C#中静态方法与非静态方法区别比较
  15. 身份证js检测
  16. jquery点击非div区域隐藏div
  17. win10+ ubuntu12.04双系统安装教程与遇到的问题
  18. Mybatis源码之Statement处理器CallableStatementHandler(六)
  19. Android高版本联网失败报错:Cleartext HTTP traffic to xxx not permitted解决方法
  20. golang项目git-subtree完美解决差异包管理

热门文章

  1. h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片
  2. 【转载】一些VS2013的使用技巧
  3. ASI和AFN实现POST异步请求的相同功能的代码
  4. Intel processor brand names-Xeon,Core,Pentium,Celeron----Pentium
  5. 【iOS开源码】(1):CCLHTTPServer
  6. android-custom-tab-with-viewpager
  7. JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面
  8. C#WinForm窗体监听/拦截操作动作
  9. MySQL优化之——触发器
  10. 有遍历struct中字段信息的函数或方法