Docker Redis Introduction

Docker-compose >>

Docker Redis を始める

Docker のインストール (CentOS)

💻 Terminal

Docker を開始する

💻 Terminal

Docker バージョンを確認する

💻 Terminal

Redis の最新イメージ(Image)を取得する

💻 Terminal

バージョンを指定して Redis イメージを取得する

💻 Terminal

Redis イメージを確認する

💻 Terminal

Redis サーバーを実行する

💻 Terminal

-d: バックグラウンド(background)で実行する

Docker の redis-cli で接続する

💻 Terminal

ホスト(Host)の redis-cli で接続する: 接続された 6379 ポート(Port)を使用します。

💻 Terminal

Docker の Linux シェル(Shell)に接続する

💻 Terminal

Docker 用 redis.conf

/root/docker/redis-5.0.3/6001/redis.conf ファイルを作成します。
redis.conf の例
📄 redis.conf

  • daemonize yes にすると起動しません。
  • protected-mode no に設定し、bind はコメント(comment)処理します。
  • Working dir を指定します。"/data" は Docker イメージ内のディレクトリを指定します。
  • Redis Cluster でインストールする場合: cluster-announce-ip、port を指定します。 cluster-announce-ip を指定しないと Cluster nodes で照会したときに 別の IP が出ることがあります。

redis.conf ファイルを指定して実行: ボリューム(Volume)指定

💻 Terminal


Docker コマンド

  • docker version: Docker バージョンを表示
  • netstat -tnlp: ポート、プロセスを確認
  • Uninstall old versions: 以前のバージョンを削除
  • 💻 Terminal
  • docker info: Docker 情報を表示
  • 💻 Terminal
  • docker run: コンテナ(Container)を実行する
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 💻 Terminal
  • docker ps: コンテナを表示
    docker ps [OPTIONS]
    notwork_mode: host を使用したため PORTS は表示されませんでした。
  • 💻 Terminal
    • -a, --all: すべてのコンテナを表示: 停止したコンテナも表示します。
    • -q, --quiet: コンテナ ID のみ表示します。
      このような用途で使用します。 docker stop $(docker ps -q)
    • 💻 Terminal
    • -l, --latest: 最も最近作成されたコンテナを表示します。
    • -n, --last: 最近作成されたコンテナを n 個表示します。
    • 💻 Terminal
    • -s, --size: コンテナのサイズも表示します。
    • 💻 Terminal
    • -f, --filter: コンテナをフィルタリングして表示します。
      Label は docker-compose.yml ファイルで指定します。
    • 💻 Terminal
    • --format: 項目を指定して表示します。
      docker ps -a --format "{{.Names}}: {{.Image}} {{.Networks}} Status={{.Status}}"| sort
    • 💻 Terminal
  • docker logs: コンテナのログを表示します。
    docker logs [OPTIONS] CONTAINER
    • docker logs redis6001
    • docker logs -f redis6001   -> tail -f と同じ機能
    • docker logs -t redis6001   -> timestamp を表示
    • journalctl -f -u docker.service   -> CentOS で使用できます。
  • docker inspect: コンテナとイメージの詳細を表示します。
    docker inspect [OPTIONS] NAME|ID [NAME|ID...]
  • docker top: コンテナのプロセス情報を表示します。
    docker top CONTAINER
  • 💻 Terminal
  • docker kill: コンテナを強制終了します。
    docker kill [OPTIONS] CONTAINER [CONTAINER...]
  • docker cp: コンテナ内のファイルをホスト OS のファイルシステムへコピーするか、 ホスト OS のファイルをコンテナのファイルシステムへコピーします。
    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
    docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
  • 💻 Terminal
  • docker port: マッピングされたポート情報を表示します。
    docker port CONTAINER [PRIVATE_PORT[/PROTO]]
    network_node=host の場合は照会されません。
  • docker restart: コンテナを再起動します。
    docker restart [OPTIONS] CONTAINER [CONTAINER...]
  • docker stop: コンテナを停止します。
    docker stop [OPTIONS] CONTAINER [CONTAINER...]
  • docker start: コンテナを開始します。
    docker start [OPTIONS] CONTAINER [CONTAINER...]
  • docker stats: コンテナの状態(使用量)を継続的に更新しながら表示します。 Linux の top コマンドのように。
    docker stats [OPTIONS] [CONTAINER...]
    docker stats: この場合 ID が表示されるため、どのコンテナか確認しにくいです。
  • 💻 Terminal
    docker stats redis6001 redis6002: コンテナ名を指定します。
    💻 Terminal
    docker stats $(docker ps -a --format "{{.Names}}" | sort): コンテナ名を抽出してソートして渡します。
    💻 Terminal
  • docker rename: コンテナ名を変更します。
    docker rename CONTAINER NEW_NAME
  • docker pause: コンテナを一時停止(suspend/freeze)します。 これは cgroups freezer を利用します。 一時停止されるとプロセスの状態と内容は保存されますが、CPU スケジューリングは行いません。 docker ps で見ると Status が Paused になり、 stats で見ると CPU 使用量が 0.00% です。
    docker pause CONTAINER [CONTAINER...]
  • docker unpause: 一時停止(suspend/freeze)されたコンテナを解除(unsuspend/unfreeze)します。
    docker unpause CONTAINER [CONTAINER...]
  • docker rm: コンテナを削除します。
    docker rm [OPTIONS] CONTAINER [CONTAINER...]
    docker rm $(docker ps -a -q --filter 'exited!=0')
  • docker save: イメージを tar ファイルにします。
    docker save [OPTIONS] IMAGE [IMAGE...]
    docker save -o redis2.tar redisgate/redis:5.0.3
  • docker load: tar ファイルをイメージリポジトリへ読み込みます。
    docker load [OPTIONS]
    docker load -i redis2.tar

その他の必要なコマンド

  • コンテナのシェルに接続する
    docker exec -it redis6001 /bin/bash
  • ポート確認
    netstat -tnlp
    lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u
  • Network_mode=bridge の場合の Port Forwarding 情報を表示
    iptables -t nat -L -n
  • Network_mode=bridge の場合の Port Forwarding 設定
  • [root]# cat /proc/sys/net/ipv4/ip_forward
    0
    [root]# sysctl -w net.ipv4.ip_forward=1       設定  
    net.ipv4.ip_forward = 1
    [root]# cat /proc/sys/net/ipv4/ip_forward       確認  
    1

    再起動後も変更した値が適用されるよう sysctl.conf ファイルを修正します。

    [root]# vi /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    firewall-cmd で各ポートごとにフォワーディングする必要はありません。


Docker-compose >>

Email 返事がかかってなれば、メールでお知らせします。