Docker安装及使用
1.安装docker
安装文档:https://docs.docker.com/install/linux/docker-ce/centos/
1.卸载系统之前的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装依赖
sudo yum install -y yum-utils
3.docker仓库地址
sudo yum-config-manager \
--add-repo https://download.docker.com/linux/centos/docker-ce.repo
4.安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
5.启动docker
sudo systemctl start docker
6.查看docker(需root权限)
docker ps // 启动的容器
docker ps -all // 所有容器
7.设置docker开机自启
sudo systemctl enable docker
2.docker安装mysql
1.下载镜像文件
docker pull mysql:5.7
2.创建实例并启动
docker run -p 3306:3306 --name mysql --restart=always \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
解释:-p 3306:3306 将容器3306端口映射到主机3306端口
--restart 启动docker时候启动该容器
-v /mydata/mysql/conf:/etc/mysql :将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql :将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql :将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root 初始化密码
3.修改MYSQL配置
vi /mydata/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
4.重启mysql
docker restart mysql
mysql集群
主配置
docker run -p 3307:3306 --name mysql-master --restart=always \
-v /mydata/mysql/master/log:/var/log/mysql \
-v /mydata/mysql/master/data:/var/lib/mysql \
-v /mydata/mysql/master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
设置backup账户,这个账户设置给从服务器连接主服务器
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' IDENTIFIED by 'backup'
配置:master和slave
vim /mydata/mysql/master/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = urf_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
server_id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=product
binlog-do-db=cart
binlog-do-db=order
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
从配置
docker run -p 3317:3306 --name mysql-slave-01 --restart=always \
-v /mydata/mysql/slave/log:/var/log/mysql \
-v /mydata/mysql/slave/data:/var/lib/mysql \
-v /mydata/mysql/slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
从结点连接主节点
CHANGE MASTER TO master_host = '172.168.201.170', master_user = 'backup',
master_password = 'backup', master_log_file = 'mysql-bin.000001',
master_log_pos = 0,
master_port = 3307;
START slave;
show slave STATUS;
配置主从配置
server_id=1
log-bin=mysql-bin
read-only=0
binlog-do-db=product
binlog-do-db=cart
binlog-do-db=order
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
3.docker安装redis
1.下载镜像(无版本号即下载最新版本)
docker pull redis
2.创建redis配置文件
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
3.安装redis
docker run -p 6379:6379 --name redis --restart=always \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
-d 启动redis设置容器在后台执行,根据redis.conf来读取配置文件启动
--restart 启动docker时候启动该容器
4.redis持久化配置
vi /mydata/redis/conf/redis.conf
输入appendonly yes,开启AOF文件,RDB需要另外配置
5.重启redis
docker restart redis
6.redis集群
for port in $(seq 7001 7006); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat<<EOF>/mydata/redis/node-${port}/conf/redis.conf
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.168.201.169
cluster-announce-bus-port 1${port}
appendonly yes
EOF
docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf; \
done
redis-cli --cluster create 172.168.201.169:7001 172.168.201.169:7002 172.168.201.169:7003 172.168.201.169:7004 172.168.201.169:7005 172.168.201.169:7006 --cluster-replicas 1
4.docker安装nginx
1.下载镜像
docker pull nginx
2.创建nginx配置文件
mkdir -p /mydata/nginx/conf
touch /mydata/nginx/conf/nginx.conf
3.增加配置
events {
worker_connections 1024; ## Default: 1024
}
-
如果不增加此配置nginx可能会报错。
nginx: [emerg] no "events" section in configuration
4.安装nginx
docker run -p 8080:80 --name nginx \
--restart=always \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx
5.如果不设置配置文件挂载启动,则可以直接启动
docker run --name nginx -p 8080:80 -d nginx
5.docker安装centos
1.下载镜像
docker pull centos
2.创建centos容器
docker run -it -d -p 8888:8888 --name centos --restart=always --privileged=true \
-v /mydata/centos/www:/www centos \
3.进入centos
docker exec -it centos /bin/bash
4.系统初始化:由于docker中是一个纯净版本,我们首先需要给他升级并且安装必要的软件。
yum check-update -y && yum update -y && yum install initscripts screen wget -y
6.docker安装elasticSearch
1.下载镜像
docker pull elasticsearch:7.4.2
2.创建挂载文件夹
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http:host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
将 http:host:0.0.0.0写入到es配置文件中
3.创建es容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
-e "ES_JAVA_OPTS" 设置运行时最小最大内存 因为测试环境设置较小
4.需要给es文件夹设置权限
chmod -R 775 /mydata/elasticsearch/
不设置权限启动的时候会报错
7.docker安装kibana
1.下载镜像
docker pull kibana:7.4.2
2.创建容器
docker run --name kibana \
-e ELASTICSEARCH_URL=http://172.168.201.169:9200/ \
-p 5601:5601 \
-d kibana:7.4.2
UR_SERVER_HOST:设置你服务器的地址和9200端口
3.开机自启动
docker update kibana --restart=always
特殊情况:
按照上面配置有可能kibana一直无法在本地浏览器打开,一直显示
Kibana server is not ready yet
这个时候要做
1.检查本地访问es能否成功。如果未成功就是es有问题
2.查看kibana日志 docker logs kibana 如果是no living connections 就是kibana无法连接到es。
3.进入kibana终端查看日志文件 /usr/share/config/kibana.yml或者config/kibana.yml。
4.将日志文件中 elasticsearch.hosts或elasticsearch.url 修改为es在docker中的地址而不是服务器地址。
5.docker中es的地址使用 docker inspect elasticsearch|grep IPAddress查看。
6.重启kibana。docker restart kibana。
ps.如果还是无法运行可以尝试将kibana.yml文件中改为server.host: "0.0.0.0"
上述修改后要注意的是 如果es重启,则有可能es在容器中的ip会修改,造成无法访问情况
8.docker安装jenkins
- 下载镜像
docker pull jenkinsci/blueocean
如果你看过 Jenkins 文档中 Docker 安装 小节,会发现官方推荐使用的镜像是jenkinsci/blueocean
,该镜像包含当前的长期支持 (LTS) 的 Jenkins 版本 (可以生产使用) ,并捆绑了所有 Blue Ocean 插件和功能
- 创建容器
docker run \
--name jenkins\
-d \
-p 8081:8080 \
-p 50001:50000 \
-v /home/apache-maven-3.5.4:/usr/local/maven \
jenkinsci/blueocean
挂载文件夹可以不写,这里加了挂载文件夹是为了在jenkins中使用maven打包部署,同时修改了访问路径为8081
- 容器启动问题
- 启动后一直提示:Please wait while Jenkins is getting ready to work...
将国外的源更新为国内的即可:进入docker容器
cd /usr/jenkins_home
vi hudson.model.UpdateCenter.xml
将地址改为清华 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
如果后续下载plugins时候提示下载失败,大小不一致,可以尝试更换为旧的,但是第一次启动建议更换国内源。
9.docker安装rabbitmq
- 下载镜像、安装
docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management
- 登录管理页面
http://localhost:15672
guest/guest
10.docker安装zipkin
- 下载镜像、安装
docker run -d -p 9411:9411 openzipkin/zipkin
- 登录zipkin页面
localhost:9411
11.docker常用指令
sudo docker images // 查看所有镜像
docker exec -it mysql /bin/bash // 进入容器
docker rm
container-name
// 删除容器docker top
container-name
//容器占用率高docker logs -f
container-name
// 容器执行日志docker pull mysql|redis:xxx // 拉取docker源 xxx是版本,不加默认最新latest
评论