| 知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
neo@MacBook-Pro ~ % docker info Containers: 9 Running: 8 Paused: 0 Stopped: 1 Images: 5 Server Version: 18.09.2 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce runc version: 09c8266bf2fcf9519a651b04ae54c967b9ab86ec init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 4.9.125-linuxkit Operating System: Docker for Mac OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 1.952GiB Name: linuxkit-025000000001 ID: IT7A:OHXM:XG4E:HX53:ZMA3:GIRA:CYMP:6IJF:QKZ5:MQI4:6LU2:ZD7Z Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): true File Descriptors: 70 Goroutines: 88 System Time: 2019-03-31T04:23:51.43837431Z EventsListeners: 2 HTTP Proxy: gateway.docker.internal:3128 HTTPS Proxy: gateway.docker.internal:3129 Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine
iMac
iMac:~ neo$ docker info Client: Debug Mode: false Plugins: buildx: Build with BuildKit (Docker Inc., v0.3.1-tp-docker) scan: Docker Scan (Docker Inc., v0.3.3) app: Docker Application (Docker Inc., v0.8.0) Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 19.03.13-beta2 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 4.19.76-linuxkit Operating System: Docker Desktop OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 3.848GiB Name: docker-desktop ID: LWQ5:KBRL:SE7U:SJZ4:ANS2:JEQD:5YJO:MVRG:HIEA:XDWD:LQIZ:EJPX Docker Root Dir: /var/lib/docker Debug Mode: false HTTP Proxy: gateway.docker.internal:3128 HTTPS Proxy: gateway.docker.internal:3129 Registry: https://index.docker.io/v1/ Labels: Experimental: true Insecure Registries: 127.0.0.0/8 Registry Mirrors: https://registry.docker-cn.com/ Live Restore Enabled: false Product License: Community Engine
sudo docker start silly_bohr silly_bohr $ sudo docker stop silly_bohr silly_bohr $ sudo docker restart silly_bohr silly_bohr
OPTIONS說明: -a :顯示所有的容器,包括未運行的。 -f :根據條件過濾顯示的內容。 --format :指定返回值的模板檔案。 -l :顯示最近創建的容器。 -n :列出最近創建的n個容器。 --no-trunc :不截斷輸出。 -q :靜默模式,只顯示容器編號。 -s :顯示總的檔案大小。
sudo docker ps
$ sudo docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 84391d1de0fc ubuntu:14.04 /bin/echo Hello worl 31 minutes ago Exit 0 romantic_ritchie
$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 13b2a4a31455 ubuntu:14.04 /bin/bash 3 hours ago Up 3 hours silly_bohr $ sudo docker top silly_bohr UID PID PPID C STIME TTY TIME CMD root 23225 22908 0 12:17 pts/14 00:00:00 /bin/bash
$ sudo docker inspect silly_bohr
[{
"ID": "13b2a4a3145528d087c9d1580fa78aaa52e8a9bb973c9da923bceb9f9b9e7e5a",
"Created": "2014-07-17T04:17:45.262480632Z",
"Path": "/bin/bash",
"Args": [],
"Config": {
"Hostname": "13b2a4a31455",
"Domainname": "",
"User": "",
"Memory": 0,
"MemorySwap": 0,
"CpuShares": 0,
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"PortSpecs": null,
"ExposedPorts": null,
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Env": [
"HOME=/",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Dns": [
"8.8.8.8",
"8.8.4.4"
],
"Image": "ubuntu",
"Volumes": null,
"VolumesFrom": "",
"WorkingDir": "",
"Entrypoint": null,
"NetworkDisabled": false,
"OnBuild": null
},
"State": {
"Running": true,
"Pid": 23225,
"ExitCode": 0,
"StartedAt": "2014-07-17T04:17:45.672269614Z",
"FinishedAt": "0001-01-01T00:00:00Z",
"Ghost": false
},
"Image": "e54ca5efa2e962582a223ca9810f7f1b62ea9b5c3975d14a5da79d3bf6020f37",
"NetworkSettings": {
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"Gateway": "172.17.42.1",
"Bridge": "docker0",
"PortMapping": null,
"Ports": {}
},
"ResolvConfPath": "/var/lib/docker/containers/13b2a4a3145528d087c9d1580fa78aaa52e8a9bb973c9da923bceb9f9b9e7e5a/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/13b2a4a3145528d087c9d1580fa78aaa52e8a9bb973c9da923bceb9f9b9e7e5a/hostname",
"HostsPath": "/var/lib/docker/containers/13b2a4a3145528d087c9d1580fa78aaa52e8a9bb973c9da923bceb9f9b9e7e5a/hosts",
"Name": "/silly_bohr",
"Driver": "aufs",
"ExecDriver": "native-0.1",
"Volumes": {},
"VolumesRW": {},
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LxcConf": [],
"Privileged": false,
"PortBindings": {},
"Links": null,
"PublishAllPorts": false
}
}]
neo@MacBook-Pro ~ % docker inspect --format='{{.Name}}' $(docker ps -aq)
/redis-cli
/cluster_redisslave3_1
/cluster_redismaster3_1
/cluster_redismaster2_1
/cluster_redisslave2_1
/cluster_redismaster1_1
/cluster_redisslave1_1
/cluster_redis-image_1
/devel_eureka_1
/devel_config_1
/quizzical_heisenberg
neo@MacBook-Pro ~ % docker inspect --format='{{.Name}}' $(docker ps -aq)|cut -d"/" -f2
redis-cli
cluster_redisslave3_1
cluster_redismaster3_1
cluster_redismaster2_1
cluster_redisslave2_1
cluster_redismaster1_1
cluster_redisslave1_1
cluster_redis-image_1
devel_eureka_1
devel_config_1
quizzical_heisenberg
neo@MacBook-Pro ~ % docker inspect --format='{{.Config.Image}}' `docker ps -a -q`
netkiller/redis:latest
netkiller/redis
netkiller/redis
netkiller/redis
netkiller/redis
netkiller/redis
netkiller/redis
netkiller/redis:latest
netkiller/eureka:latest
netkiller/config:latest
netkiller/eureka
neo@MacBook-Pro ~ % docker inspect --format '{{ .Config.Hostname }}' $(docker ps -q)
dbea51159085
79126b58e92a
5d1fff33a3e1
42a58cb957d9
68904b82d071
70a20dd0396d
742313f2af46
$ sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' silly_bohr
neo@MacBook-Pro ~ % docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)
172.24.0.7
172.24.0.6
172.24.0.5
172.24.0.4
172.24.0.3
172.24.0.2
獲取容器的MAC地址
neo@MacBook-Pro ~ % docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $(docker ps -a -q)
02:42:ac:18:00:07
02:42:ac:18:00:06
02:42:ac:18:00:05
02:42:ac:18:00:04
02:42:ac:18:00:03
02:42:ac:18:00:02
neo@MacBook-Pro ~ % docker inspect --format='{{.LogPath}}' `docker ps -a -q`
/var/lib/docker/containers/dbea511590859fee80565d1c047da2443d62f72f79627c7a97fd891b3ae41168/dbea511590859fee80565d1c047da2443d62f72f79627c7a97fd891b3ae41168-json.log
/var/lib/docker/containers/79126b58e92adbe933d8e39966af1e19cd867afe509deca2689fd27e5d25dce7/79126b58e92adbe933d8e39966af1e19cd867afe509deca2689fd27e5d25dce7-json.log
/var/lib/docker/containers/5d1fff33a3e14d409e2ef675820d68af0fdd6d512a7db06540b02b612eb889cc/5d1fff33a3e14d409e2ef675820d68af0fdd6d512a7db06540b02b612eb889cc-json.log
/var/lib/docker/containers/42a58cb957d965d5ac0aa5d329c6b68aa7f62cae096f974df99281f50c4819ab/42a58cb957d965d5ac0aa5d329c6b68aa7f62cae096f974df99281f50c4819ab-json.log
/var/lib/docker/containers/68904b82d071b956757a54c50d95122210e84012542ec3cbe354b72601bf62ba/68904b82d071b956757a54c50d95122210e84012542ec3cbe354b72601bf62ba-json.log
/var/lib/docker/containers/70a20dd0396d4b48314bfe119d71fc810fe17fcb174d0bfb116bb8da53bff677/70a20dd0396d4b48314bfe119d71fc810fe17fcb174d0bfb116bb8da53bff677-json.log
/var/lib/docker/containers/742313f2af466b7b932f8562e0dc75a228c7f815b4eb5a35dd1618d94c88bf7e/742313f2af466b7b932f8562e0dc75a228c7f815b4eb5a35dd1618d94c88bf7e-json.log
/var/lib/docker/containers/d60dcf49c5d4c78904c442f8fb09e5d3d57a9a2d21f6abaae7ee2d36bcc3e4a2/d60dcf49c5d4c78904c442f8fb09e5d3d57a9a2d21f6abaae7ee2d36bcc3e4a2-json.log
/var/lib/docker/containers/44c7ea7593838db1cea824862ee9708c77143d0e07d12cae0116cd8231eb2d1c/44c7ea7593838db1cea824862ee9708c77143d0e07d12cae0116cd8231eb2d1c-json.log
/var/lib/docker/containers/ae3c930f6eca854c9dc1c2ae84b7c870d63f3731290d347dc27fcf85c36821e5/ae3c930f6eca854c9dc1c2ae84b7c870d63f3731290d347dc27fcf85c36821e5-json.log
/var/lib/docker/containers/9beae3d5f5132e5f733e044d634b1e8b2650c30151db1a8468109bbf891be674/9beae3d5f5132e5f733e044d634b1e8b2650c30151db1a8468109bbf891be674-json.log
neo@MacBook-Pro ~ % docker inspect --format='{{json .Config}}' dbea51159085 | jq
{
"Hostname": "dbea51159085",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"6379/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.10",
"REDIS_VERSION=5.0.4",
"REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-5.0.4.tar.gz",
"REDIS_DOWNLOAD_SHA=3ce9ceff5a23f60913e1573f6dfcd4aa53b42d4a2789e28fa53ec2bd28c987dd",
"REDIS_PORT=6379"
],
"Cmd": [
"redis-cli"
],
"Image": "netkiller/redis:latest",
"Volumes": {
"/data": {}
},
"WorkingDir": "/data",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"com.docker.compose.config-hash": "f2e8434ec82c796bceac48461d71d487ff3fb53f711220a1efb976c59bd4d68c",
"com.docker.compose.container-number": "1",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "cluster",
"com.docker.compose.service": "redis-cli",
"com.docker.compose.version": "1.23.2"
}
}
拆分和組合
neo@MacBook-Pro ~ % docker inspect --format '{{join .Config.Entrypoint " , "}}' dbea51159085
/docker-entrypoint.sh
neo@MacBook-Pro ~ % docker inspect --format '{{.HostsPath}}' dbea51159085
/var/lib/docker/containers/dbea511590859fee80565d1c047da2443d62f72f79627c7a97fd891b3ae41168/hosts
neo@MacBook-Pro ~ % docker inspect --format '{{split .HostsPath "/"}}' dbea51159085
[ var lib docker containers dbea511590859fee80565d1c047da2443d62f72f79627c7a97fd891b3ae41168 hosts]
大小寫轉換
neo@MacBook-Pro ~ % docker inspect --format "{{lower .Name}}" dbea51159085
/redis-cli
neo@MacBook-Pro ~ % docker inspect --format "{{upper .Name}}" dbea51159085
/REDIS-CLI
首字母大寫
neo@MacBook-Pro ~ % docker inspect --format "{{title .State.Status}}" dbea51159085
Restarting
長度計算
neo@MacBook-Pro ~ % docker inspect --format '{{len .Name}}' dbea51159085
10
打印字元串
neo@MacBook-Pro ~ % INSTANCE_ID=42a58cb957d9
neo@MacBook-Pro ~ % docker inspect --format '{{.State.Pid}}{{.State.ExitCode}}' $INSTANCE_ID
745770
neo@MacBook-Pro ~ % docker inspect --format '{{print .State.Pid .State.ExitCode}}' $INSTANCE_ID
74577 0
neo@MacBook-Pro ~ % docker inspect --format '{{printf "Pid:%d ExitCode:%d" .State.Pid .State.ExitCode}}' $INSTANCE_ID
Pid:74577 ExitCode:0
neo@MacBook-Pro ~ % docker inspect --format '{{.State.Pid}}{{print "|"}}{{.State.ExitCode}}' $INSTANCE_ID
74577|0
neo@MacBook-Pro ~ % docker inspect --format 'Hostname:{{ .Config.Hostname }} Name:{{.Name}} IP:{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)
Hostname:dbea51159085 Name:/redis-cli IP:
Hostname:79126b58e92a Name:/cluster_redisslave3_1 IP:172.24.0.7
Hostname:5d1fff33a3e1 Name:/cluster_redismaster3_1 IP:172.24.0.6
Hostname:42a58cb957d9 Name:/cluster_redismaster2_1 IP:172.24.0.5
Hostname:68904b82d071 Name:/cluster_redisslave2_1 IP:172.24.0.4
Hostname:70a20dd0396d Name:/cluster_redismaster1_1 IP:172.24.0.3
Hostname:742313f2af46 Name:/cluster_redisslave1_1 IP:172.24.0.2
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.10 58faa899733f 2 weeks ago 196 MB ubuntu utopic 58faa899733f 2 weeks ago 196 MB ubuntu precise ea7d6801c538 3 weeks ago 127.5 MB ubuntu 12.04 ea7d6801c538 3 weeks ago 127.5 MB ubuntu 12.10 c5881f11ded9 4 weeks ago 172.2 MB ubuntu quantal c5881f11ded9 4 weeks ago 172.2 MB ubuntu 13.04 463ff6be4238 4 weeks ago 169.4 MB ubuntu raring 463ff6be4238 4 weeks ago 169.4 MB ubuntu 13.10 195eb90b5349 4 weeks ago 184.7 MB ubuntu saucy 195eb90b5349 4 weeks ago 184.7 MB ubuntu 14.04 e54ca5efa2e9 4 weeks ago 276.5 MB ubuntu latest e54ca5efa2e9 4 weeks ago 276.5 MB ubuntu trusty e54ca5efa2e9 4 weeks ago 276.5 MB ubuntu 10.04 3db9c44f4520 12 weeks ago 183 MB ubuntu lucid 3db9c44f4520 12 weeks ago 183 MB
顯示容器運行日誌,用於排查異常情況
例如下面是nginx容易啟動出錯日誌
[root@netkiller]# docker logs my-nginx-container nginx: [emerg] invalid server name or wildcard "www.*.com" on 0.0.0.0:80 nginx: [emerg] invalid server name or wildcard "www.*.com" on 0.0.0.0:80 nginx: [emerg] invalid server name or wildcard "www.*.com" on 0.0.0.0:80 nginx: [emerg] invalid server name or wildcard "www.*.com" on 0.0.0.0:80 nginx: [emerg] invalid server name or wildcard "www.*.com" on 0.0.0.0:80 nginx: [emerg] invalid server name or wildcard "www.*.com" on 0.0.0.0:80
https://docs.docker.com/engine/reference/commandline/login/
登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,預設為官方倉庫 Docker Hub
docker login -u 用戶名 -p 密碼
登陸到私有倉庫
$ docker login localhost:8080
從標準輸出傳遞密碼
$ cat ~/my_password.txt | docker login --username foo --password-stdin
docker network create -d bridge --subnet 172.25.0.0/16 private_network docker run -d -v /usr/local/etc/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 --network=private_network --name redis redis redis-server /usr/local/etc/redis/redis.conf
neo@MacBook-Pro-Neo ~ % docker events 2020-10-22T21:29:44.289075472+08:00 network create 8eab34642596e253eb51aa40cc4f5c4c14fb88f1bad7c8cbdeacc2ad411cdb44 (name=search_elastic, type=bridge) 2020-10-22T21:29:44.304732058+08:00 volume create search_data01 (driver=local) 2020-10-22T21:29:44.319023013+08:00 volume create search_data02 (driver=local) 2020-10-22T21:29:44.331507541+08:00 volume create search_data03 (driver=local) 2020-10-22T21:29:44.584989392+08:00 volume create search_data01 (driver=local)
[root@localhost tmp]# cat app.py
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
[root@localhost tmp]# cat requirements.txt flask redis
[root@localhost tmp]# cat Dockerfile FROM python:3.4-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD ["python", "app.py"]
[root@localhost tmp]# cat docker-compose.yml
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
docker-compose up
[root@localhost docker]# docker-compose up
守護進程
docker-compose up -d
docker-compose ps
[root@localhost docker]# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------------------------
test_membersrvc_1 membersrvc Up 0.0.0.0:7054->7054/tcp
test_vp0_1 sh -c sleep 5; peer node s ... Up 0.0.0.0:7050->7050/tcp, 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp
本章節介紹如何定義 docker-compose.yml 檔案
首先創建項目目錄
mkdir docker cd docker vim docker-compose.yml
image: mysql:5.7 表示使用 mysql:5.7 鏡像, image: mysql:latest 表示 mysql 最新版
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
將容器中的連接埠暴漏給宿主主機。
ports: - "3000" - "80:80" - "22:22" - "127.0.0.1:8000:8000"
預設 "連接埠:連接埠" 將監聽 127.0.0.1 主機。如果需要將連接埠暴漏出去,格式是"IP:PORT:PORT",IP地址是宿主主機的網絡適配器IP地址。
往/etc/hosts檔案中添加主機名,與Docker client的--add-host類似:
extra_hosts: - "orderer.example.com:10.130.116.8" - "peer0.org1.example.com:10.130.116.9" - "peer1.org1.example.com:10.130.116.10" - "peer0.org2.example.com:10.130.116.25" - "peer1.org2.example.com:10.130.116.27"
environment 實現容器中環境變數的定義
version: '3'
networks:
basic:
services:
tools:
container_name: tools
image: hyperledger/fabric-tools
tty: true
environment:
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
- CORE_CHAINCODE_KEEPALIVE=10
# working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
working_dir: /root/netkiller
command: /bin/bash
volumes:
- /var/run/:/host/var/run/
- ~/netkiller:/root/netkiller
- ./chaincode/:/opt/gopath/src/github.com/
- ./crypto:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
networks:
- basic
編譯當前目錄下的 Dockerfile 使用 build: .
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
指定鏡像名稱
version: "3.7"
services:
redis-image:
build:
context: .
dockerfile: Dockerfile
args:
- node=master
image: netkiller/redis:latest
container_name: redis
restart: always
ports:
- "6379:6379"
networks:
- redis
privileged: true
sysctls:
net.core.somaxconn: '511'
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
docker-compose build redis-image 構建鏡像
neo@MacBook-Pro ~/workspace/docker/docker-compose/redis/cluster % docker-compose build redis-image Building redis-image Step 1/12 : FROM redis:latest ---> a55fbf438dfd Step 2/12 : ARG node ---> Using cache ---> 4deb8fc1e1df Step 3/12 : ENV REDIS_PORT 6379 ---> Using cache ---> 5723ff2fe55c Step 4/12 : COPY redis.conf /etc/redis/redis.conf ---> Using cache ---> daf496f8c342 Step 5/12 : COPY docker-entrypoint.sh /usr/local/bin/ ---> Using cache ---> 600ae3b0c059 Step 6/12 : RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ---> Using cache ---> 630e3813bc8f Step 7/12 : RUN echo 'Asia/Shanghai' >/etc/timezone ---> Using cache ---> 7d48350d6621 Step 8/12 : RUN echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' > /etc/rc.local ---> Using cache ---> c096dc75da72 Step 9/12 : RUN chmod +rw /etc/redis/redis.conf ---> Using cache ---> 25d8b0ac8893 Step 10/12 : EXPOSE $REDIS_PORT ---> Using cache ---> 99f31a88d2ff Step 11/12 : ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] ---> Using cache ---> ef98f89610ae Step 12/12 : CMD [ "redis-server", "/etc/redis/redis.conf" ] ---> Using cache ---> 095823650068 Successfully built 095823650068 Successfully tagged netkiller/redis:latest neo@MacBook-Pro ~/workspace/docker/docker-compose/redis/cluster % docker images | grep netkiller/redis netkiller/redis latest 095823650068 8 minutes ago 95MB