常用的docker命令
#構(gòu)建一個(gè)鏡像
docker image build -t hellonode:local .
#查看鏡像
docker images / docker image ls
#運(yùn)行鏡像
docker container run --name hellonode -d -p 3000:3000 hellonode:local
#查看進(jìn)程
docker ps -a / docker container ls
#進(jìn)入已啟動(dòng)的容器內(nèi)橙弱,新啟一個(gè)進(jìn)程顿膨,執(zhí)行命令萤皂。
docker exec -it containerName /bin/bash
#停止docker中mysql容器
docker stop mysql-latest
#移除docker中mysql容器
docker rm 9c7aafddb428
#移除鏡像
$ docker rmi springboot:latest
#強(qiáng)制刪除 增加 -f 參數(shù)
$ docker rmi -f ed603a4c67bb
#重啟docker
systemctl restart docker
#關(guān)閉docker
systemctl stop docker
#將鏡像推送到Docker Hub上你的倉(cāng)庫(kù)中
docker image tag hellonode:local mengzyou/hellonode:v1.0
docker image push mengzyou/hellonode:v1.0
1葫督、查看可用的 Redis 版本
訪問 Redis 鏡像庫(kù)地址: https://hub.docker.com/_/redis?tab=tags竭鞍。
可以通過 Sort by 查看其他版本的 Redis,默認(rèn)是最新版本 redis:latest橄镜。
2偎快、取最新版的 Redis 鏡像
這里我們拉取官方的最新版本的鏡像:
docker pull redis:latest
3、查看本地鏡像
使用以下命令來查看是否已安裝了 redis:
docker images
4洽胶、準(zhǔn)備redis的配置文件
因?yàn)樾枰猺edis的配置文件晒夹,這里最好還是去redis的官方去下載一個(gè)redis使用里面的配置文件即可
redis中文官方網(wǎng)站:http://www.redis.cn/download.html
image.png
下載后解壓出來:
image.png
這個(gè)redis.conf文件就是咱們需要的裆馒,為了保險(xiǎn),還是拷貝一下丐怯,做個(gè)備份喷好。
5、配置redis.conf配置文件
修改redis.conf配置文件:
主要配置的如下:
bind 127.0.0.1 #注釋掉這部分读跷,使redis可以外部訪問
daemonize no#用守護(hù)線程的方式啟動(dòng)
requirepass 你的密碼#給redis設(shè)置密碼
appendonly yes#redis持久化 默認(rèn)是no
tcp-keepalive 300 #防止出現(xiàn)遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個(gè)現(xiàn)有的連接的錯(cuò)誤 默認(rèn)是300
6梗搅、創(chuàng)建本地與docker映射的目錄,即本地存放的位置
創(chuàng)建本地存放redis的位置
- 可以自定義效览,因?yàn)槲业膁ocker的一些配置文件都是存放在/data目錄下面的无切,所以我依然在/data目錄下創(chuàng)建一個(gè)redis目錄,這樣是為了方便后期管理
mkdir /data/redis
mkdir /data/redis/data
把配置文件拷貝到剛才創(chuàng)建好的文件里
- 因?yàn)槲冶旧砭褪荓inux操作系統(tǒng)丐枉,所以我可以直接拷貝過去哆键,如果你是windows的話,可能需要使用ftp拷貝過去瘦锹,或者直接復(fù)制內(nèi)容籍嘹,然后粘貼過去。
cp -p redis.conf /data/redis/
7沼本、啟動(dòng)docker redis
啟動(dòng)
#
docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
#下面的多了 --privileged=true --restart=always
docker run -p 6379:6379 --name redis --privileged=true -v /data/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /data/redis/data:/data -v /etc/localtime:/etc/localtime:ro --restart=always -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
參數(shù)解釋:
-p 6379:6379:把容器內(nèi)的6379端口映射到宿主機(jī)6379端口;(前表示主機(jī)部分噩峦,后表示容器部分)
--name redis 指定該容器名稱,查看和進(jìn)行操作都比較方便抽兆。
-v 掛載目錄识补,規(guī)則與端口映射相同。
-d redis 表示后臺(tái)啟動(dòng)redis
-v /data/redis/redis.conf:/etc/redis/redis.conf:把宿主機(jī)配置好的redis.conf放到容器內(nèi)的這個(gè)位置中
-v /data/redis/data:/data:把redis持久化的數(shù)據(jù)在宿主機(jī)內(nèi)顯示辫红,做數(shù)據(jù)備份
redis-server /etc/redis/redis.conf:這個(gè)是關(guān)鍵配置凭涂,讓redis不是無配置啟動(dòng),而是按照這個(gè)redis.conf的配置啟動(dòng)
–appendonly yes:redis啟動(dòng)后數(shù)據(jù)持久化
--privileged:大約在0.6版贴妻,privileged被引入docker切油。使用該參數(shù),container內(nèi)的root擁有真正的root權(quán)限名惩。否則澎胡,container內(nèi)的root只是外部的一個(gè)普通用戶權(quán)限。
--restart=always:開機(jī)啟動(dòng)
8娩鹉、查看是否啟動(dòng)成功
查看是否成功啟動(dòng):docker ps
truedei@truedei:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85cb7d83a2ff redis "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 0.0.0.0:6379->6379/tcp redis
0a122a08125f mysql:5.7.29 "docker-entrypoint.s…" 5 weeks ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mysql57
truedei@truedei:~$
可以查看一下日志:docker logs redis
truedei@truedei:~$ sudo docker logs redis
1:C 29 May 2020 01:16:22.107 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 29 May 2020 01:16:22.107 # Redis version=6.0.3, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 29 May 2020 01:16:22.107 # Configuration loaded
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.0.3 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 1
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
1:M 29 May 2020 01:16:22.108 # 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 29 May 2020 01:16:22.108 # Server initialized
1:M 29 May 2020 01:16:22.108 # 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 29 May 2020 01:16:22.108 # 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 29 May 2020 01:16:22.108 * Ready to accept connections
truedei@truedei:~$