以下操作均在虚拟机CentOS7中
一、Docker安装与启动
安装
通过以下命令查看内核版本为3.10,支持docker
uname -r
3.10.0-693.el7.x86_64
安装一些必要的系统工具和添加软件源信息
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker-ce即社区版
sudo yum -y install docker-ce
启动
启动docker后台服务
sudo systemctl start docker
说明
docker默认安装在/var/lib目录下,启动的容器将放在containers目录下
[root@localhost docker]# pwd
/var/lib/docker
[root@localhost docker]# ls
containers image network overlay2 plugins swarm tmp trust volumes
二、安装Redis
安装
直接运行pull
docker pull redis5.0
查看镜像,我pull一个最新版和5.0因此显示两条
[root@localhost containers]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/redis 5.0 a55fbf438dfd 4 weeks ago 95 MB
docker.io/redis latest a55fbf438dfd 4 weeks ago 95 MB
启动redis
启动redis-server
docker run --name some-redis -d redis redis-server --appendonly yes
启动redis-cli
docker run -it --network some-network --rm redis redis-cli -h some-redis
报错
docker: Error response from daemon: Conflict. The container name “/xxxx” is already in use …
出现上面错误是因为容器重名了,可以换一个name启动,也可以将原来容器删除
docker container rm xxxx
自定义配置文件启动
创建redis目录并将redis.conf文件copy到目录下
[root@localhost containers]# cd /home/redis
[root@localhost redis]# ls
redis.conf
自定义方式启动
docker run -d --privileged=true -p 6379:6379 -v /home/redis/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data --name frog-redis redis redis-server /etc/redis/redis.conf --appendonly yes
–privileged=true 容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-p 6379:6379 端口映射
-v /home/redis/redis.conf:/etc/redis/redis.conf 映射配置文件
-v /home/redis/data:/data 把redis持久化的数据在宿主机内显示,做数据备份
redis-server /etc/redis/redis.conf 这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动
–appendonly yes redis启动后数据持久化
如果报端口映射失败,可以重启一下docker
service docker restart
查看状态
[root@localhost containers]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1196c78b1c78 redis “docker-entrypoint…” 17 seconds ago Up 16 seconds 0.0.0.0:6379->6379/tcp frog1-redis
测试连接
使用jedis客户端测试
Jedis jedis = new Jedis("192.168.74.10",6379);
Set<String> keys = jedis.keys("*");
System.out.println(keys); // [] 为空但是说明连接通了
jedis.close();
三、Docker常用简单命令
查看当前正在运行容器
docker ps
查看所有容器状态
docker ps -a
启动或停止容器
docker start/stop id/name
查看本地镜像
docker images
删除容器
docker rm id/name
删除镜像
docker rmi id/name