Docker 本地安装常用应用
docker启动容器设置自启动
加上配置:--restart=always
比如:
docker run -tid --name 【定义容器名称】 -p 8081:8080 --restart=always 【镜像名称】
如果是已经启动的容器,要使用docker update
docker update --restart=always 【容器ID】
安装mysql
# 安装mysql8版本
docker run -d -p 3307:3306 -v /home/mysql8/conf:/etc/mysql/conf.d -v /home/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql8 mysql:8.0.23
# 安装mysql5版本
docker run -d -p 33306:3306 -v /home/mysql5/conf:/etc/mysql/conf.d -v /home/mysql5/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql5 mysql:5.7
redis使用
docker exec -it 【redis容器id】 redis-cli
虚拟机里面:
docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf
# 如需访问容器,可使用
docker exec -it redis bash
redis-cli
# 或直接使用redis-cli访问容器内redis
docker exec -it redis redis-cli [-a 密码]
kafka
下载镜像:
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
启动zookeeper:docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
启动kafka:
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=【ip同kafka配置文件】:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://【ip同kafka配置文件】:9092 -e KAFKA_LISTENERS=PLAINTEXT://【ip同kafka配置文件】:9092 -t wurstmeister/kafka
进入kafka容器: docker exec -it 【容器id】 /bin/bash
到kafka的bin目录: cd opt/bin
创建主题:
bin/kafka-topics.sh --create --zookeeper 【ip同kafka配置文件】:2181 --replication-factor 1 --partitions 1 --topic abiu
创建生产者:
bin/kafka-console-producer.sh --broker-list 【ip同kafka配置文件】:9092 --topic abiu
创建消费者:
bin/kafka-console-consumer.sh --bootstrap-server 【ip同kafka配置文件】:9092 --topic abiu --from-beginning
MongoDB
docker pull mongo
# --auth设置需要密码才能访问mongo
docker run -itd --name 【mongo起个名称】 -p 27017:27017 【mongo镜像】 --auth
docker exec -it 【容器名称】 【镜像名称】 admin
# 先使用admin账户测试一下
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 使用admin账户测试建立连接
> db.auth('admin', '123456')
# 创建一个名为 abiu,密码为 123456 的用户,这个用户作用在test表
> db.createUser({user:"abiu",pwd:"123456",roles:[{role:"readWrite",db:"test"}]})
# 尝试使用上面创建的用户信息进行连接。
> db.auth('abiu', '123456')
kafka 客户端工具
主要用于kafka
对外暴露端口和配置信息,如账号密码等,自己设置
docker run -d -p 9999:8080 -v /opt/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin --name kafka-map --restart always dushixiang/kafka-map:latest
kafka-ui-lite
管理kafka,看不到topic的消息,并且可以连接zookeeper 和 redis
docker run -d -p 8889:8889 freakchicken/kafka-ui-lite
nsq
# nsqlookupd
docker run --name lookupd -p 4160:4160 -p 4161:4161 -d nsqio/nsq /nsqlookupd
# nsqd
docker run --name nsqd -p 4150:4150 -p 4151:4151 -d nsqio/nsq /nsqd --broadcast-address=10.10.10.101 --lookupd-tcp-address=10.10.10.101:4160
# nsqadmin
docker run -d --name nsqadmin -p 4171:4171 nsqio/nsq /nsqadmin --lookupd-http-address=10.10.10.101:4161
访问 http://10.10.10.101:4161/nodes 调用 lookupd 接口查看节点信息
curl -d 'hello world ' 'http://127.0.0.1:4151/pub?topic=test'
生产一个消息,同时也创建了一个topic。
调用 lookupd 的 /topics 接口http://10.10.10.101:4161/topics
返回 {"topics":["test"]}
访问 http://10.10.10.101:4171/
安装etcd单节点
先创建目录
mkdir /var/myetcd/data -p
启动容器
docker run -d \
-p 12379:2379 \
-p 12380:2380 \
-v /var/myetcd/data:/etcd-data/member \
--name exam-etcd \
quay.io/coreos/etcd:latest \
/usr/local/bin/etcd \
--name s1 \
--data-dir /etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--initial-cluster s1=http://0.0.0.0:2380 \
--initial-cluster-token tkn \
--initial-cluster-state new
#--log-level info \
#--logger zap \
# --log-outputs stderr
测试
docker exec exam-etcd etcdctl --endpoints=http://127.0.0.1:2379 set test_key hello_world
docker exec exam-etcd etcdctl --endpoints=http://127.0.0.1:2379 get test_key
《三体》中有句话——弱小和无知不是生存的障碍,傲慢才是。
所以我们不要做一个小青蛙