(三)Dockfile定制镜像
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
1. 定制redis镜像
1.1 Dockerfile文件
mkdir redis
cd redis
touch Dockerfile
Dockerfile文件
FROM ubuntu:latest
RUN apt-get update \
&& apt-get install -y redis \
&& mkdir -p /home/ld
COPY ./testfile.txt /home/ld
VOLUME /data
CMD [ "redis-server" ]
1.2 构建镜像命令
[root@Thor ]# docker build -t redis:1.0.0 .
Sending build context to Docker daemon 2.56 kB
Step 1/5 : FROM ubuntu:latest
---> 113a43faa138
Step 2/5 : RUN apt-get update && apt-get install -y redis && mkdir -p /home/ld
---> Using cache
---> f16df9849ef0
Step 3/5 : COPY ./testfile.txt /home/ld
---> Using cache
---> 0f15de0e812f
Step 4/5 : VOLUME /data
---> Using cache
---> 5363daff78a5
Step 5/5 : CMD redis-server
---> Using cache
---> 614b878bc14e
Successfully built 614b878bc14e
[root@Thor ]#
1.3 查看镜像
[root@Thor ]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 1.0.0 614b878bc14e 12 days ago 125 MB
registry latest b2b03e9146e1 4 weeks ago 33.3 MB
golang latest 4e611157870f 5 weeks ago 794 MB
redis latest 71a81cb279e3 5 weeks ago 83.4 MB
httpd latest 2a7d646dbba8 5 weeks ago 177 MB
ubuntu latest 113a43faa138 8 weeks ago 81.1 MB
google/cadvisor latest 75f88e3ec333 7 months ago 62.2 MB
[root@Thor ]#
2. 测试定制的redis镜像
2. 启动redis-server
[root@Thor ]# docker run -it --name redis -p 6379:6379 redis:1.0.0
1:C 04 Aug 15:57:25.901 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 04 Aug 15:57:25.901 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 04 Aug 15:57:25.901 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0.9 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 1
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
1:M 04 Aug 15:57:25.905 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 04 Aug 15:57:25.905 # Server initialized
1:M 04 Aug 15:57:25.905 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 04 Aug 15:57:25.905 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
1:M 04 Aug 15:57:25.906 * Ready to accept connections
2.2 查看容器
[root@Thor ]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7fbb103e28c redis:1.0.0 "redis-server" 23 seconds ago Up 22 seconds 0.0.0.0:6379->6379/tcp redis
5dd13df73ef1 httpd:latest "httpd-foreground" 4 days ago Up 4 days 0.0.0.0:32771->80/tcp httpd
457815a05858 google/cadvisor "/usr/bin/cadvisor..." 8 days ago Up 8 days 0.0.0.0:8080->8080/tcp vigilant_galileo
7afd18cf46b8 registry "/entrypoint.sh /e..." 3 weeks ago Up 3 weeks 0.0.0.0:5000->5000/tcp registry
[root@Thor ]#
2.3 启动redis-cli
[root@Thor liudong]# docker exec -it f7fbb103e28c redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name dog
OK
127.0.0.1:6379> get dog
(nil)
127.0.0.1:6379> get name
"dog"
127.0.0.1:6379>