背景:
在工作开发时,因为某些项目需要分布式的框架或者一些集群,由于开发与op沟通成本和时间问题,常常无法快速得到一个开发可用的测试环境,那么就需要程序员在自己的测试机上安装一些集群和工具,但是由于测试机只有一台,集群例如zookeeper集群无法安装,所以选择使用docker来解决本地测试机搭建可用的开发环境。
安装内容:
zookeeper集群(三台)
mysql
redis
mongo
安装docker:
一:首先确认linux下的yum是否为最新
使用 sudo 或 root 权限的用户登入终端。
3.确保yum是最新的
命令:$ yum update
二:安装docker
如果不是root权限下执行以下命令:
sudo yum install docker
如果是root权限下执行以下命令:
yum install docker
提示是否下载:y
Total download size: 27 M
Installed size: 87 M
Is this ok [y/d/N]: y
安装成功提示 :Complete!
三:下载容器并启动
1、不是root权限下执行:sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
1、是root权限下执行:curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
2、sudo chmod +x /usr/local/bin/docker-compose
3、启动docker
不是root权限下执行:sudo systemctl start docker
root权限下执行:systemctl start docker
四:下载docker镜像项目文件zip:
此处下载了同事提供的私有gitlab镜像项目文件,此处不做粘贴。
在local目录下创建文件夹
命令:mkdir docker-service
将镜像zip上传到文件夹
命令:rz 选择文件
解压zip文件:
先检查是否有解压功能
命令:whereis unzip
返回以下则表示可以使用unzip解压文件
unzip: /usr/bin/unzip /usr/share/man/man1/unzip.1.gz
加压zip文件命令(在zip所在文件夹下):unzip 文件名
可以修改以下解压之后的文件名(可以不进行此操作)
命令:mv 旧文件夹名 新文件夹名
执行镜像文件:
命令:/usr/local/bin/docker-compose up -d
成功:
Creating marketing_mysql ... done
Creating marketing-zookeeper1 ... done
Creating marketing-zookeeper3 ... done
Creating marketing_mongo ... done
Creating marketing_redis ... done
Creating marketing-zookeeper2 ... done
Creating marketing_phpmyadmin ... done
2.1 Build once,run anywhere
这个官网对docker的宣传,虽然在实际使用docker在构建的过程中会遇到各种因为网络环境,系统环境或者其他各种不可抗力因素导致镜像构建失败。但是当镜像构建成功之后真的就是构建一次,到处运行。
配合docker-compose来用,你可以在任何地方3秒(不考虑镜像下载时间)启动一整套LNMP环境或者Hadoop+Hbase+Spark+Kafka等任何你提前构建好集群环境,而且这些环境是绝对一致的。
另外,当你要学习一个东西的时候,比如Jenkins,你可以直接拉去Jenkins镜像,1秒启动,完全不用考虑搭建一个Jenkins环境带来的各种成本。
实际上在写Dockerfile和docker-compose.yml文件的过程中可能要比在虚拟里里面搭建环境的成本还要高,但是在这里是一劳永逸的,而且是可以共享的。
2.2 使用docker带来哪些收获
docker可以快速试错和尝试,当我想了解Jenkins的功能的时候我只需要把镜像下载下来,快速启动,按照自己的想法大胆尝试,一旦配置错误无法恢复的时候只要重新启动一个新的镜像就ok了
docker保证环境的绝对一致性可以大大减少环境搭建和环境版本以及依赖不一致的问题。
3. How
怎么使用docker
3.1 安装
以centos为例,centos7已包含docker包,可以只用使用yum安装
#yum install docker
如果提示找不到包可以按照官网教程添加docker源,ce是社区版 ee为企业版
#yum install yum-utils
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#yum install docker-ce
3.2 启动
启动docker
#systemctl start docker
开机自启动docker
#systemctl enable docker
3.3 常用命令
3.3.1 pull
使用docker pull 可以在镜像仓库中拉取镜像,如果不加tag,默认拉取的是latest的镜像
#docker pull hello-world
3.3.2 run
使用docker run 可以使镜像作为容器运行起来,可以加 -id 参数使镜像在后台运行,不输出内容到控制台。
容器在启动之后容器里必须有一个进程是以前台模式运行的,要不容器会以为所有的事情都做完了,就会自动停止。
#docker run hello-world
3.3.3 ps
使用docker ps 可以查看正在运行的容器,使用 -a 参数可以查看所有的容器
#dokcer ps -a
3.3.4 exec
使用docker exec 可以进入到容器内容,使用 -it 参数会分配一个新的终端,后面必须指定sh类型。
# docker exec -it [容器id] bash
3.3.5 other
docker 命令可以使用 docker help查看全部,子命令可以使用docker COMMAND --help查看详情。
下面列举出一些其他常用命令:
start 启动容器
stop 停止容器
inspect 查看容器详情
logs -f 查看容器输出日志
rm 删除镜像
rmi 删除镜像