概述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux
机器上,也可以实现虚拟化。
系统环境
Centos7
系统
系统要求
Docker安装要求CentOS
系统的内核版本高于3.10
。通过uname -r
命令查看你当前的内核版本。
$ uname -r
准备工作
- 更新
yum
,通过root
权限登录Centos
。运行以下命令,确保yum
包为最新版本。
$ sudo yum update
- 卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine
- 安装依赖包,
yum-util
提供yum-config-manager
功能,另外两个提供devicemapper
驱动依赖
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置
yum
源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
- 查看仓库中所有docker版本,这里可以直接安装最新版本或者安装特定版本。
$ yum list docker-ce --showduplicates | sort -r
- 安装
docker
,根据需要选用下述命令
$ sudo yum install docker-ce # 由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
- 启动并加入开机启动
$ sudo systemctl start docker # 启动docker
$ sudo systemctl enable docker # 加入开机启动
验证安装
- 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version
上述命令会返回Client
和Server
相关信息,若报错则会返回响应的错误信息。
安装docker-compose
在线安装
$ curl -L https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-`uname -s`-`ur/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
错误信息
Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/doc
可能是因为下载不全造成,后通过离线安装解决该问题。
离线安装
- 前往
github
下载发布版本docker-compose - 将文件上传到
/usr/local/bin/
目录下,重命名为docker-compose
,修改文件权限:
$ chmod +x /usr/local/bin/docker-compose
- 执行
docker-compose -v
,返回版本信息则安装成功。
安装可视化界面
# docker pull portainer/portainer
# docker run -d --name portainerUI -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
部署成功后访问地址:http://localhost:9000/#/dashboard
,默认用户名admin,首次登录会要求设置密码。
安装bitnami/redmine
问题
- 问题描述:容器中报错
permission denied, mkdir '/bitnami/data
问题分析:实际上这是因为volumes
对应的宿主机的目录没有写权限的问题,开始以为是文件夹所属问题,使用chown并未解决。
解决方法: 赋予data(volume使用的目录)目录读写权限。
#赋予data目录读写权限
$ chmod 777 /Users/xiawei/Documents/bitnami/data/odoo_data
其中对应的docker-compose
中的配置如下。还可通过ls -l
命令来具体查看文件夹的权限并作处理。
volumes:
- '/Users/xiawei/Documents/bitnami/data/odoo_data:/bitnami/odoo'
Docker安装错误及处理
问题
- 问题描述
执行
# systemctl restart docker
直接返回以下内容
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
继续执行systemctl status docker.service
仅返回启动失败信息。
问题排查方法
执行sudo dockerd –debug
将会打印docker整个启动过程,按日志的错误信息处理对应故障。
- 防火墙相关问题
日志:
failed to start daemon: Error initializing network controller: Error creating default "bridge" network: Failed to program NAT chain: ZONE_CONFLICT: 'docker0' already bound to a zone
解决方法:
- 检查
firewall-cmd
中是否存在docker zone
$ firewall-cmd --get-active-zones
- 如果
docker
区域可用,将接口更改为docker0
(非持久化)
$ sudo firewall-cmd --zone=docker --change-interface=docker0
- 如果
docker
区域可用,请将接口更改为docker0
(持久化)
$ sudo firewall-cmd --permanent --zone=docker --change-interface=docker0
需要重启防火墙
$ sudo systemctl restart firewalld
- 启动docker
$ systemctl start docker
- 查看
$ systemctl status docker