```math
docker安装个别软件的教程
```
#### mysql
- 1.查询官方镜像库里面的mysql可选安装项
```
docker search mysql
```
- 2.拉取并安装
```
docker pull mysql
```
- 3.查看刚刚拉下的
```
docker images
```
- 4.一系列的操作
```
cd /opt/
mkdir mysql_docker
cd mysql_docker/
echo $PWD
```
- 5.启动mysql容器,在var/lib/docker/containers/下查看容器
```
docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=war3sxkcs -d -i -p 3306:3306 --restart always mysql:latest
```
```
cd /var/lib/docker/containers/
```
- 6.查看mysql进程
```
docker ps -a
```
- 7.进入mysql容器,并登陆mysql
```
docker exec -it mysqlserver bash
```
```
mysql -uroot -p
```
- 8.开启远程访问权限
```
use mysql;
select host,user from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'war3sxkcs';
flush privileges;
```
- 9.查看日志
```
docker logs -f --tail 10 containerId
```
- 番外:重启策略
- --restart:重启策略
```
always:始终重启
no:不重启 [默认]
on-failure:容器由于错误而退出,则重新启动容器,该错误表现为非零退出代码
unless-stopped:类似于always,除了当容器停止(手动或其他方式)时,即使在Docker守护程序重新启动后也不会重新启动容器
eg:
docker run -dit --restart always
```
- 授权
```
创建其他用户,并授权:
CREATE USER 'song'@'%' IDENTIFIED BY 'song123456'; [指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%]
GRANT SELECT,INSERT,UPDATE,CREATE ON . TO 'song'@'%'; (此处的两个*分别表示数据库和表)
flush privileges;
show grants for 'song'; (查看改用户的权限)
--- [权限列表]
all privileges:所有权限。
select:读取权限。
delete:删除权限。
update:更新权限。
create:创建权限。
drop:删除数据库、数据表权限。
修改密码:
update mysql.user set password = password('zhangsannew') where user = 'zhangsan' and host = '%';
删除用户:
drop user zhangsan@'%';
```
#### redis
- 搜索镜像
```
docker search redis
```
- 拉取镜像
```
docker pull redis
```
- 创建redis容器
```
docker run -d --name redis --restart always -p 6379:6379 -v /usr/local/redis/data:/data redis --requirepass "war3sxkcs" --appendonly yes
```
- 创建redis容器(指定配置文件)
```
docker run -d --name redis --restart always -p 6379:6379 -v /usr/local/redis/config:/etc/redis -v /usr/local/redis/data:/data redis redis-server /etc/redis/redis.conf --requirepass "war3sxkcs" --appendonly yes
```
参数说明:
```
-p 6379:6379 //容器redis端口6379映射宿主主机6379
--name redis //容器名字为redis
-v /usr/local/redis/conf:/etc/redis //docker镜像redis默认无配置文件,在宿主主机/usr/local/redis/conf下创建redis.conf配置文件,会将宿主机的配置文件复制到docker中
-v /root/redis/redis01/data:/data //容器/data映射到宿主机 /usr/local/redis/data下
-d redis //后台模式启动redis
redis-server /etc/redis/redis.conf //redis将以/etc/redis/redis.conf为配置文件启动
--appendonly yes //开启redis的AOF持久化,默认为false,不持久化
```
#### rabbitMQ
- 查看
```
docker search rabbitmq:management
```
- 拉取
```
docker pull rabbitmq:management
```
```
如果docker pull rabbitmq 后面不带management,启动rabbitmq后是无法打开管理界面的,所以我们要下载带management插件的rabbitmq
```
- 启动
```
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
```
```
docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 -v pwd
/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin df80af9ca0c9
-v 映射目录或文件;
--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
```
#### Minio
- 拉取
```
docker pull minio/minio
```
- 启动
```
docker run -d -p 9100:9000 --name minio \
--restart always \
-e "MINIO_ACCESS_KEY=root" \
-e "MINIO_SECRET_KEY=war3sxkcs" \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server /data
```
- Minio更新后
```
docker run -d -p 9000:9000 -p 9001:9001 --name minio \
--restart always \
-e "MINIO_ROOT_USER=root" \
-e "MINIO_ROOT_PASSWORD=war3sxkcs" \
-v $PWD/data:/data \
-v $pwd/config:/root/.minio \
minio/minio:RELEASE.2021-08-25T00-41-18Z.fips server /data --console-address ":9001"
```
```
-v 表示目录挂载 /mnt/data 是宿主机的位置; :/data 表示容器内部的地址
```
- 客户端地址
```
https://dl.minio.io/client/mc/release/linux-amd64/mc
```
- 配置远程/本地的用户名或密码
```
mc config host add <ALIAS><YOUR-S3-ENDPOINT><YOUR-ACCESS-KEY><YOUR-SECRET-KEY><API-SIGNATURE>
eg:
mc config host add song http://127.0.0.1:9100 root war3sxkcs
./mc ls song [查看当前文件服务下的桶]
```
- 设置策略
```
查看策略:mc policy
mc policy set download song/pigx
设置song这个文件服务别名下的pigx文件下面的所有文件都可以下载
```
#### MongoDB
- 1.拉取
```
docker pull mongo:latest
```
- 2.启动
```
docker run -itd --name mongo -p 27017:27017 --restart always mongo --auth
--auth:需要密码才能访问容器服务
```
- 3.设置用户之类的
```
$ docker exec -it ContainerId mongo admin
# 创建一个名为 root,密码为 war3sxkcs 的用户。
> db.createUser({ user:'root',pwd:'war3sxkcs',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
# 尝试使用上面创建的用户信息进行连接
> db.auth('root', 'war3sxkcs')
```
#### zookeeper
```
docker pull zookeeper
```
```
docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:latest
```
- docker导出image,在另一个地方导入
```
1. 导出
docker save -o /root/images/jenkins_image.tar jenkins/jenkins:latest
2.导入
docker load < /root/images/jenkins_image.tar
```
#### nacos
- 获取
```
docker pull nacos/nacos-server
```
- 简单启动方式/单例启动
```
docker run --env MODE=standalone --name nacos -d -p 8848:8848 --restart always nacos/nacos-server
```
- 配置mysql的启动方式/集群启动
```
docker run -d \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_MASTER_SERVICE_HOST=192.168.1.150 \
-e MYSQL_MASTER_SERVICE_PORT=3306 \
-e MYSQL_MASTER_SERVICE_USER=root \
-e MYSQL_MASTER_SERVICE_PASSWORD=war3sxkcs \
-e MYSQL_MASTER_SERVICE_DB_NAME=nacos \
-e MYSQL_SLAVE_SERVICE_HOST=192.168.1.150 \
-e MYSQL_SLAVE_SERVICE_PORT=3306 \
-v /home/dockerdata/nacos/logs:/home/nacos/logs \
-p 8848:8848 \
--name nacos \
--restart=always \
nacos/nacos-server
```
评论区