• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > 什么是docker Docker入门教程第一篇

什么是docker Docker入门教程第一篇

作者: 字体:[增加 减小] 来源:互联网

本文主要包含Docker入门教程,Docker是什么,Docker简介,Docker安装等服务器相关知识,希望可以进行参考

Docker是个新生的事物,概念类似虚拟化。网上关于Docker入门的东西已经很多了。不过本文探讨了Docker的特点、特性、原理,还介绍了具有中国特色的安装测试过程,另外还谈到了Docker的社区生态和Dockerfile,并使用Dockerfile构建一个nginx环境。

缘起

在几个月前听说Docker,但是一直没有时间去研究,前一段时间趁着azure免费试用,赶紧实验一下,但是卡在了ubuntu基础镜像的下载上(由于国内网络的特殊原因),所以也就搁浅了,这里把经验和体会分享一下。

Docker简介

我觉得简单来说,Docker就是一个应用程序执行容器,类似虚拟机的概念。但是与虚拟化技术的不同点在于下面几点:

1.虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。
2.虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcached。
3.传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。
4.传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。
5.Dockerfile可以基于已经构建好的容器镜像,创建新容器。Dockerfile可以通过社区分享和下载,有利于该技术的推广。

Docker的主要特性如下(摘自Docker:具备一致性的自动化软件部署):

文件系统隔离:每个进程容器运行在完全独立的根文件系统里。
资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。
网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。
写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
目前Docker正处在开发阶段,官方不建议用于生产环境。另外,Docker是基于Ubuntu开发的,所以官方推荐将其安装在Ubuntu的操作系统上,目前只能安装在linux系统上。

Docker的使用入门

Docker官方的安装指导挺详细的。但是由于国内的特殊情况,我这里基于这个安装指导,给出适用于国内开发者的入门过程。基于Ubuntu Precise 12.04 (LTS) (64-bit),推荐这个版本,其他版本参考官方安装手册。

1、Docker的安装
首先,Docker官方声称最好是运行在Linux内核3.8以上,所以要先进行内核升级

# install the backported kernel
sudo apt-get update
sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring

# reboot
sudo reboot

添加Docker仓库的key:

添加镜像,这里直接用俄罗斯的Yandex

sudo sh -c "echo deb http://mirror.yandex.ru/mirrors/docker/ docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update


安装Docker

sudo apt-get install lxc-docker

一般上面的步骤不会有任何问题。

2、Docker镜像下载

Docker运行至少需要一个ubuntu的基础镜像,这个镜像会在你初次尝试执行时自动下载,不过从国内直接用基本上就别想了,需要使用代理。这里用Docker中文社区提供的代理。出处1,出处2。

修改/etc/default/docker文件,取消注释http_proxy的部分:

# If you need Docker to use an HTTP proxy, it can also be specified here.
export http_proxy=http://192.241.209.203:8384/ 
经过笔者测试,上面这个代理也不是很稳定,可能用的人比较多吧。

可用的代理地址(持续关注中)

http://192.241.209.203:8384

然后,你就可以执行下面的命令,测试执行了,由于代理不是很稳定,可能需要多尝试几次(淡定):

sudo docker run -i -t ubuntu /bin/bash

下面这个截图是我成功pull完成,并测试hello world成功(大概尝试了3-4次):


Docker的社区和生态

仓库和镜像

评估一项开源技术很大程度上需要关注它的社区和生态。Docker的生态是通过推送和拉取特定的“镜像(image)包”来展开的。你可以从docker index上搜索需要的镜像。也可以通过下面的命令搜索:

sudo docker search

镜像可以看作是包含有某些软件的容器系统,比如ubuntu就是一个官方的基础镜像,很多镜像都是基于这个镜像“衍生”,该镜像包含基本的ubuntu系统。再比如,hipache是一个官方的镜像容器,运行后可以支持http和websocket的代理服务,而这个镜像本身又基于ubuntu。

通过pull来拉取镜像,将镜像下载到本地,比如

sudo docker pull hipache

通过images查看现在有哪些镜像:

sudo docker images

REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE
ubuntu    13.10    9f676bd305a4  6 weeks ago   178 MB
ubuntu    saucy    9f676bd305a4  6 weeks ago   178 MB
ubuntu    13.04    eb601b8965b8  6 weeks ago   166.5 MB
ubuntu    raring    eb601b8965b8  6 weeks ago   166.5 MB
ubuntu    12.10    5ac751e8d623  6 weeks ago   161 MB
ubuntu    quantal    5ac751e8d623  6 weeks ago   161 MB
ubuntu    10.04    9cc9ea5ea540  6 weeks ago   180.8 MB
ubuntu    lucid    9cc9ea5ea540  6 weeks ago   180.8 MB
ubuntu    12.04    9cd978db300e  6 weeks ago   204.4 MB
ubuntu    latest    9cd978db300e  6 weeks ago   204.4 MB
ubuntu    precise    9cd978db300e  6 weeks ago   204.4 MB

上面的都是镜像,都从属于ubuntu仓库(一般仓库名应该是username/repository格式,如果是直接以repository作为仓库名的,是指官方发布的仓库)。我们拉取ubuntu的时候,实际上是把仓库里的镜像都拉下来了。每个镜像都有一个唯一的IMAGE ID,和一个易于记忆的TAG,可以通过IMAGE ID的前几位或者repository:TAG来标识一个镜像。

Dockerfile和通过Dockerfile来构建Nginx容器
除了pull,镜像也可以通过"编译"得到,这里的"编译"是指一种构建行为,通过手动编写或者从github获取Dockerfile来构建一个镜像。可以把Dockerfile看成是一个脚本,这个脚本会在容器每次启动时执行。一般在Dockerfile里面需要编写基础软件的安装脚本和配置脚本。下面这个Dockerfile是个例子:

#
# Ubuntu Dockerfile
#
# https://github.com/dockerfile/ubuntu
#

# Pull base image.
FROM ubuntu:12.10

# Update OS.
RUN echo "deb http://archive.ubuntu.com/ubuntu quantal main universe multiverse" > /etc/apt/sources.list
RUN apt-get update
RUN apt-get upgrade -y

# Install basic packages.
RUN apt-get install -y software-properties-common
RUN apt-get install -y curl git htop unzip vim wget

# Add files.
ADD root/.bashrc /root/.bashrc
ADD root/.gitconfig /root/.gitconfig
ADD root/scripts /root/scripts

# Set working directory.
ENV HOME /root
WORKDIR /root

FROM指令表示这次构建需要基于ubuntu仓库的12.10这个TAG的镜像,如果本地不存在这个镜像的话,会自动下载镜像。镜像实际上就是编译好的结果。向上面这个Dockerfile,在原始ubuntu的基础上安装了很多常用的软件。

docker官方有Dockerfile的教程:https://www.docker.com/what-docker

实践

首先确保你已经完成上面的安装步骤,并拉取到基础镜像ubuntu:12.10。

现在我们用上面的Dockerfile来构建这个仓库(上面的Dockerfile实际上是github

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker安装和基础用法 Docker入门教程第二篇
  • 什么是docker Docker入门教程第一篇

相关文章

  • 详解利用nginx和docker实现一个简易的负载均衡
  • 热议:Hyper-V可让任何负载都能虚拟化
  • kvm中使用console命令记录的方法
  • Docker 自动部署tomcat详解
  • docker利用WebHook实现持续集成
  • Xen虚拟化进阶篇 Xen平台下虚拟机的实时迁移
  • CentOS 6.5 制作可以ssh登录的Docker镜像
  • 详解从 0 开始使用 Docker 快速搭建 Hadoop 集群环境
  • 如何隔离docker容器中的用户的方法
  • Vrtualbox虚拟机中共享文件夹配置教程

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Docker容器内不能联网的6种解决方案
    • Dubbo 并发调优的几个参数,dubbo并发调优参数
    • 详解将本地docker容器迁移到服务端
    • Docker使用的个人学习总结
    • 详解使用Hyper-V安装Ubuntu Server 16.10
    • 解决ubuntu下vi上下左右方向键出现字母backspace键不能删除字符 问题
    • 详解Docker学习之用commit命令创建镜像
    • 一步一步教你安装openstack(图文)
    • Centos7安装docker compse踩过的坑及解决方法
    • VMware虚拟机安装CentOS 6.9图文教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有