1、什么是Docker?
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景:
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
2、docker部署(yum安装)
前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
使用 yum 安装(CentOS 7下)
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
[root@zabbix ~]# uname -r 3.10.0-327.el7.x86_64
安装 Docker
Docker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里,安装命令如下:
[root@zabbix ~]# yum -y install docker
启动 Docker 后台服务
[root@zabbix ~]# systemctl start docker
搜索镜像:
docker search 镜像名
从docker仓库下载centos 镜像:
docker pull centos
查看镜像仓库:
[root@zabbix ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 2d194b392dd1 9 days ago 195 MB
导出镜像:
docker save centos > /opt/centos.tar.gz
导入镜像:
docker load < /opt/centos.tar.gz
删除镜像:(如果镜像创建了容器则不能删除)
docker rmi 2d194b392dd1
3、创建并启动容器:
命令语法:docker run 镜像的名称 命令
[root@zabbix ~]# docker run centos /bin/echo 'hehe' hehe
docker run --help #查看帮助
查询当前所有的容器列表:(不加-a 只显示正在运行的容器)
[root@zabbix ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5d0bdad0b684 centos "/bin/echo hehe" 3 minutes ago Exited (0) 3 minutes ago epic_mcnulty
定义一个名称为mydocker的容器
[root@zabbix ~]# docker run --name mydocker -t -i centos /bin/bash
--name 定义名称
-t 创建一个伪终端
-i 让这个容器的标准输入保持打开的状态
重新启动容器
[root@zabbix ~]# docker start 10281e93c067 10281e93c067
[root@zabbix ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10281e93c067 centos "/bin/bash" 9 minutes ago Up 31 seconds mydocker
进入容器
[root@zabbix ~]# docker attach 10281e93c067 [root@10281e93c067 /]#
[root@zabbix ~]# nsenter #r如果没有这个命令安装下面的包 (可以访问另一个名称空间) [root@zabbix ~]# yum install util-linux
[root@zabbix ~]# docker inspect --format "{{.State.Pid}}" 10281e93c067 #获取docker容器的PID
44459
通过pid进入容器:
[root@zabbix ~]# nsenter -t 44459 -u -i -n -p [root@10281e93c067 ~]#
进入容器脚本:(执行是传入 容器id)
#!/bin/bash PID=$(docker inspect --format "{{.State.Pid}}" $1) nsenter -t $PID -u -i -n -p
#进入容器(新)
docker exec -it 90c9a8e70994 bash
删除容器
[root@zabbix ~]# docker rm 5d0bdad0b684
[root@zabbix ~]# docker run --rm centos /bin/echo 'hehe' #加参数 --rm 执行完就删除容器
hehe
docker kill $(docker ps -a -q) 删除所以容器
查看容器的详细信息
docker inspect 容器ID 例如:docker inspect 7c7785e1fd2b