1.docker入门+docker搭建redis6
docker安装
1、更新update到最新的版本
yum update
2、卸载老版本docker
yum remove docker docker-common docker-selinux docker-engine
3、安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、查看docker版本
yum list docker-ce --showduplicates|sort -r
6、安装docker
yum install docker-ce-18.03.1.ce -y
7、启动docker
systemctl start docker
8、加入开机自启
systemctl enable docker
9、配置国内镜像
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://cr.console.aliyun.com/"]
}
查看 docker是否在运行:ps -aux | grep docker
安装redis6
wget https://github.com/antirez/redis/archive/6.0-rc2.tar.gz
tar -zxvf 6.0-rc2.tar.gz
cd redis-6.0-rc2/
/usr/local/bin/gcc -v
使用内建 specs。
COLLECT_GCC=/usr/local/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/lto-wrapper
目标:x86_64-pc-linux-gnu
配置为:../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
线程模型:posix
gcc 版本 7.1.0 (GCC)
~ CC=/usr/local/bin/gcc make
~ make install
~ redis-server
注意过程中的问题:
1. 时间问题:如果出现时间问题可通过如下操解决
~ date -s 04/15/2020
2. 编译出现如下问题:gzip: stdin: invalid compressed data--format violated
原因:是windows下上传到服务器存在这不统一的编码问题:如ascii; 解决直接在服务器上wget
3. 如果make下的报错
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
#include <jemalloc/jemalloc.h>
^
compilation terminated.
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/local/redis-5.0.5/src'
make: *** [all] Error 2
如上的报错只需要编译的时候追加MALLOC=libc即可
~ make MALLOC=libc
4. Redis6安装是需要gcc5以上的版本
可参考这两篇文章安装gcc5:
https://blog.****.net/qilimi1053620912/article/details/83862513
https://www.jianshu.com/p/f7cd0e2416b9
https://blog.****.net/qq_42609381/article/details/80915295
sudo yum install wget
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.1.0/gcc-7.1.0.tar.gz
tar -xvf gcc-7.1.0.tar.gz
cd gcc-7.1.0
--可能需要安装:
sudo yum -y install bzip2
-- 会很久
./contrib/download_prerequisites
mkdir build
cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
-- 会很久
make && sudo make install
sudo ldconfig
gcc -v
5. server.h:1022:5: 错误:expected specifier-qualifier-list before ‘_Atomic’ _Atomic unsigned int lruclock; /* Clock for LRU eviction */
参考文章:https://wanghenshui.github.io/2019/12/31/redis-ce
这个问题是在redis6.0编译的时候会经常出现,解决的办法只需要手动指定gcc进行编译安装;注意默认编译redis的时候是会选择gcc低于5的版本
find / -name gcc
/usr/local/bin/gcc
CC=/usr/local/bin/gcc make
docker基本概念
Docker 包括三个基本概念:
镜像:Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,-个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
容器:Docker容器是由Docker镜像创建的运行实例。Docker利用容器来运行应用。
容器:Docker容器是由Docker镜像创建的运行实例。Docker利用容器来运行应用。
仓库:Docker仓库是用来包含镜像的位置,Docker提供一 个注册服务器(Register) 来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
Docker运行中使用的默认仓库是Docker Hub公共仓库。
dockerfile介绍及构建镜像
1. dockerfile指令
1.1. FROM 指定基础镜像
1.2. RUN 执行命令
1.3. MAINTAINER:
1.4. EXPOSE
1.5. ADD
1.6. ENV
2. dockerfile构建redis镜像
FROM centos
RUN groupadd -r redis && useradd -r -g redis redis
RUN yum update -y ; \
yum -y install gcc automake autoconf libtool make wget epel-release gcc-c++;
RUN mkdir -p /usr/src/redis; \
wget https://github.com/antirez/redis/archive/5.0.7.tar.gz; \
tar -zxvf 5.0.7.tar.gz -C /usr/src/redis; \
rm -rf 5.0.7.tar.gz
RUN groupadd -r redis && useradd -r -g redis redis
RUN yum update -y ; \
yum -y install gcc automake autoconf libtool make wget epel-release gcc-c++;
RUN mkdir -p /usr/src/redis; \
wget https://github.com/antirez/redis/archive/5.0.7.tar.gz; \
tar -zxvf 5.0.7.tar.gz -C /usr/src/redis; \
rm -rf 5.0.7.tar.gz
cd /usr/src/redis/redis-5.0.7 && make && make PREFIX=/usr/local/redis install;
创建镜像:docker build -t redis5 .
注:1.下载安装的文件要及时删除 2.RUN的层次不要太多
docker hub 发布
1.2.登录:docker login ,退出登录:decker logout
1.3.常见问题:
1.3.1.Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
处理方法:检查用户名是否正确
1.3.2.error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifest
问题原因:解析ip不可用 ,dns域名没有解析的原因
处理方法:
1.yum install bind-utils
2.vi /etc/hosts
34.205.88.205 registry-1.docker.io
3.systemctl restart docker
1.4.创建容器仓库
1.5发布镜像
格式:docker push 注册名/镜像名:tag
生成本地镜像:docker tag redis5 932908195/redis:v1
发布镜像:docker push 932908195/redis:v1
下载镜像:docker pull 932908195/redis:v1