【2020-03-02】Docker 基本命令,基本操作,常用应用的部署

Docker 使用
 
  • 使用阿里云镜像加速服务
sudo mkdir -p /etc/docker 
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://6o89qzug.mirror.aliyuncs.com"] } EOF 
sudo systemctl daemon-reload
sudo systemctl restart docker
 
 
docker 基本命令
 
  • 启动docker
systemctl start docker
  • 查看镜像
docker images
  • 搜索镜像
docker search
  • 删除镜像
docker rmi mysql:8.0.16
  • ​拉取镜像
docker pull redis
 
 
docker 容器基本操作
 
  • docker run -it --name=cl mysql:8 /bin/bash
-i: 一直运行
-t: 终端
-d:后台(守护)运行容器
 
  • ​docker exec -it mysql /bin/bash 进入容器内部
  • docker ps 查看正在运行的容器
  • docker ps -a 查看所有的容器
  • docker start mysql 启动容器
  • docker stop mysql 停止容器
  • docker rm mysql 删除容器(容器关闭后才能删除)
  • docker 容器设置自启动
docker update --restart no mysql
docker update --restart=always mysql
 
 
docker 容器的数据卷
数据卷:宿主机的一个目录或文件    
数据卷的作用:
  • 数据持久化,数据同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器可以挂载多个数据卷
 
  • ​配置数据卷
    • docker run ... -v 宿主机目录(文件):容器内目录(文件)
    • 注意事项:
      • 目录必须是绝对路径
      • 如果目录不存在,会自动创建
      • 可以挂载多个数据卷
  • 数据卷容器
    • 创建一个容器,挂载一个目录,让其他容易继承自该容器(--volume-from)
    • 通过简单方式实现数据卷配置
多容器进行数据交换:
    1、多个容器挂载同一个数据卷
    2、数据卷容器
 
docker 常用应用部署
  • ​docker + mysql
 
启动mysql
docker run -di --name=mysql -p 3306:3306 \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mima \ mysql
 
安装mysql 8 
docker pull mysql
此时,用navicat for mysql连接mysql发现报错:Client does not support authentication protocol requested  by server。。
 
解决方案:
进入容器:
docker exec -it mysql /bin/bash
 
进入mysql:
mysql -uroot -p
 
 
授权:
mysql> GRANT ALL ON *.* TO 'root'@'%';
 
 
刷新权限:
mysql> flush privileges;
 
 
更新加密规则:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mima' PASSWORD EXPIRE NEVER;
 
 
更新root用户密码:
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mima';
 
 
刷新权限:
mysql> flush privileges;
 
  • docker + Zookeeper
下载Zookeeper镜像
docker pull zookeeper
 
启动容器并添加映射
docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:latest
 
  • docker +  redis mongo es  rabbitmq
 
启动redis
docker run -di --name=redis -p 6379:6379 redis
 
启动mongo
docker run -di --name=mongo -p 27017:27017 mongo
 
 
启动logstash
logstash -e 'input { stdin { } } output { stdout {} }'
 
启动 elasticsearch
1修改配置
docker exec -it tensquare_elasticsearch /bin/bash   (/usr/share/elasticsearch)
docker cp tensquare_elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml
 
vi /usr/share/elasticsearch.yml
# transport.host: 0.0.0.0  (把此行的注释去掉)
 
2启动
docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8
 
3启动报错
修改宿主机配置 
vim  /etc/security/limits.conf ,追加内容
* soft nofile 65536   # nofile是单个进程允许打开的最大文件个数 soft nofile 是软限制 hard nofile是硬限制
* hard nofile 65536
 
vim /etc/sysctl.conf  ,追加内容
vm.max_map_count=655360
 
执行,修改参数后立即生效
sysctl ‐p   
 
4添加ik分词器
docker cp ik elasticsearch:/usr/share/elasticsearch/plugins
 
5重启
docker restart elasticsearch
 
 
启动 es head
docker run -di --name=head -p 9100:9100 mobz/elasticsearch-head:5
 
docker安装Kibana
1、
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200  --name kibana --network=container:elasticsearch kibana:7.4.1
2、
 
启动rabbitmq
创建容器,rabbitmq需要有映射以下端口: 5671 5672 4369 15671 15672 25672
docker run -di --name=tensquare_rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq:management
 
 
 
 
  • 使用 logstash 将 MySQL 数据导入 Elasticsearch
 
logstash -e 'input { stdin { } } output { stdout {} }'
-e 执行 
 
logstash -f ../mysqletc/mysql.conf
--config 或 -f 配置文件,后跟参数类型可以是一个字符串的配置或全路径文件名或全路径 路径(如:/etc/logstash.d/,logstash会自动读取/etc/logstash.d/目录下所有*.conf 的文 本文件,然后在自己内存里拼接成一个完整的大配置文件再去执行)
 
(1)在logstash-5.6.8安装目录下创建文件夹mysqletc (名称随意)
(2)文件夹下创建mysql.conf (名称随意) ,内容如下:
 
input {
  jdbc {
      # mysql jdbc connection string to our backup databse
      jdbc_connection_string => "jdbc:mysql://192.168.2.130:3306/tensquare_article"
      # the user we wish to excute our statement as
      jdbc_user => "root"
      jdbc_password => "mima"
      # the path to our downloaded jdbc driver  
      jdbc_driver_library => "D:\scf\logstash-5.6.8\mysqletcmysql-connector-java-5.1.46.jar"
      # the name of the driver class for mysql
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50"
      #以下对应着要执行的sql的绝对路径。
      #statement_filepath => ""
      statement => "SELECT id, title, content, state FROM tb_article"
      #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
      schedule => "* * * * *"
  }
}
 
 
output {
  elasticsearch {
      #ESIP地址与端口
      hosts => "127.0.0.1:9200"
      #ES索引名称(自己定义的)
      index => "tensquare_article"
      #自增ID编号
      document_id => "%{id}"
      document_type => "article"
  }
  stdout {
      #以JSON格式输出
      codec => json_lines
  }
}
 
 
 
dockerfile
FROM
run
docker build -t
 
systemctl stop firewalld.service   关闭防火墙
 
 
SpringDataRedis 使用说明
 
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间
stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val
stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作
stringRedisTemplate.boundValueOps("test").increment(1);//val +1
stringRedisTemplate.getExpire("test")//根据key获取过期时间
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
stringRedisTemplate.delete("test");//根据key删除缓存
stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值