centos6.8下docker安装部署

author author     2022-08-04     520

关键词:

1 docker简介

    Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器。它原本是 dotCloud 启动的一个业余项目,并在前些时候开源了。它吸引了大量的关注和讨论,导致 dotCloud 把它重命名到 Docker Inc。它最初是用 Go 语言编写的,它就相当于是加在 LXCLinuX Containerslinux 容器)上的管道,允许开发者在更高层次的概念上工作。

Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境。Docker 利用了 LXCcgroups Linux 自己的内核。和传统的虚拟机不同的是,一个 Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的。

 

    Docker类似虚拟机的概念,但是与虚拟化技术的不同点在于下面几点:

    1.虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。

    2.虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcached

    3.传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。

    4.传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。

5.Dockerfile可以基于已经构建好的容器镜像,创建新容器。Dockerfile可以通过社区分享和下载,有利于该技术的推广。

 

    Docker 会像一个可移植的容器引擎那样工作。它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种 Linux 服务器上。这大大地提高了程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机环境等等。

    Docker也是一个云计算平台,它利用LinuxLXCAUFUGo语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离。

    Docker 由下面这些组成:

    1. Docker 服务器守护程序(server daemon),用于管理所有的容器。

    2. Docker 命令行客户端,用于控制服务器守护程序。

3. Docker 镜像:查找和浏览 docker 容器镜像。

 

2 docker特性

    文件系统隔离:每个进程容器运行在完全独立的根文件系统里。

    资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。

    网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。

    写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。

    日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。

    变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。

交互式ShellDocker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell

 

3 两个基础概念imagescontainer

    ContainerImage Docker的世界里,Image是指一个只读的层(Layer),这里的层是AUFS里的概念,最直观的方式就是看一下docker官方给出的图:

技术分享 

 

    Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不同的Container可以共享底层的只读文件系统(同一个Kernel),使得你可以跑N多个Container而不至于你的硬盘被挤爆了!这个只读的层就是Image!而如你所看到的,一个可写的层就是Container

ImageContainer的区别是什么?很简单,他们的区别仅仅是一个是只读的层,一个是可写的层,你可以使用docker commit 命令,将你的Container变成一个Image,也就是提交你所运行的Container的修改内容,变成一个新的只读的Image,这非常类似于git commit命令。

 

4 docker安装与启动

安装docker

# yum install docker-io

 

更改配置文件:

# vi /etc/sysconfig/docker

other-args列更改为:other_args="--exec-driver=lxc --selinux-enabled"

 

启动docker服务:

#  service docker start

 

docker加入开机启动:

# chkconfig docker on

 

基本信息查看

    docker version:查看docker的版本号,包括客户端、服务端、依赖的Go

# docker version

 

docker info :查看系统(docker)层面信息,包括管理的images, containers数等

# docker info

 

5 镜像的获取与容器的使用

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

 

搜索镜像:

docker search <image>:在docker index中搜索image

# docker search ubuntu12.10

 

下载镜像:

docker pull <image> :从docker registry server 中下拉image

# docker pull chug/ubuntu12.10x64

注意:这种下载方式会出现跨洋网络延迟,下载速度很慢,或者下载失败。此时可以使用国内DaoCloud团队提供的服务Docker Hub Mirror,到DaoCloud官网注册账号,获得镜像下载路径,如下:

技术分享 

 

 

# docker pull daocloud.io/library/ubuntu:precise-20160819 //下次下载需要新的链接。

 

查看镜像

    docker images: 列出images

    docker images -a :列出所有的images(包含历史)

    docker images --tree :显示镜像的所有层(layer)

docker rmi  <image ID>: 删除一个或多个image

 

使用镜像创建容器

# docker run docker pull daocloud.io/library/ubuntu:precise-20160819  /bin/echo hello world   

hello world

 

交互式运行

# docker run -i -t docker pull daocloud.io/library/ubuntu:precise-20160819  /bin/bash

[email protected]:/#

 

查看容器

    docker ps :列出当前所有正在运行的container

    docker ps -l :列出最近一次启动的container

    docker ps -a :列出所有的container(包含历史,即运行过的container

docker ps -q :列出最近一次运行的container ID

 

再次启动容器

    docker start/stop/restart <container> :开启/停止/重启container

    docker start [container_id] :再次运行某个container (包括历史container

    docker attach [container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)

    docker start -i <container> :启动一个container并进入交互模式(相当于先start,在attach

    docker run -i -t <image> /bin/bash :使用image创建container并进入交互模式, login shell/bin/bash

    docker run -i -t -p <host_port:contain_port> :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。

注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container

 

删除容器

    docker rm <container...> :删除一个或多个container

    docker rm `docker ps -a -q` :删除所有的container

docker ps -a -q | xargs docker rm :同上, 删除所有的container

 

6 持久化容器与镜像

    6.1 通过容器生成新的镜像

    运行中的镜像称为容器。你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。不过,你使用docker commit <container-id> <image-name>命令可以把一个正在运行的容器变成一个新的镜像。

docker commit <container> [repo:tag] 将一个container固化为一个新的image,后面的repo:tag可选。

 

6.2 持久化容器

    export命令用于持久化容器

docker export <CONTAINER ID> > /tmp/export.tar

 

6.3 持久化镜像

    Save命令用于持久化镜像

docker save 镜像ID > /tmp/save.tar

 

 6.4 导入持久化container

 # cat /tmp/export.tar | docker import - export:latest

 

 6.5 导入持久化image

# docker load < /tmp/save.tar

 

imagetag

# docker tag daa11948e23d load:tag

 

 6.6 一些其它命令

    docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行

    docker inspect $CONTAINER_ID #docker inspect <image|container> 查看imagecontainer的底层信息

    docker build <path> 寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image

    docker build -t repo[:tag] 同上,可以指定repo和可选的tag

    docker build - < <dockerfile> 使用指定的dockerfile配置文件,dockerstdin方式获取内容,使用此配置生成新的image

docker port <container> <container port> 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到.

 

7 一些使用技巧

       Docker实际上把所有东西都放到/var/lib/docker路径下了。

# ls -F

containers/  devicemapper/  execdriver/  graph/  init/  linkgraph.db  repositories-devicemapper  volumes/

 

containers目录当然就是存放容器(container)了,graph目录存放镜像,文件层(file system layer)存放在graph/imageid/layer路径下,这样我们就可以看看文件层里到底有哪些东西,利用这种层级结构可以清楚的看到文件层是如何一层一层叠加起来的。


本文出自 “666鐨刡log” 博客,请务必保留此出处http://wellsay.blog.51cto.com/11241653/1852596

centos6.8源码安装部署zabbix3.4.5

本文档主要介绍CentOS6.8在lamp环境下安装以及部署Zabbix3.4.5(注:本文部署环境为php-5.6.23+mysql-5.6.24+httpd-2.2.15+CentOS6.8)基本流程:1.准备编译环境2.yum源配置并且安装php和Apche的所需包3.mysql服务的启动和创建zabbix账号4.下载zabbix3.4.5... 查看详情

centos6.8源码安装部署zabbix3.4.5

本文档主要介绍CentOS6.8在lamp环境下安装以及部署Zabbix3.4.5(注:本文部署环境为php-5.6.23+mysql-5.6.24+httpd-2.2.15+CentOS6.8)基本流程:1.准备编译环境2.国内阿里云yum源配置并且安装php和Apche的所需包3.mysql服务的启动和创建zabbix账号4.... 查看详情

centos6.8部署vnc服务

...到机房,因此vnc是一款不错的替代软件。 下面记录在centos6环境下安装vnc的操作:(1)查看本机是否已经安装vncserver[[email protected]~ 查看详情

docker学习笔记(99-1)centos6.8上安装docker

一、升级操作系统,准备工作1、检查linux内核版本号和是否支持aufs[[email protected]~]#uname-r2.6.32-642.el6.x86_64[[email protected]~]#grepaufs/proc/filesystems3.1以后才支持 2、升级linux内核,安装aufsyum安装带aufs模块的3.10内核(或到这... 查看详情

centos6.8上安装部署jhipster-registry(代码片段)

必备环境:jdk8,git,maven1、安装nodejs #由于采用编译的方式很容易出现一些意外的惊喜,所以我们这儿直接用yum命令安装#1.查看nodejs版本(命令中不要加-y如果版本不是我们需要的可以选择不安装)我的是0.10.48的老版本yuminst... 查看详情

centos6.8下安装redmine

一、实验环境 centos6.864位所需安装包:ruby-2.3.4.tar.gz、rubygems-1.8.25.tgz、redmine-2.3.2.tar.gz 二、安装步骤1、安装必要的软件包yuminstall-ygccgcc-c++makeapr-develapr-util-develzlib-develcurl-develexpat-develge 查看详情

centos6.8部署zabbix

一、安装Nginx[[email protected]~]#yum-yinstallpcre-develpcreopensslopenssl-develzlibzlib-develgccgcc-c++[[email protected]~]#groupaddnginx&&useradd-gnginx-s/sbin/nologinnginx[[email  查看详情

centos6.8下安装elasticsearch

1.安装java环境2.安装elasticsearchcd/usr/local/srcwgethttps://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.4.tar.gztar-xvfelasticsearch-1.3.4.tar.gzcdelasticsearch-1.3.4./bin/elas 查看详情

centos6.8下安装dc2012

前言centos6.8系统中安装synopsys公司的designcompiler2012。流程1.请掌握必要的linux知识,否则你将获得成吨的困难。linux系统:centos6.864位。32位系统不适用本教程。Synopsys软件包百度云地址:http://pan.baidu.com/s/1qXYyVBu 密码:5spa2.解压... 查看详情

centos6.8系统部署lnmp环境

搭建LNMP环境(CentOS6)本文档介绍如何使用一台普通配置的云服务器ECS实例或联网的虚拟主机搭建LNMP平台的web环境。Linux:自由和开放源码的类UNIX操作系统。Nginx:轻量级网页服务器、反向代理服务器。MySQL:关系型数据库管理... 查看详情

linux下docker安装部署(代码片段)

 Linux下docker安装部署 环境说明该文档安装环境为CentOSLinuxrelease7.9.2009,内核版本为3.10.0-1160.81.1.el7.x86_64 安装方法使用Docker仓库进行安装 准备1、Docker要求CentOS系统的内核版本高于3.102、确保yum包更新到最新3、确保... 查看详情

centos6.8下安装matlab2009(图片转帖)

前言如何优雅的在centos6.8上安装matlab2009.流程 不过我个人安装过程完后启动matlab的时候又出现了新问题: errorwhileloadingsharedlibraries:libXpm.so.4:cannotopensharedobjectfile:Nosuchfile...系统提示无法找到libXpm.so.4,然后通过命令whereislib... 查看详情

centos6.8下svn安装

1.yum-yinstallsubversionsvnserve--version查看版本2.@创建SVN仓库目录mkdir-p/data/svn/repositories 3.@创建版本库svnadmincreate/data/svn/repositories4.@进入conf目录(该svn版本库配置文件)authz文件是权限控制文件passwd是帐号密码文件svnserve.conf 查看详情

centos6.8下一键安装lamp环境

【下载地址】  https://lamp.sh/  https://lnmp.org/install.html【安装方法】  https://lamp.sh/install.html  执行脚本后,将会依次选择安装的软件包,选择完成后,按任意键运行脚本即可    https://lnmp.org/install.html  安装... 查看详情

mysql安装部署02-virtualbox虚拟机上centos6.8安装mysql5.1.73(代码片段)

...置,以便内外网均可访问4、安装前环境配置4.1、解决Centos6下yum无法使用的问题4.2、卸载系统自带MySQL4.3、系统配置:关闭selnux和防火墙5、安装6、总结1、环境准备VirtualBox版本:6.1MySQL版本:MySQL5.1.73操作系统版本&... 查看详情

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(环境centos6.8)

资源:3台centos6.8虚拟机4cpu8G内存ip10.19.54.111-1131、SystemRequirements及安装环境配置并关闭防火墙与SELinuxForfullsupportofprocessisolationunderLinuxarecentkernel>=3.10isrequired.由于我使用的centos6.8,所以要升级内核(http://www.cnblog 查看详情

docker-安装与部署

本文在CentsOS下安装Docker  1.安装前准备工作    系统要求:      在CentOS下需要64位的CentsOS7     OSrequirements      ToinstallDocker,youneedthe64-bitversionofCentOS7.    需要删除非官方的DockerPackage   ... 查看详情

docker在windows环境下的安装部署

一、准备  系统环境:Windows1064bit  Docker安装包:DockerforWindowsInstaller.exe二、安装步骤  1、开启系统的hyper-v2、重启电脑后,安装docker。3、配置docker共享盘(C#项目文件所在盘符)4、配置docker配置镜像(由于用官方镜像比... 查看详情