好物优选点击查看详情 京东购买

暂无内容

docker的安装与使用

docker的安装与使用

1.1 docker简介

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

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

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

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

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

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

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

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

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

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

Docker 由下面这些组成:

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

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

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

1.2 docker特性

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

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

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

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

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

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

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

1.3 两个基础概念images与container

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

 

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

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

2.1 docker安装

安装过程:

#yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm

 

注:网上使用 yum install docker-io安装会因为GFW被墙找不到源无法安装。

2.2更改配置文件

[root@localhost /]# vi /etc/sysconfig/docker

other-args列更改为:

other_args=”–exec-driver=lxc –selinux-enabled”

2.3 docker启动

#service docker start

#chkconfig docker on

3.1 docker基本信息查看

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

 

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

 

3.2 docker镜像的获取与删除

(1) docker pull centos :下载centos所有的镜像

 

(2)docker pull centos:centos6  下载centos6镜像

 

(3)docker images  查看本机所有的镜像包

 

 

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

 

(5)docker 导入镜像

docker load –input ~/centos-7.3.tar

(6)docker挂载主机目录 -v

docker run -i -t -v /root/engine/:/root/engine centos /bin/bash

 (7)docker 容器镜像删除

①.停止所有的container,这样才能够删除其中的images

docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令:

docker rm $(docker ps -a -q)

②.查看当前有些什么images

docker images

③.删除images,通过imageid来指定删除谁

docker rmi <image id>

想要删除untagged images,也就是那些id<None>image的话可以用

docker rmi $(docker images | grep “^<none>” | awk “{print $3}”)

要删除全部image的话

docker rmi $(docker images -q)

3.2 docker容器的使用

(1)docker命令帮助

docker的管理命令都是以docker开头,加上一个容易理解的单词,对一个命令的参数不熟悉,可以使用docker command –help查看相关参数意义,例如:

 

(2)docker使用教程

docker 提供把镜像导出export(保存save)为文件的机制,这样就可以把镜像copy到任意地方了。

4.1 方式一:容器export/import

格式:docker export CONTAINER(容器)

使用 docker ps -a 查看本机已有的容器.

4.2 方式一:镜像save/load

格式:docker save IMAGE(镜像)

(1)首先查看所有的容器信息

 

(2)使用docker commit命令将指定容器保存为镜像

 

(3)使用docker images 查看刚才保存的镜像

 

(4)使用docker run 命令测试刚才保存的镜像是否正确

 

(5)使用docker save 命令将镜像导出成文件

 

现在就可以在任何装 docker 的地方加载 刚保存的镜像了。

 

查看加载的镜像

 

查看刚刚加载的镜像tag<none>,现在可修改下镜像的tag名称:

 

docker build命令会根据Dockerfile文件及上下文构建新Docker镜像。构建上下文是指Dockerfile所在的本地路径或一个URLGit仓库地址)。构建上下文环境会被递归处理,所以,构建所指定的路径还包括了子目录,而URL还包括了其中指定的子模块。

构建镜像

将当前目录做为构建上下文时,可以像下面这样使用docker build命令构建镜像:

$ docker build .

Sending build context to Docker daemon 6.51 MB

说明:构建会在Docker后台守护进程(daemon)中执行,而不是CLI中。构建前,构建进程会将全部内容(递归)发送到守护进程。大多情况下,应该将一个空目录作为构建上下文环境,并将Dockerfile文件放在该目录下。

Dockerfile一般位于构建上下文的根目录下,也可以通过-f指定该文件的位置:

$ docker build -f /path/to/a/Dockerfile .

构建时,还可以通过-t参数指定构建成后,镜像的仓库、标签等:

镜像标签

$ docker build -t shykes/myapp .

 

原文链接:https://www.cnblogs.com/inrgihc/articles/7908970.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享