Docker及常用 软件安装

#依次运行以下命令添加yum源
yum update
yum install epel-release -y
yum clean all
yum list

#安装并运行Docker。
yum install docker-io -y
systemctl start docker

#检查安装结果。
docker info

#修改镜像仓库
vim /etc/docker/daemon.json
#改为下面内容,然后重启docker
{
"debug":true,"experimental":true,
"registry-mirrors":["https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}
# 阿里云需要自己登陆才能看见需要请自行百度
#启动使用Docker
systemctl daemon-reload   #重新加载
systemctl start docker     #运行Docker守护进程
systemctl stop docker      #停止Docker守护进程
systemctl restart docker   #重启Docker守护进程
#查看信息
docker info #查看是否生效

如何把dockers安装在D盘_如何把dockers安装在D盘

idea docker插件方式

开放Docker远程访问(注意开放可能被攻击,最好使用秘钥方式)

# 修改该Docker服务文件 vi /lib/systemd/system/docker.service #修改ExecStart这行如下 
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
# 重新加载配置文件 
systemctl daemon-reload 
# 重启服务 
systemctl restart docker.service 
# 查看端口是否开启 
netstat -nlpt
# 如果找不到netstat命令,可进行安装
yum install net-tools 
#直接curl看是否生效 
curl http://127.0.0.1:2375/info

# 打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,
# 在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。
# 安装后重启Idea。

docker-compose 安装

# 下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 授权
sudo chmod +x /usr/local/bin/docker-compose

# 建立软连接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 查看版本
docker-compose --version

# 将docker-compose上传到服务器
# 进入docker-compose文件夹,修改文件夹下面的mysql,redis,mongo,rocket配置
cd docker-compose
# 运行docker-compose ,-d 后台启动
docker-compose up -d

nginx

#启动nginx
docker run -d --name mynginx -p 8089:80 4cdc5dd7eaad # 4cdc5dd7eaad 为容器id
# 防止容器损坏或者异常停止文件丢失创建映射文件夹
cd / # 进入根目录
mkdir -p mydata/nginx/{conf,html,logs} #创建conf html logs 三个文件件分别映射配置文件,静态资源,日志

# 将容器中的配置文件拷贝出来
docker cp mynginx:/etc/nginx/nginx.conf ./        
docker cp mynginx:/etc/nginx/conf.d/default.conf ./conf/

#移除之前启动的nginx的容器
docker rm -f 4cdc5dd7eaad 

# -f 为强制删除,不加-f 需要先停止容器然后在删除容器
#示例:
docker stop 4cdc5dd7eaad
docker rm 4cdc5dd7eaad

# 重新运行nginx
docker run -d --name mynginx -p 8089:80  \
-v /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \ # 静态资源位置
-v /mydata/nginx/conf:/etc/nginx/conf.d --privileged=true 4cdc5dd7eaad

#命令说明
# -d 后台启动
# -v 将宿主机的文件映射到docker内部的目录中
# --privileged=true 拥有 docker内部拥有root权限

redis

# 搜索redis 镜像
docker search redis

# 拉取镜像
docker pull redis # 如果需要指定版本则使用冒号来指定版本如: docker pull redis:6.0

# 创建目录
cd / 
mkdir -p /mydata/redis/conf

# 创建文件或者拷贝配置文件到目录下
touch /mydata/redis/conf/redis.conf

#运行redis
docker run -p 8000:6379 --name redis \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /mydata/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf # 指定配置文件启动

mysql

拉取mysql 镜像根据自己需要的版本

# 拉取mysql镜像
docker pull mysql:5.7
# 创建文件
cd /
mkdir -p /mydata/mysql/{data,logs,conf}

vim /mydata/mysql/conf/my.conf
#配置文件内容
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
#不区分大小写
lower_case_table_names = 1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
max_connections=5000

default-time_zone = '+8:00'


# 运行mysql
docker run -p 3307:3306 --name mysql3307 \
-v /mydata/mysql/conf/my.conf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /mydata/mysql/logs:/logs -v /mydata/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d 8cf625070931

# 账号 root 密码 123456

Rocketmq

# 安装nameserv
mkdir -p /mydata/rocketmq/namesrv/logs &&  mkdir -p /mydata/rocketmq/namesrv/store

docker run -d -p 9876:9876 -v /mydata/rocketmq/namesrv/logs:/home/rocketmq/logs -v /mydata/rocketmq/namesrv/store:/home/rocketmq/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

# 安装borker
mkdir -p /mydata/rocketmq/broker/logs &&
mkdir -p /mydata/rocketmq/broker/store &&
mkdir -p /mydata/rocketmq/broker/conf &&
#新增 broker 配置文件,在 /mydata/rocketmq/broker/conf 目录下创建 broker.conf 文件
vim /mydata/rocketmq/broker/conf/broker.conf
#内容如下:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 39.97.240.142 # IP地址需要修改
# 启动
docker run -d -p 10911:10911 -p 10909:10909 \
-v /mydata/rocketmq/broker/logs:/home/rocketmq/logs \
-v /mydata/rocketmq/broker/store:/home/rocketmq/store \
-v /mydata/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
--name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker \
-c /opt/rocketmq-4.4.0/conf/broker.conf

mongo

#当我们需要修改配置文件时,我们只需要在宿主机上创建一个mongodb.conf文件,并将该文件所在的文件夹映射到容器的/data/configdb文件夹中,同时,在容器的启动命令中添加--configsvr参数即可。

# 拉取mongo 并且运行mongo
docker run --name mongo -p 27017:27017 \
-v /mydata/mongo/data:/data/db \
-v /mydata/mongo/backup:/data/backup -d mongo:4.0.13 --auth
# 进入mongo内部
docker exec -it mongo mongo admin
# 创建用户
db.createUser({ user: 'test24', pwd: '123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
# 确认一下能否认证成功
db.auth("test24","123456")
# admin 库不能存放文件
# 切换数据库 并且创建test24_docker 的数据库
use test;
# 创建用户
db.createUser( 
{ 
user:"test",
pwd:"123456",
roles:[
{role: "userAdmin" , db:"test"},
{role:"readWrite", db:"test"}
]
});
db.auth("test24_docker","123456")

kafka

  • 创建文件夹,并在文件夹下创建 docker-compose.yml
version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    depends_on: [ zookeeper ]
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.163.51
      KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /opt/server/docker/kafka/docker.sock:/var/run/docker.sock
  • 在docker-compose.yml文件目录进行服务打包
docker-compose build
  • 启动服务
docker-compose up -d
  • 启动测试

记住启动的启动名称,kafka为 kafka_kafka_1 ,zookeeper 为 kafka_zookeeper_1 .
如果docker-compose正常启动,此时docker ps会看到以上两个容器。进入kafka容器

docker exec -it kafka-compose_kafka_1 bash
  • 创建一个topic
$KAFKA_HOME/bin/kafka-topics.sh --create --topic topic --partitions 4 --zookeeper kafka-compose_zookeeper_1:2181 --replication-factor 1
  • 注意–zookeeper后面的参数为,容器的name,查看刚刚创建的topic
$KAFKA_HOME/bin/kafka-topics.sh --zookeeper kafka-compose_zookeeper_1:2181 --describe --topic topic
  • 发布信息
$KAFKA_HOME/bin/kafka-console-producer.sh --topic=topic --broker-list kafka-compose_kafka_1:9092
  • 接收消息
$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server kafka-compose_kafka_1:9092 --from-beginning --topic topic