Fork me on GitHub

CentOS7 64位 之快速玩转Docker入门环境部署

 
因为工作接触linux不是很多,所以装了虚拟机偶尔玩玩,装一些开发平台工具,第一次玩docker 糗态百出,感谢春哥指导,真的是超级有耐心。♥ 
入门学习,最重要的就是耐心跟细心,我因为不小心 踩不少坑,内容较多排版不是很规范,如有问题 请留言指正,我及时修改。
 
注意一点:docker最新版需要linux64位版本支持,之前用ubuntu32位 安装最新版失败。
镜像文件下载地址:http://mirrors.163.com/centos/7.3.1611/isos/x86_64/
 我选择的是4G的DVD版本,下载完成后 装在虚拟机上。
 
Step1 : 进入系统terminal
 输入sudo yum install docker 提示不在sudoer文件里
 

  Step2: 切换root用户

进入超级用户root模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。(当然,你也可以直接用root用) 

添加文件的写权限。也就是输入命令"chmod u+w /etc/sudoers"

 Step3: 为创建的用户添加sudo权限

编辑/etc/sudoers文件。也就是输入命令"vi /etc/sudoers",输入"i"进入编辑模式,找到这一 行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名),然后保存(就是先按一 下Esc键,然后输入":wq")退出。 

 撤销文件的写权限。也就是输入命令"chmod u-w /etc/sudoers"
 
 Step4: 安装docker(此处更新阿里云镜像安装)
yum update到最新 
yum install -y yum-utils device-mapper-persistent-data lvm2
 
yum list installed | grep docker
查询安装过的
 

 


yum -y remove docker-client.x86_64
命令 执行删除安装包
执行Docker安装脚本
# curl -sSL https://get.docker.com/ | sh
# yum install -y docker-selinux
或者使用阿里云 安装
https://help.aliyun.com/document_detail/60742.html?spm=5176.11065259.1996646101.searchclickresult.3f8def44MHwoQJ

切换用户到ming,这样ming就有了sudo权限
切换命令"su ming"
  添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新并安装Docker-CE(社区版)
  1. sudo yum makecache fast
  2. sudo yum -y install docker-ce
 开启Docker服务
  1. sudo service docker start
 

安装docker完成 输入"docker version"

 

 

 提示:国内镜像站点设置docker镜像源很多要求docker版本在1.8以上

 
 Step5: 配置镜像源:
您可以用163的,也可以用daocloud的,此处我用的后者。
 网易分巢:https://c.163.com/
 daocloud镜像市场:https://hub.daocloud.io/
 
先把镜像源映射到daocloud上
 使用docker之前要先为docker设置国内镜像,参考地址:https://www.daocloud.io/mirror#accelerator-doc
配置一个加速器 ,就是原来要去国外网站去下,现在用daocloud提供的 .
 
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://22826b6a.m.daocloud.io

该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json(没有时新建该文件)  中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。更多详情请访问文档

 

要求重启docker

输入命令"sudo systemctl restart docker"

但是执行了这个命令以后重启会报错,原因是在配置文件里多加了一个,

 

此错误原因是json文件多了一个逗号","

执行命令docker daemon

解决办法:打开/etc/docker/daemon.json这个文件,删除掉,保存,重启docker.

1、vi /etc/docker/daemon.json   输入命令 i进入编辑模式
找到那个逗号,按下X键删除这个,

 

 


按下esc,输入:wq保存文件

提示没写的权限,就输入:wq!

 下图是因为输错命令强制关闭terminal重新打开进入编辑文件时出现的提示,有变化副本是否需要保存。

 

 

 rm /var/tmp/daemon.json.swp    直接删除变化的文件。其实上面的问题,折腾了一圈原来是没加sudo   esc退出         重新sudo vi /etc/docker/daemon.json

编辑保存搞定! 

 

2、重启docker:sudo systemctl restart docker

查看服务状态 命令   sudo docker info

成功。

 

安装完成,终于可以浪了!!!

 配置Docker开机自启动:

#  systemctl enable docker.service

测试: 安装mysql

sudo docker pull mysql:5.7.13

 这个命令是下载指定版本的mysql包,不加后面版本号 默认下载latest最新版
sudo docker images  查看已有镜像,生产环境时最好带版本号 ,我此处未带版本号结果 导致mysql版本不明。 学习的话,影响不大,生产环境一定要注意版本,因为你不知道你的镜像版本是什么
latest不是永远不变的,是随着时间在变的 。
 
对于所有镜像,都有一些环境变量可以在启动的时候进行配置,具体的可以查看官网的定义 。
 

接下来建立容器:

对于容器简单解释下,更多信息请百度 google查找。

Docker 容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。Docker在一个单一的容器内捆绑了关键的应用程序组件,这也就让这容器可以在不同平台和云计算之间实现便携性。其结果就是,Docker就成为了需要实现跨多个不同环境运行的应用程序的理想容器技术选择。

Docker安装完成之后直接 pull了mysql镜像, 然后才创建容器,比如容器A。创建的这个容器A是mysql镜像的一个实例。 我可以再创建个容器B ,创建的mysql root密码可以和A不一样。 再比如我docker pull了tomcat镜像,我可以创建若干tomcat容器 ,每个tomcat容器都是一个tomcat镜像实例。

 

选择第一个进去,有很多使用命令

 

因为我是mysql的最新版,所以把mysql:tag改成mysql就好了(docker pull mysql时候tag还是要指定的,否则很容易出错)

上面的命令这样是可以启动,但是只能在容器里面访问mysql ,这个里面还缺最重要的一个,就是端口映射,在-e前面加一个-p 3306:3306   因为端口没有映射出来,外面是访问不到的,所以如果需要在外面访问mysql,那就需要做端口映射。
some-mysql 容器名字 方便查找,如果不命名,会随机生成一个容器名字(此处建议自己命名)
别忘记加参数 run。。。。

 

 如果忘记加端口。。。。

停掉容器  sudo docker stop (容器名)

 

  删除容器命令 “sudo docker rm 容器名”,命令运行之后再用sudo docker ps -a查看还有容器没。

 输入 "sudo docker ps" 查看容器状态 如果出现up 说明启动成功。

 输入ifconfig查看容器所在 IP ,docker0是docker的内部私有IP

 

确定好之后  通过外部机器客户端连接 经测试成功!

 

按照这个mysql的启动经验,基本算入门,但是在容器里面,只启动一个这个东西是没有意义的。需要配合其它服务,这个后面会学习。

一些常用docker命令:

 docker logs 容器名

这是查看容器的日志,如果启动失败什么的,可以通过这个命令看为什么失败 
 常用命令:
1、停止:docker stop 容器名
2、启动:docker start 容器名
3、重启:docker retstart 容器名
4、查看日志:docker logs 容器名
5、进入容器:docker exec -it 容器名 /bin/bash
6、创建并运行容器:docker run 里面有很多参数,去网上看了
7、docker ps 查看正在运行的容器
8、docker ps -a查看所有容器,不管是否在运行
9、docker images 查看所有本地镜像
 
这些命令都学习了 就算入了docker的门了。另外一定注意 命令别打错,别漏掉参数,还要注意当前账户操作权限 sudo。
 docker pull 下的所有镜像 都是由指定基于centos 或者debian的 ,from是 关键字, 也可以理解成每个镜像包都打包了 一个极简的操作系统。。docker 并不会基于宿主系统环境,否则容器多了,环境变量就会乱套。
对于挂载的使用场景:比如tomcat里的webapps目录 ,如果不挂载到宿主目录 ,则需要每次copy网站程序 文件到容器里,显得很繁琐,挂载后直接 放在宿主机就行了。另外一个使用场景就是 mysql的data文件,如果有一天
mysql容器挂了,无法启动,里面的文件也没法弄出来,数据就会丢失,如果data文件挂载到宿主本机目录 ,我重新启动一个容器 重新挂载连接下 就能立即恢复了。 类似的场景有很多。
 还有一些不常用命令:
1、docker save 保存镜像到文件
2、docker load 从文件加载镜像
3、docker commit 把容器提交成一个镜像
4、docker push 把镜像推送到远程服务器
 
 docker run 命令里有个很常用的参数 -v,可以把本地的文件系统跟docker容器里面的文件系统进行挂载。
基本上所有的容器的启动都是这样。 比如你要把mysql的数据文件放到宿主机上,不希望放到容器里面,这样不会因为容器挂掉,导致你数据损坏。
还有个很常用的命令 docker inspect 镜像名(不是容器名),很多 Docker 用户都知道 docker inspect 命令,该命令用于获取容器/镜像的元数据,其中 -f 参数可以用于获取指定的数据,例如使用 docker inspect -f {{.IPAddress}} 来获取容器的 IP 地址

 

还有几个问题思考一下:
1、假如我的镜像一直在变化,如何对镜像进行版本控制
2、如何让容器之间互联,比如tomcat容器去连接mysql容器
3、如何快速启动容器副本
4、容器默认只能在单个宿主机上跑,跟别的宿主机上的容器是没办法沟通的,那怎么让容器在集群的宿主机上部署

经过春哥指点 提供以下思路,当然更高阶的需要自己不断学习和实践积累。

1、使用Dockerfile进行版本控制
2、使用docker的link或docker compose
3、docker compose的scale命令
4、使用Kubernetes

 

 ----------------------------------------------------------------------------------------------踩坑分割线------------------------------------------------------------------------------------------
 
如果是ubuntu的 也要装64位,否则安装不了最新版本的 docker,问题多多!
以下是安装失败的过程,当时并不没在意自己的ubuntu版本是32位还是64位,也不知道docker最新版本需要64位支持。。。。
有兴趣的可以看看。
 
 
 1. $ sudo apt-get update  更新 系统 升级相关软件的版本

 

 2.$ sudo apt-get install docker

 

3.安装完之后命令查看安装版本
输入 docker -v

 

 或者输入docker version

可以看到1.0.1版本相当低, centos7上的 最新版本比较高,同样最新版本

client  version 1.22.6  

client api version 1.24

这是因为 docker最新版本的 要求64位,所以32位系统上docker版本很低。

 

4. 当时根据春哥发的文章,http://guide.daocloud.io/dcs/daocloud-9153151.html

决定还是升级下 docker版本 

先安装支持https

 

 
卸载旧版本命令
 sudo apt-get remove docker  

 

使用新命令安装支持https
 

配置apt允许以 HTTPS方式拉取镜像安装:

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

输入y 继续

 

添加Docker官方 GPG key:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

校验 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88.

$ sudo apt-key fingerprint 0EBFCD88
 
利用如下命令配置稳定镜像
 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 

 

最后运行安装命令的的结果就是i686不是被支持的platform(i686是32位),吐血!   只得重新安装一个新的CentOS7 64位版本。
 
posted @ 2017-08-25 12:18  低调的神  阅读(2089)  评论(0编辑  收藏  举报