docker安装
因为要学习redis,RabbitMQ等开源项目,所以便先学习docke技术。网上百度教程,看起来很简单
1、检查内核版本,必须是3.10及以上
uname ‐r
2、安装docker
yum install docker
3、输入y确认安装
4、启动docker
[root@localhost ~]# systemctl start docker
这时问题出现了:Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details
docker 无法正常启动,网上比较主流的说法是docker的engine 基于Device Mapper提供的一种存储驱动,而它又依赖与 devicemapper。所以将其给删除并重启服务,并给出如下解决方案
# rm -rf /var/lib/docker/
# 添加如下内容
# vim /etc/docker/daemon.json
{
"graph": "/mnt/docker-data",
"storage-driver": "overlay"
}
但问题依然存在,后误打误撞安装成功代码如下
卸载老版本的 docker 及其相关依赖
sudo yum remove docker docker-common container-selinux docker-selinux docker-engine
安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源
sudo yum install -y yum-utils
添加yum源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum索引
sudo yum makecache fast
安装 docker-ce
sudo yum install docker-ce
启动 docker
sudo systemctl start docker
经过分析,初步认为是变量路径(PATH)有问题,之前只是shell命令切换到root账户,读取变量的方式是non-login shell,这样的方式下非常多的变量都不会改变。尤其是PATH。所以root用的非常多的命令都仅仅能用绝对路径来运行。这样的方式仅仅是切换到root的身份。可后续查资料对sudo命令操作还是有困扰,不确定是否是这个原因,但两个虚拟机都用同样的办法安装好了docker。
docker常用操作
docker search 关键字:去docker hub上检索镜像的详细信息
docker pull 镜像名:tag:tag是可选的,tag表示标签,多为软件的版本,默认
是latest
docker images:查看所有本地镜像
docker rmi image-id:删除指定的本地镜像
docker run -d//后台启动 -p 6379:6379//暴漏端口,将虚拟机的端口映射到容器端口 --name 名字 id 启动容器
可此时又出现了如下问题
docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:293: copying boots
trap data to pipe caused \"write init-p: broken pipe\"": unknown.
查资料了解到是内核版本太低,和docker不匹配
升级内核代码如下
1. 导入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2. 安装 elrepo 的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
3. 安装内核
在yum的elrepo源中,有最新版本内核。直接yum安装即可。
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
5. 设置系统启动顺序
查看系统启动项:
cat /boot/grub2/grub.cfg |grep menuentry
可以发现有最新版本的内核,此时可以设置最新版本内核为默认启动:
grub2-set-default 'CentOS Linux (4.17.0-1.el7.elrepo.x86_64) 7 (Core)'
此时,查看默认启动的系统版本grub2-editenv list:
显示为'CentOS Linux (4.17.0-1.el7.elrepo.x86_64) 7 (Core)'
6. reboot,重启之后h再次查看 uname -r
之后成功启动容器