加深docker学习映像 安装多个项目可能所用软件 把开发项目打成镜像运行
镜像的各种版本号 具体可查看 Dokerhub 官网:Docker Hub
特别提醒:像数据存储之类的容器 最好是选择数据卷挂载 这样才能更好的保存数据,否则因失误操作删除容器数据丢失悔不则已。
在docker 中 拉取咱们的 mysql 镜像 并运行容器实例
docker pull mysql:5.7.30
docker run -d -p 3306:3306 --name mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=你要设置的root密码 mysql:5.7.30
docker pull mongo:4.2.5
docker run -d -p 27017:27017 --name mongo425 -v /usr/local/mongo/conf:/etc/mongo/mongod.conf -v /usr/local/mongo/data:/data/db -e MONGO_INITDB_ROOT_USERNAME=超管账户 -e MONGO_INITDB_ROOT_PASSWORD=超管密码 mongo:4.2.5
个人本次采用的是 redis5.0.5 版本
docker pull redis:5.0.5
创建 redis-cluster 目录 (存放配置以及数据)
mkdir -p /usr/local/redis-cluster
进入目录内
cd /usr/local/redis-cluster
编写一个集群创建模板
sudo vim redis-cluster.tmpl
填入如下内容:
注意:配置中 cluster-announce-ip 注意换为自己的IP啊
# redis每个节点的端口
port ${PORT}
#开启网络,保证外部可连接
bind 0.0.0.0
# 关闭保护模式
protected-mode no
#设置redis访问密码为Redis123
requirepass Redis123
#设置集群节点间访问密码,密码需跟上面一致
masterauth Redis123
# 开启集群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes-${PORT}.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP
cluster-announce-ip 自己的IP啊
# 集群节点端口 7000 - 7005
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
#集群pid 文件
pidfile /usr/local/redis-cluster/${PORT}/redis-${PORT}.pid
# 开启 appendonly 备份模式
appendonly yes
# 每秒钟备份
appendfsync everysec
# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no
# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100
# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 5120mb
# 关闭快照备份
save ""
for port in `seq 7000 7005`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
随机进入一个文件夹 查看配置文件 发现端口已经是动态更改好了
注意:这里的–memeory=1G是限制单个 docker 容器占用内存大小为 1G,超过会被进程杀死。 因为我自己服务器较小 (如不需要限制内存大小 则取消 --memory 参数即可)
for port in `seq 7000 7005`; do \
docker run -d -it --memory=1G \
-v /usr/local/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net host \
--sysctl net.core.somaxconn=1024 redis:5.0.5 redis-server /usr/local/etc/redis/redis.conf; \
done
随意进入一个redis 容器中 执行集群创建语句
docker exec -it redis-7000 /bin/bash
执行集群创建语句
redis-cli -a Redis123 --cluster create 192.168.10.122:7000 192.168.10.122:7001 192.168.10.122:7002 192.168.10.122:7003 192.168.10.122:7004 192.168.10.122:7005 --cluster-replicas 1
然后提示创建 成功 就可以测试一波了
如果需要删除doker 搭建的redis 容器
for port in `seq 7000 7005`; do \
docker stop redis-${port};
docker rm redis-${port};
done
docker pull rabbitmq:management
1.使用默认guest账户 /密码登录
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
2.自定义用户名和密码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=用户名 -e RABBITMQ_DEFAULT_PASS=密码 -p 15672:15672 -p 5672:5672 rabbitmq:management
还是拉取最新版
docker pull portainer/portainer
即安装 portainer 与需要连接的dokcer或许不在一个服务器 那么这时候,我们可以通过端口IP 去连接另一个服务器的docker ,即远程连接模式 (当然 ,远程连接后 选择 本机docker的端口IP 一样可以监听到)
docker run -d -p 9000:9000 --restart=always --name prtainer portainer/portainer
即安装 portainer 与需要连接的dokcer在一个服务器,那么本机模式启动即可
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name prtainer portainer/portainer
http://IP:9000
选择Local
,代表本地模式,portainer仅管理本机的docker容器
选择Remote
,代表远程模式,名称随意,在Endpoint URL
中填写docker节点的地址:docker远程端口
说明下:
docker 默认是未开启外部访问的
需要连接docker的话 咱们需要额外配置,使其开启远程访问
vim /usr/lib/systemd/system/docker.service
注意查看文件 稍微修改一点
保险起见 复制之前的文件并注释
使用我们下边这行代码配置 其暴露端口 随意 (注意安全组以及防火墙开放对应)
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6500 -H unix:///var/run/docker.sock
重启
systemctl daemon-reload
systemctl restart docker
这样, 该docker 才能被远程通过ip:端口及访问 例如我们的 portanier 或者idea 连接服务器上的 docker
然后就可以管理我们的镜像以及容器了,非常方便