docker-elasticsearch

#一、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安装(centos系)
2.1 docker安装

     常用的docker镜像地址

- Ubuntu/Debian: curl -sSL https://get.docker.com | sh

- Linux 64bit binary: https://get.docker.com/builds/Linux/x86_64/docker-1.7.1

- Darwin/OSX 64bit client binary: https://get.docker.com/builds/Darwin/x86_64/docker-1.7.1

- Darwin/OSX 32bit client binary: https://get.docker.com/builds/Darwin/i386/docker-1.7.1

- Linux 64bit tgz: https://get.docker.com/builds/Linux/x86_64/docker-1.7.1.tgz

- Windows 64bit client binary: https://get.docker.com/builds/Windows/x86_64/docker-1.7.1.exe

- Windows 32bit client binary: https://get.docker.com/builds/Windows/i386/docker-1.7.1.exe

- Centos 6/RHEL 6: https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm

- Centos 7/RHEL 7: https://get.docker.com/rpm/1.7.1/centos-7/RPMS/x86_64/docker-engine-1.7.1-1.el7.centos.x86_64.rpm

- Fedora 20: https://get.docker.com/rpm/1.7.1/fedora-20/RPMS/x86_64/docker-engine-1.7.1-1.fc20.x86_64.rpm

- Fedora 21: https://get.docker.com/rpm/1.7.1/fedora-21/RPMS/x86_64/docker-engine-1.7.1-1.fc21.x86_64.rpm

- Fedora 22: https://get.docker.com/rpm/1.7.1/fedora-22/RPMS/x86_64/docker-engine-1.7.1-1.fc22.x86_64.rpm

-  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

如果docker启动失败,并在/var/log/docker日志中提示如下信息:
则可以通过如下命令解决:

yum upgrade device-mapper-libs

#二、docker安装(debian系)
一、安装docker.io包之前,需要先设置使用backports源

编辑/etc/apt/sources.list文件,加入下面这一句:

deb http://http.debian.net/debian jessie-backports main

然后执行apt-get update命令更新源。

二、安装docker.io包
确保已经按照第一步的操作步骤添加了backports源,然后执行下面的命令。

$ sudo apt-get update 
$ sudo apt-get install docker.io

确认docker运行是否正常。

$ sudo docker run 

三、Debian 8如何删除docker?
Debian系统下面删除docker,要按照下面几个步骤来删除。

  1. 使用purge命令清除docker-io包。
$ sudo apt-get purge docker-io

或者用autoremove命令将不再使用的依赖的包删除掉。

$ sudo apt-get autoremove --purge docker-io 

需要注意的是上面的命令只是删除了docker.io包,并不会删除下载的镜像,产生的容器文件,卷,已经用户创建的配置文件。如果你觉得不爽,可以用下面的命令干掉它们:

$ rm -rf /var/lib/docker

然后手工删除创建的配置文件。

备注:docker这个名字已经被占用了,所以debian下面的docker的包的名字是docker.io

#[centos 6.7]docker 不能连接问题
docker 安装好后运行命令:

1 docker images

提示错误如下:

Get http:///var/run/docker.sock/v1.19/images/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

或下面提示

Post http:///var/run/docker.sock/v1.19/images/create?fromImage=ubuntu%3Alatest: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

解决问题如下:

service docker restart
sudo /sbin/chkconfig --add docker
sudo /sbin/chkconfig --list docker
sudo /sbin/chkconfig docker on
service docker restart

然后就可以尽情的玩耍了

#三. Docker使用
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,通过image的id来指定删除谁

docker rmi <image id>

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

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

要删除全部image的话

docker rmi $(docker images -q)

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

4.1 方式一:容器export/import

格式:docker export CONTAINER(容器)

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

4.2 方式一:镜像save/load

格式:docker save IMAGE(镜像)

使用  docker commit <CONTAIN-ID> <IMAGE-NAME>命令把一个正在运行的容器保存为镜像,如:

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

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

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

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

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

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

#五、elasticsearch的安装
执行 docker search elasticsearch 可以查找elasticsearch版本

执行 docker pull elasticsearch:5.5.0 可以拉取镜像

使用 docker images 查看镜像

通过镜像,启动一个容器,并将9200和9300端口映射到本机

docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch elasticsearch:5.5.0

查看已经启动容器

docker ps

通过 docker ps 可以获得容器的CONTAINER ID

然后通过 docker exec -it ${CONTAINER ID} /bin/bash 进入容器
安装命令 plugin install mobz/elasticsearch-head
docker-elasticsearch 用的是apt-get 包管理工具

如果出现elasticsearch 异常退出,多半是配置文件有问题
目录挂载

 -v /opt:/opt

#docker 管理
1 启动docker服务
首先需要知道启动docker服务是:

`service docker start`
或者:`systemctl start docker`

2 关闭docker服务
关闭docker服务是:

`service docker stop`
或者:`systemctl stop docker`

Docker的镜像称为image,容器称为container。

对于Docker来说,image是静态的,类似于操作系统快照,而container则是动态的,是image的运行实例。

比如,有一个image名称为ubuntu,那么比如现在我们启动这个image的container并且进入到这个container的bash命令行中:docker run -t -i ubuntu /bin/bash

官网是这么说的:

docker run: runs a container.
ubuntu: is the image you would like to run.
-t: flag assigns a pseudo-tty or terminal inside the new container.
-i: flag allows you to make an interactive connection by grabbing the standard in (STDIN) of the container.
/bin/bash: launches a Bash shell inside our container.`
理解很简单:

docker run:启动container
ubuntu:你想要启动的image
-t:进入终端
-i:获得一个交互式的连接,通过获取container的输入
/bin/bash:在container中启动一个bash shell`

这样就进入container的内部了:
root@af8bae53bdd3:/#

如果有运行中的container,可以在container所在的外部操作系统中运行:
docker ps
查看到这个container。

如果想看到所有的container,包括运行中的,以及未运行的或者说是沉睡镜像,则运行:
docker ps -a
如果要退出就:
Ctrl-D
或:root@af8bae53bdd3:/# exit

3 启动docker某个image(镜像)的container(容器)
如果想再次打开这个container,运行:
docker start goofy_almeida
其中“goofy_almeida”是容器的名称。

4 进入container(容器)
4.1 使用“docker attach”命令进入
这个时候container运行在后台,如果想进入它的终端,则:
docker attach goofy_almeida
就可以了。

4.2 使用“docker exec -it”命令进入
使用“docker attach”命令进入container(容器)有一个缺点,那就是每次从container中退出到前台时,container也跟着退出了。

要想退出container时,让container仍然在后台运行着,可以使用“docker exec -it”命令。每次使用这个命令进入container,当退出container后,container仍然在后台运行,命令使用方法如下:
docker exec -it goofy_almeida /bin/bash
goofy_almeida:要启动的container的名称
/bin/bash:在container中启动一个bash shell
这样输入“exit”或者按键“Ctrl + C”退出container时,这个container仍然在后台运行,通过:
docker ps
就可以查找到。

5 退出container
输入:
exit
或者按键:Ctrl + C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值