Docker 常用指令使用和容器安装

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

  1. 下载镜像

docker pull jenkinsci/blueocean

如果你看过 Jenkins 文档中 Docker 安装 小节,会发现官方推荐使用的镜像是jenkinsci/blueocean,该镜像包含当前的长期支持 (LTS) 的 Jenkins 版本 (可以生产使用) ,并捆绑了所有 Blue Ocean 插件和功能

  1. 创建容器
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

  1. 容器启动问题
  1. 启动后一直提示: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

  1. 下载镜像、安装

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

  1. 登录管理页面

http://localhost:15672

guest/guest

10.docker安装zipkin

  1. 下载镜像、安装

docker run -d -p 9411:9411 openzipkin/zipkin

  1. 登录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

end
  • 作者:Endwas(联系作者)
  • 发表时间:2021-09-22 16:59
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转博主转载的文章,请附上原文链接
  • 公众号转载:请在文末添加作者名字和博客地址
  • 评论