共计 2340 个字符,预计需要花费 6 分钟才能阅读完成。
这篇文章主要介绍“Docker 怎么运行一个 Redis 服务”,在日常操作中,相信很多人在 Docker 怎么运行一个 Redis 服务问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker 怎么运行一个 Redis 服务”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
安装
参考官网即可。我在 Ubuntu-14.04 上通过 User Guide 没有任何问题。
Docker 神奇的 AUFS 文件系统
执行:docker info 可以看到系统级别的信息。如下所示,可以看到 docker 使用的存储驱动叫 aufs。简而言之,AUFS 就是一个可堆叠联合文件系统,通过 aufs 可灵活组装一个目标容器,如在一个只读的操作系统上叠加一个可读可写的应用程序容器,当应用程序执行过程中发生数据变化,只在可写的容器层发生,这样可实现灵活的容器组装(如替换操作系统层而不影响应用程序层),同时无需像 image 一样需要保存成一个大文件,节省存储空间。
Containers: 2
Images: 20
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Dirs: 24
Execution Driver: native-0.2
Kernel Version: 3.13.0-24-generic
WARNING: No swap limit support
烦人的 sudo
ubuntu 下每次执行 docker 都要输入 sudo,比较烦人,可通过如下配置简化
# 添加当前用户到 docker 用户组里,注意这里的 littcai 为 ubuntu server 登录用户名
sudo gpasswd -a littcai docker
# 重启 Docker 后台监护进程
sudo service docker restart
# 重启之后,尝试一下,是否生效
docker version
#若还未生效,则系统重启,则生效
sudo reboot
运行运行一个 Redis 服务
执行如下命令:运行一个名为 common-redis 的 docker 容器,- d 表示以 daemon 方式运行,- p 表示将容器内的 6379 端口映射到宿主主机的 6379 端口,这样一个最简单的 redis 服务就创建好了。
sudo docker run --name common-redis -d -p 6379:6379 redis
连接到 Redis 服务
运行 redis-cli 命令并 link 到之前运行的 common-redis 服务上,-it 表示开一个 tty 终端,提供交互模式,–rm 表示自动删除已运行存在的相同 image 的容器
sudo docker run -it --link common-redis:redis --rm redis sh -c exec redis-cli -h $REDIS_PORT_6379_TCP_ADDR -p $REDIS_PORT_6379_TCP_PORT
Attach 到 Container
有时候我们需要重新进入一个正在运行的 container,这里我们可以使用 attach 命令,其中 - i 表示以交互方式访问。当需要退出时,需使用 ctrl-p + ctrl-q(注意是连续两个指令) 而不是 exit(exit 会导致容器停止)。
docker attach -i f2b0ae55d07a
保存修改(new image)
首先用 docker ps - a 命令查询所有已创建的容器,如下图所示,得知其 CONTAINER ID=f2b0ae55d07a
执行如下命令保存镜像,其中 - m 表示本次提交的注释,- a 为 author,f2b0ae55d07a 为容器 ID,ycai/ubuntu-jdk 为镜像名称(此处通过前缀方式增加了用户名作为分类,方便查询),v1 为 tag 名。
docker commit -m= Basic JDK ENV -a= ycai f2b0ae55d07a ycai/ubuntu-jdk:v1
提交成功后,可通过 docker images 命令查看镜像仓库中是否有刚才保存的镜像,如下图所示
拷贝文件
拷贝容器内文件到 Host
sudo docker cp container:/path hostpath
拷贝 Host 文件到容器内
注:这个操作不修改原来的 image 内容,而是再它的基础上新建一个 image.
sudo docker insert image url path
挂载 Host 目录到容器中
通过 - v 参数可以将 Host 的指定目录 mount 到目标容器的指定目录,这样就可以直接在 Host 中修改文件而不用每次都复制到容器中了。
sudo docker run --name tomcat -v /home/user/webapps:/opt/tomcat/webapps ubuntu-tomcat
Docker 容器连接未理解问题
问题:通过 - v 挂载了 Host 的一个目录到容器中,然而退出后通过 start 命令再启动该容器,则 Host 该目录下的文件变化没法体现到容器中,容器中在该目录下的文件操作无法体现到 Host 中,及 mount 失效了。
现象:将容器内挂载目录下的文件删掉,退出容器,再重新启动进入容器,发现目录又被重新 mount 上了,而且又支持双向同步了,诡异
分析:该目录同时也是 Host 通过 mount 方式挂载的一个远端存储,由于 Host 上 mount 失效导致三者之间不同步
到此,关于“Docker 怎么运行一个 Redis 服务”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!