docker入门记录1
一. 什么是Docker
1.英文意思是集装箱,很形象。直白点就是将程序运行环境打包在一个箱子里,然后箱子扔到哪里,里边的程序都可以运行。这样以来一个显而易见的好处是:和以前的开发环境等相比,你不用每换一台电脑都重新配置一下环境,你需要做的只是把箱子搬过来就可以了,是不是方便了许多。
2.Docker经常被拿来和虚拟机比较,那么主要区别实际上也很明显了,如下:
虚拟机会虚拟整套运行环境,这里的运行环境包括硬件,用VM等软件创建虚拟机的时候会发现让你选择CPU核心数内存等,然后会选择操作系统,等你创建之后还要安装各种环境,然后才能去用。
Docker就很简单了,只包括运行环境,是不是感觉轻了很多?这种感觉是对的,因为这样一来Docker占用的资源就少了很多,一台服务器上所提供的服务就多了一些,所以最近Docker的应用越来越广泛。
下面是网上找到的一张对比图,从架构方面解释了两者的区别,图片来自于https://yeasy.gitbooks.io/docker_practice/content/introduction/what.html(我猜这也是从官网拿的):


二. 安装过程(Ubuntu,基本就是官方文档的简单翻译,详细见https://docs.docker.com/engine/installation/linux/ubuntulinux/)
1.Ubuntu也并不是每个版本都支持Docker,支持的有以下几个版本(所以想体验先看看系统满足么):
- Ubuntu Xenial 16.04 (LTS)
- Ubuntu Wily 15.10
- Ubuntu Trusty 14.04 (LTS)
- Ubuntu Precise 12.04 (LTS)
2.其他要求
系统版本必须是64位,同时内核必须在3.10以上,老版本会有问题,不推荐使用。检查内核版本可以使用 uname -r 命令。
3.升级apt的源
3.1 使用root用户或者sudo权限
3.2 更新apt源,安装CA证书,命令如下:
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
3.3 添加GPG密钥:
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
3.4 打开(没有就创建) /etc/apt/sources.list.d/docker.list 文件,添加源,根据系统版本添加不同的源,然后保存:
On Ubuntu Precise 12.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-precise main
On 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
3.5 更新apt,使用命令 sudo apt-get update
3.6 删除旧的repo 如果有,使用命令 sudo apt-get purge lxc-docker
3.7 确定Docker 的源正确 apt-cache policy docker-engine
3.8 16.04 15.10 14.04需要安装linux-image-extra-* 的包,使用一下命令:
$ sudo apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
3.9 12.04需要特殊处理,过程如下:
$ sudo apt-get update
$ sudo apt-get install linux-image-generic-lts-trusty
$ sudo reboot
四. 安装Docker
$ sudo apt-get update # Update your APT package index.
$ sudo apt-get install docker-engine # Install Docker.
$ sudo service docker start # Start the docker daemon.
$ sudo docker run hello-world # 运行失败也没什么问题…可以直接pull一个镜像试一下
五. 常用命令
$ sudo docker --help # 列出命令帮助,不知道了就可以过来看看 $ sudo docker pull ubuntu:12.04 # 获取镜像,相当于$ sudo docker pull registry.hub.docker.com/ubuntu:12.04,从注册的仓库获取此镜像 $ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04 # 从指定仓库获取镜像 $ sudo docker images # 列出本地镜像 $ sudo docker run -t -i ubuntu:14.04 /bin/bash # 启动某个镜像 $ sudo docker run ubuntu:14.04 /bin/echo 'Hello world' # 启动容器,和上一条命令一样 $ docker start # 启动某容器,对应的终止是stop $ docker attach # 进入容器
更多的可以参加官网,或者推荐一本中文的gitbook,见链接:https://www.gitbook.com/book/yeasy/docker_practice/details
参考:
https://www.gitbook.com/book/yeasy/docker_practice/details
https://docs.docker.com/
https://www.zhihu.com/question/22969309 (应用场景的讨论)
docker入门记录1的更多相关文章
- Docker入门 .Net Core 使用Docker全程记录
https://www.cnblogs.com/flame7/p/9210986.html Docker入门 第一课 --.Net Core 使用Docker全程记录 微服务架构无疑是当前最火热的 ...
- Docker入门 第一课 --.Net Core 使用Docker全程记录
微服务架构无疑是当前最火热的开发架构,而Docker作为微服务架构的首选工具,是我们必须要了解掌握的. 我通过一天的时间,网上查文档,了解基础概念,安装Docker,试验Docker命令,通过Dock ...
- Docker学习记录--入门了解+安装
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...
- Docker入门教程(四)Docker Registry
Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...
- Docker 入门实践
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...
- Docker入门之七Dockerfile
Dockerfile是一个文本格式的配置文本,可以使用它来创建自定义的镜像.首先我们可以先看一个dockerfile是什么样子.这里可以有一个网站不错:http://dockerfile.github ...
- 【转载】大白话Docker入门(二)
原文:https://yq.aliyun.com/articles/63517?spm=a2c4e.11153940.blogcont63035.15.12011c3fddklk0 上篇的大白话Doc ...
- Docker入门笔记
Docker入门笔记 随笔记录初学Docker遇到的问题, 以免下次再犯. 本机系统Ubuntu18.04 安装 Docker有2个版本 Community Edition (CE) 社区版(免费) ...
- 这可能是最为详细的Docker入门吐血总结
这可能是最为详细的Docker入门吐血总结 https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html Docker是什么? 在计算机技术日新 ...
随机推荐
- 2015 MVP OpenDay 及 Community Camp 演讲PPT分享
这两天来到首都北京参加一年一度的MVP OpenDay 和 MVP Community Camp.其中,31号下午有我的课程:What Will You Make: Windows IoT应用开发入门 ...
- MongoDB学习笔记~MongoDB实体中的值对象
回到目录 注意,这里说的值对象是指在MongoDB实体类中的,并不是DDD中的值对象,不过,两者也是联系,就是它是对类的补充,自己本身没有存在的价值,而在值对象中,也是不需要有主键Id的,这与DDD也 ...
- C预定义宏
作用:对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数. 下面一个例子是打印上面这些预定义的宏的 ...
- redis 集群热备自动切换sentinel配置实战
---恢复内容开始--- Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中一.Sentinel作用:1): ...
- android 关闭/开启软件键盘(hideSoftKeyboard)
/** * 隐藏软键盘 * @param v */ public static void hideSoftKeyboard(View v) { InputMethodManager imm = (In ...
- JavaScript中知而不全的this
都说 JavaScript 是一种很灵活的语言,这其实也可以说它是一个混乱的语言.它把 函数式编程和 面向对象编程糅合一起,再加上 动态语言特性,简直强大无比(其实是不能和C++比的,^_^ ). 这 ...
- IIS+域组策略+hosts:禁止访问指定网站
一.简介 禁止访问网站可以通过多种方式实现,在网络设备上实现大概是性能最好的方式.本文在域服务器上实现该功能,优点是配置简单.可自定义跳转页面,缺点也很明显,遇到熟悉操作系统的用户,修改hosts文件 ...
- LLVM 笔记(二)—— PHI node
ilocker:关注 Android 安全(新手) QQ: 2597294287 什么是 PHI node? 所有 LLVM 指令都使用 SSA (Static Single Assignment,静 ...
- Python class and function json
# coding=utf-8 __author__ = 'student' ''' how to define a class how to extend a class how to make a ...
- 网格弹簧质点系统模拟(Spring-Mass System by Fast Method)附源码
弹簧质点模型的求解方法包括显式欧拉积分和隐式欧拉积分等方法,其中显式欧拉积分求解快速,但积分步长小,两个可视帧之间需要多次积分,而隐式欧拉积分则需要求解线性方程组,但其稳定性好,能够取较大的积分步长. ...