Docker學習過程 (11-實戰-Memcached)

前言:Memcached 是一個將數據緩存在內存的工具,由於其優化合理,被廣泛使用在了 Web 服務器中。[1]
今天用基於 debian9,也就是 debian:stretch 來構建一個 Memcached 容器。

準備

把 stretch 源換成國內163源以加快軟件下載速度。其軟件源與 Dockerfile 在一個目錄,文件名爲 sources.list,通過 ADD 指令加入容器。

Dockerfile 內容
# Memcached
# VERSION 0.0.1

# 基礎鏡像
FROM debian:stretch
# 維護者信息
MAINTAINER Geng Li

# 覆蓋原來軟件源
COPY sources.list /etc/apt/sources.list

# 創建運行時用戶
RUN groupadd -r memcached && useradd -r -g memcached memcached

# 安裝Memcached
RUN apt-get update \
# 編譯時記錄下需要的依賴,安裝完成後移除,減小鏡像體積
    && buildDeps='gcc make perl libc6-dev libevent-dev wget' \
    && apt-get install -y --no-install-recommends libevent-2.0-5 $buildDeps \
# 下載Memcached 源碼
    && wget -O memcached.tar.gz "http://www.memcached.org/files/memcached-1.5.12.tar.gz" \
    && mkdir -p /usr/src/memcached \
    && tar -xzf memcached.tar.gz -C /usr/src/memcached --strip-components=1 \
    && rm memcached.tar.gz \
    && cd /usr/src/memcached \
# 配置、編譯、安裝
    && ./configure \
    && make \
    && make install \
    && cd / \
    && rm -rf /usr/src/memcached \
    && apt-get purge -y --auto-remove $buildDeps

# 使用創建的用戶來運行 Memcached
USER memcached

# 暴露默認端口 11211
EXPOSE 11211

# 啓動Memcached
CMD ["memcached"]

如圖彩色更好看些。
在這裏插入圖片描述

sources.list 內容
deb http://mirrors.163.com/debian/ stretch main non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib

各文件位置如下:
在這裏插入圖片描述

編譯
sudo docker -t gengli/memcached:0.0.1 ./Memcached

gengli/memcached:0.0.1換成你想要的其他名字, ./Memcached換成你的 Dockerfile 所在的文件夾。
其部分過程如最後的圖。

測試
sudo docker images

在這裏插入圖片描述
通過上面構建的 Memcached 鏡像創建一個新的容器,並將容器中 Memcached 所監聽的 11211 端口映射到物理機上。
由於 Memcached 支持簡單的指令格式,可以通過 Telnet 等簡單工具連接到 Memcached,並向它發送指令來測試 Memcached 的情況。
通過 Memcached 的 add、replace 和 get 三個指令來模擬一個簡單的緩存寫入和讀取的流程。add、replace 和 get 的使用格式如下:

add <key> <flags> <exptime>  \r\n <value> \r\n
replace <key> <flags> <exptime> <bytes> \r\n <value> \r\n
get <key>

其中:

  • \r\n 回車鍵
  • flags 標記位,用於判斷緩存一致性
  • exptime 緩存的過期時間,如果是 0 則採用 Memcached 允許的最大時間
  • bytes 緩存數據佔用的字節長度
  • value 緩存的數據

add 增加一個緩存,名爲 hello,值爲 world。STORED 結束。

add hello 1 0 5
world
STORED

get獲取其值

get hello

replace更換其值:

replace hello 1 0 5
kitty
STORED
get hello

和前一章一樣,有拒絕訪問的問題,等網絡知識學多了再回過頭來研究怎麼回事。
在這裏插入圖片描述

部分編譯過程展示


在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
參考書目:熊昌隆.沒什麼難的Docker入門與開發實戰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章