标签:
Docker 包括三个基本概念
镜像(Image)
容器(Container)
仓库(Repository)
理解了这三个概念,就理解了 Docker 的整个生命周期。
Docker 镜像
Docker 镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。
镜像可以用来创建 Docker 容器。
Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做
好的镜像来直接使用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其
中的应用程序。
注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层
Docker 容器
Docker 利用容器来运行应用。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其
中的应用程序。
*注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
Docker 仓库
仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际
上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大
的镜像供用户下载。 国内的公开仓库包括 Docker Pool等,可以提供大陆用户更稳定快速的访问。
当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传
到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
一、升级内核(带aufs模块)
1、yum安装带aufs模块的3.10内核(或到这里下载kernel手动安装:http://down.51cto.com/data/1903250)
cd /etc/yum.repos.d wget http://www.hop5.in/yum/el6/hop5.repo yum install kernel-ml-aufs kernel-ml-aufs-devel
2、修改grub的主配置文件/etc/grub.conf,设置default=0,表示第一个title下的内容为默认启动的kernel(一般
新安装的内核在第一个位置)
# vi /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vmvg-root
# initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.5-3.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-3.10.5-3.el6.x86_64 ro root=/dev/mapper/vmvg-root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vmvg/root rd_LVM_LV=vmvg/swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-3.10.5-3.el6.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vmvg-root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vmvg/root rd_LVM_LV=vmvg/swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
然后重启机器 内核升级成功
# uname -r
3.10.5-3.el6.x86_64
3.升级device-mapper-libs,如果不升级,运行docker -d 会出现 缺少libdevmapper.so.1.02类库的情况:
yum upgrade device-mapper-libs
二、安装docker
1、首先关闭selinux:
setenforce 0 sed -i ‘/^SELINUX=/c\SELINUX=disabled‘ /etc/selinux/config
2、在Fedora EPEL源中已经提供了docker-io包,下载安装epel:
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm sed -i ‘s/^mirrorlist=https/mirrorlist=http/‘ /etc/yum.repos.d/epel.repo
3、yum安装docker-io:
yum -y install docker-io
4、启动docker:
service docker start
chkconfig docker on
5、验证docker是否安装成功:
# docker info Containers: 0 Images: 0 Storage Driver: devicemapper Pool Name: docker-253:0-526372-pool Pool Blocksize: 65.54 kB Backing Filesystem: extfs Data file: /dev/loop0 Metadata file: /dev/loop1 Data Space Used: 305.7 MB Data Space Total: 107.4 GB Data Space Available: 63.39 GB Metadata Space Used: 733.2 kB Metadata Space Total: 2.147 GB Metadata Space Available: 2.147 GB Udev Sync Supported: true Deferred Removal Enabled: false Data loop file: /var/lib/docker/devicemapper/devicemapper/data Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata Library Version: 1.02.117-RHEL6 (2016-04-01) Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 3.10.5-3.el6.x86_64 Operating System: <unknown> CPUs: 4 Total Memory: 7.812 GiB Name: NH-Test-44 ID: JV4M:GCH5:QOLJ:34WT:MQKM:MN5T:BHSO:EGUI:4PKH:U7Q3:OBOO:7WHM WARNING: No swap limit support
6、查看docker版本:
# docker -version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d/1.7.1
OS/Arch (server): linux/amd64
三、docker常用命令
查看版本:docker -v
查看帮助信息:docker
在官方仓库搜寻镜像:docker search centos
查看本地镜像:docker images
下载仓库镜像到本地:docker pull centos:latest
上传本地镜像到仓库:docker push NAME[:TAG]
将镜像保存为tar文件:docker save -o tar文件 镜像ID/镜像tag
将tar文件加载为镜像:docker load -i tar文件
修改镜像tag:docker tag 镜像ID 镜像tag
删除镜像:docker rmi 镜像ID/镜像tag
制作镜像:docker build -t centos:autosshd - < dockerfile.txt
dockerfile.txt:
dockerfile.txt: FROM centos MAINTAINER YH, http://yuanhuan.blog.51cto.com RUN yum install passwd openssl openssh-server -y RUN echo ‘123456‘ | passwd --stdin root RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ‘‘ RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ‘‘ RUN sed -i ‘/^session\s\+required\s\+pam_loginuid.so/s/^/#/‘ /etc/pam.d/sshd RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh EXPOSE 22 CMD ip addr ls eth0 | awk ‘{print $2}‘ | egrep -o ‘([0-9]+\.){3}[0-9]+‘;/usr/sbin/sshd -D
查看镜像历史:docker history 镜像ID/镜像tag
创建容器:docker run -d --name=容器名称 镜像ID/镜像tag
启动容器:docker start 容器名称/容器ID
查看容器:docker ps
重启容器:docker restart 容器名称/容器ID
停止容器:docker stop 容器名称/容器ID
删除容器:docker rm 容器名称/容器ID
暂停容器:docker pause 容器名称/容器ID
恢复容器:docker unpause 容器名称/容器ID
执行命令:docker exec -ti 容器名称/容器ID /bin/bash
获取容器日志:docker logs 容器名称/容器ID
参考文档:
http://www.centoscn.com/image-text/install/2014/1128/4202.html
http://www.mamicode.com/info-detail-891132.html
https://docs.docker.com/engine/installation/linux/centos/
标签:
原文地址:http://www.cnblogs.com/sfnz/p/5650604.html