Docker搭建各种中间件

596 阅读4分钟

Centos7安装dokcer CE

#先删除已有的
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo docker run hello-world
#你过你敲docker敲不出来反应,而加了sudo又有反应,那么你应该添加你的docker权限。
sudo usermod -aG docker (你的用户)
# 方法二
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Docker加速

mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF

# 或用Docker中国加速
mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF

# 重启docker
systemctl restart docker

Windows下载

  • hub.docker.com/search?q=&t…
  • 注意事项:Windows10必须为专业版, 必须开启Hyper-V,必须为64位处理器,4GM RAM以上,BIOS开启虚拟化支持。

问题解决

技巧

  • 使用VSCode管理K8S,Docker。VSCode Docker插件,Kubernetes插件。

安装Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Docker 搭Mysql

docker pull mysql
#默认会下最新版。需要其他版本,请加后缀tag比如, mysql:5.7,就会抽取5.7的。
docker run -p 3306:3306 --name sql_docker -e MYSQL_ROOT_PASSWORD=123 -d mysql

说明 -p 3306:3306 将容器内3306端口映射到宿主机
--name 运行的容器名
-e environment(环境),指定容器启动时候的环境变量。可以指定其他环境变量如下 。 MYSQL_ROOT_PASSWORD:root 密码 。
MYSQL_DATABASE:[可选的] 容器启动后自动创建的数据库。
MYSQL_USER, MYSQL_PASSWORD: [可选的] 创建对应MYSQLDATABASE数据库的用户名和密码,并默认拥有MYSQL_DATABSE所有权限
MYSQL_ALLOW_EMPTY_PASSWORD:[可选] 是否允许密码为空。
MYSQL_RANDOM_ROOT_PASSWORD:[可选] 随机生成root密码,并会通过标准输出输出到控制台。
MYSQL_ONETIME_PASSWORD:[可选] 我感觉没啥用,就是说你第一次登陆mysql后必须修改你的root密码。
-d 后台运行
最后指定镜像名称
使用本地mysql.cnf映射到容器内

docker run --name some-mysql -v {你的mysql配置地址}:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

将容器内mysql数据存储到宿主机

docker run --name some-mysql -v {你的存储地址}:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

最后进入mysql容器开启远程登陆

docker exec -it {运行起来的mysql容器名,或者hash码} bash
mysql -uroot -p 
grant all privileges on *.* to 'root'@'%' identified by '{你的root密码}';
flush privileges;

Redis

docker pull redis
#一样的可以通过 redis:{tag名} 来选择拉取那个版本的镜像
docker run --name {你想要等redis运行时候容器名} -p 6379:6379 -d redis

定制化配置文件,一样的使用-v参数。

$ docker run -v {你的配置文件地址}:/usr/local/etc/redis/redis.conf --name {你的容器名} redis redis-server /usr/local/etc/redis/redis.conf

MongoDb

docker pull mongo
docker run --name myMongo -p 27017:27017 -d mongo:tag

定制配置文件启动

docker run --name some-mongo -v /my/custom:/etc/mongo -d mongo --config /etc/mongo/mongod.conf

环境变量 使用-e指定, MONGO_INITDB_ROOT_USERNAME, MONGO_INITDB_ROOT_PASSWORD
宿主机存储数据 ,一样一样用 -v

docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo

RabbitMq

docker pull rabbitmq:management
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
#5672为程序接入接口,15672为后台WebUI接入口。

Docker搭建Maven私服

hub.docker.com/r/sonatype/…

docker pull sonatype/nexus3
#数据持久化
docker run -d -p 8081:8081 --name nexus -v {你的持久化苏主机地址}:/nexus-data sonatype/nexus3

两条命令就完成了,很简单吧。打开浏览器访问,默认有个账户为admin,账户密码在你的持久化文件夹的admin.password文件中,当然也可以去容器内部/nexus3文件夹下看。
Nexus可以搭建很多私服,包括Yum,Python,Npm等等,有兴趣可以参考官网文档。

ES单机

Pull 官方镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.4.2
docker network create myes

离线Image地址
单节点

 docker run -d --name elasticsearch --net myes -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag

Kibana

docker pull kibana:6.8.5
docker network create myes
docker run -d --name kibana --net myes -p 5601:5601 kibana:6.8.5

Kafka Zk

docker pull zookeeper
docker run -d -p 2181:2181  --name=zookeeper  --privileged zookeeper
docker pull wurstmeister/kafka
docker run  -d --name kafka -p 9092:9092  --env KAFKA_ADVERTISED_HOST_NAME=localhost  -e KAFKA_ZOOKEEPER_CONNECT=192.168.9.219:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.9.219:9092  -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"  --net=host wurstmeister/kafka 

InfluxDb

docker run -d --name influx -p 8086:8086 influxdb

Grafana

docker run -d --name=grafana -p 3000:3000 grafana/grafana