共計 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 小編會繼續努力為大家帶來更多實用的文章!