docker系列(一):docker基础与安装笔记
2024-09-30 08:17:53
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没有问题。
最新文章
- Github .gitignore详解
- [备忘] Automatically reset Windows Update components
- java web学习总结(十七) -------------------过滤器
- jQuery hover事件
- 使用JSONObject遇到的问题,java.lang.NoClassDefFoundError: net/sf/json/JSONObject
- mysql入门安装遇到问题_2016-10-28
- 2016春招Android开发实习生(网易传媒)笔试
- dynamic-link library shared library of functions and resources
- Lucene学习笔记:一,全文检索的基本原理
- 【Android】 onSaveInstanceState()恢复数据
- 那些年优秀的HTML5活动页面
- sql_autoload_register() 函数 和__autoload() 的区别
- Hadoop 7、MapReduce执行环境配置
- 转 C#中静态方法与非静态方法区别比较
- 身份证js检测
- jquery点击非div区域隐藏div
- win10+ ubuntu12.04双系统安装教程与遇到的问题
- Mybatis源码之Statement处理器CallableStatementHandler(六)
- Android高版本联网失败报错:Cleartext HTTP traffic to xxx not permitted解决方法
- golang项目git-subtree完美解决差异包管理
热门文章
- h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片
- 【转载】一些VS2013的使用技巧
- ASI和AFN实现POST异步请求的相同功能的代码
- Intel processor brand names-Xeon,Core,Pentium,Celeron----Pentium
- 【iOS开源码】(1):CCLHTTPServer
- android-custom-tab-with-viewpager
- JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面
- C#WinForm窗体监听/拦截操作动作
- MySQL优化之——触发器
- 有遍历struct中字段信息的函数或方法