码迷,mamicode.com
首页 > 其他好文 > 详细

docker基础

时间:2018-01-19 11:50:20      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:lob   -o   rmi   nbsp   mmu   官网   art   project   process   

Docker 是什么 ?
         Docker
的英文本意是“搬运工”,在程序员的世界里, Docker 搬运的是集装箱( Container),
集装箱里装的是任意类型的 App,开发者通过 Docker 可以将 App 变成一种标准化的、可移
植的、自管理的组件,可以在任何主流系统中开发、调试和运行。
        
说白了 ,docker 是一种用了新颖方式实现的轻量级虚拟机,类似于 VM,但是在原理和应用上和VM 的差别还是很大的.并且 docker 的专业叫法是应用容器(Application Container)

         Docker 基于 Go 语言开发,代码托管在 Github 上,并遵循 Apache 2.0 开源协议。 Docker 容器可以封装任何有效负载,几乎可以在任何服务器之间进行一致性运行。换句话说,开发者
构建的应用只需一次构建即可多平台运行。运营人员只需配置他们的服务,即可运行所有的
应用。

为什么要使用 docker
         1 、快速交付应用程序

         2 、更容易部署和扩展

         3 、效率更高

         4 、快速部署也意味着更简单的管理

         5容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是
        
在硬件层面实现。

Docker 内部:
要理解 Docker 内部构建,需要理解以下三种部件:
         Docker 镜像 - Docker imagesDocker 镜像是 Docker 容器运行时的只读模板, 镜像可以用来创建 Docker 容器
         Docker
仓库 - Docker registeriesDocker 仓库用来保存镜像,可以理解为代码控制中的代码仓库
         Docker
容器 - Docker containersDocker 利用容器来运行应用, 一个 Docker 容器包含了所有的某个应用运行所需要的环境,每一个 Docker 容器都是从 Docker 镜像创建的。

 

Docker 底层技术
docker 底层的 2 个核心技术分别是 Namespaces Control groupsNamespaces 用来隔离各个容器
         1)pid namespace: 不同用户的进程就是通过 pid namespace 隔离开的,且不同 namespace 中可以有相同 pid

         2) net namespac: 网络隔离是通过 net namespace 实现的,每个 net namespace 有独立的 networkdevices, IP addresses, IP routing tables, /proc/net 目录

         3) ipc namespace: container 中进程交互还是采用 linux 常见的进程间交互方法 (interprocess communication -IPC),包括常见的信号量、消息队列和共享内存。 container 的进程间交互实际上还是 host 上具有相同 pid namespace 中的进程间交互

         4) mnt namespace: 类似 chroot,将一个进程放到一个特定的目录执行

         5) uts namespace: UTS("UNIX Time-sharing System") namespace 允许每个 container 拥有独立的 hostname domain name, 使其在网络上可以被视作一个独立的节点而非 Host 上的一个进程

         6) user namespace: 每个 container 可以有不同的 user group id, 也就是说可以在 container 内部用container 内部的用户执行程序而非 Host 上的用户

 

docker的安装:

         可通过yum install docker 直接安装(但是有时会有更新或者什么的需要杀死进程才可安装)

            也可在官网下载yum源然后直接安装https://docs.docker.com

            附:也可以按照官方文档安装
1. Log into your machine as a user with
sudo or root privileges.
2. Make sure your existing yum packages are up-to-date.
3
Add the yum repo
$ sudo tee /etc/yum.repos.d/docker.repo<<-'EOF'
[dockerrepo]
name=DockerRepository
baseurl=
https: //yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https: //yum.dockerproject.org/gpg

 

 

 

systemctl   start   docker                     //启动docker

docker  info                                   //查看docker详细信息

docker  images                                 //查看docker镜像

docker    version                              //查看docker版本

docker  pull   docker.io/centos               //获取centos镜像

docker   pull    docker.io/jdeathe/centos-httpd     //下载镜像

docker       search  centos                       //查找镜像

创建自己的镜像:

:使用docker  commit 来扩展一个 image

docker  run   -it   docker.io/centos:centos6      //创建容器

yum   -y   install    httpd                       //容器中安装服务

docker  commint  -m  “备注”  -a  “用户信息”  容器ID    镜像名称  //创建镜像

docker  run   -it  centos:httpd   /bin/bash       // 启动容器              

创建完成

 

二:dockerfile 创建 image

技术分享图片

Docker  build   -t   centos:httpd  .          //创建镜像

 

 

Docker     tag       源镜像名称/ID      新镜像名称:标签              //修改镜像标签

Docker     rmi       镜像名称/ID                    //删除镜像(-f:强制删除)

Docker     save    -o   centos6.tar  centos:6       // 将镜像保存至本地

Docker     load  --input  centos.tar                //上传镜像到镜像库

容器:

Run               //新建

Exit                //退出

Docker    run  -it  centos:6  /bin/bash                   //创建容器并打开

Docker    run  -it  centos:6  /bin/bash                   //创建容器并放置后台运行

Docker    run  centos:6  /bin/echo  ‘hello  word’       //输出hello word 之后容器终止

当利用 docker run 来创建容器时, Docker 在后台运行的标准操作包括:
1.检查本地是否存在指定的镜像,不存在就从公有仓库下载
2.利用镜像创建并启动一个容器
3.分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
4.从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
5.从地址池配置一个 ip 地址给容器
6.执行用户指定的应用程序
7.执行完毕后容器被终止

 

Docker   ps  //查看正在运行的容器

Docker   ps  -a  //查看全部容器

Docker start  容器名称/ID      //启动容器

Docker stop   容器名称/ID      //终止容器

Docker restart   容器名称/ID       //重启容器

Docker  inspect  容器名称/ID       //查看容器详细信息

进入容器的三种方式:

Docker  attach   容器名称/ID       //进入容器(不推荐使用当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。)

Docker        exec  -it  容器名称/ID     /bin/bash   //进入容器(推荐使用)

 

Docker  rm  容器名称/ID      //删除容器(-f:强制)

Docker  rm  $(docker  ps -aq)    //批量删除容器


docker基础

标签:lob   -o   rmi   nbsp   mmu   官网   art   project   process   

原文地址:http://blog.51cto.com/13544810/2062719

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!