@toc
docker介绍 https://mp.weixin.qq.com/s/R1Z5jvmw0SwggzpRhBI1Lg
1、Docker命令
1.1 安装Docker
- 如果安装过先卸载 往下翻有卸载方法
- 安装依赖设置yum仓库
安装依赖:
设置仓库:
- 安装docker
- 验证是否安装成功
过时的方法,废弃,仅供参考
Linux想要安装Docker,centOS的内核版本必须高于3.10。
如果版本过低,可以使用命令:yum update 升级软件包及内核在这里插入代码片
安装链接: https://www.cnblogs.com/zbseoag/p/11736006.html
- 安装报错 错误containerd.io >= 1.2.2-3
报以上错误执行这一句
错误:file /usr/share/man/man1/docker
以上错误执行以下这一句,
然后再继续安装yum install docker-ce
1.2 启动Docker
1.3 查看Docker版本
1.4 重启Docker服务
1.5 守护进程重启
1.6 关闭Docker
1.7 查看Docker运行状态
1.8 干净的卸载docker
共四条命令,一条一条执行
2、通用命令
2.1 镜像操作
如果pull太慢,尝试该方法: https://blog.csdn.net/julien71/article/details/79760919
- 查找镜像
- 拉取镜像
太长的话DESCRIPTION显示不完整,想要看完整的DESCRIPTION,加上参数--no-trunc
- 镜像列表
- 删除镜像
2.2 容器操作
  以上的启动的容器都只是内部的,想要能访问到,像tomcat和mysql,要做端口映射。
2.2.1 docker操作
新创建的docker容器没有很多命令,需要安装
2.2.2 安装vim
使用docker exec -it 3c8f31dfb55f /bin/bash进入docker容器以后,是不能使用vim命令,使用以下命令,就可以使用vim编辑文件 更新来源
安装vim
从linux拷贝文件到docker
2.2.3 安装ifconfig
- 安装ifconfig命令
2.2.4 安装rz、sz
进入docker容器后执行
2.2.5 同步时间
进入docker容器后
2.2.6 apt-get速度很慢
3、启动各种镜像
  3.1 docker下的MySql
   3.1.1 启动端口映射的MySql
mysql不太一样,要设置账号密码-e MYSQL_ROOT_PASSWORD=123456
   3.1.2 远程连接MySql报错1251
  如果数据库连接报错1251,是远程连接没有授权,可以按照以下步骤开通权限。 首先进入容器
进入容器以后,进入数据库
执行完上面命令以后会提示输入密码,密码成功进入下图所示
然后逐条执行命令
1、对远程连接授权
2、更改密码的加密规则
3、更改root的密码
4、刷新权限
最后使用客户端测试
  3.2 docker下的Redis
首先同样拉取Redis
然后启动做了端口映射的redis
使用Desktop工具访问Redis,成功
  3.3 docker下的Tomcat
- 查看镜像
- 拉取镜像
   3.3.1 启动做了端口映射的tomcat
   3.3.2 访问失败,404
解决方法: 1、使用docker exec -it 容器id /bin/bash命令进入tomcat目录
查看目录结构如下
2、将webapps.dist重命名为webapps,原本的webapps改个名字或者删除 3、访问测试
4、把war包放到tomcat中
3.3.3 查看实时控制台日志
docker logs --tail=100 -f 容器名称
  3.4 docker下的rabbitMQ
   3.4.1启动
拉取rabbitMQ
启动端口映射的rabbitmq
   3.4.2访问不到主页
无法访问主页,百度了别人的方法,解决了,原因是缺少插件 参考地址:https://www.cnblogs.com/yuebo/p/11732769.html运行命令[root@wzw ~]# docker exec -it myrabbitmq sh进入容器
安装完成后再访问,成功
默认的用户名密码都是guest
   3.4.3 管理界面没有折线图
  3.5 docker下的elasticsearch
  3.5.1 拉取失败
  一般来说,直接docker pull 镜像id就可以了,但是elasticsearch需要指定版本号,如果不指定就会报错not found
  3.5.2 启动做了端口映射的elasticsearch
  elasticsearc是用Java写的,初始默认占用2G的内存空间,使用-e命令限制它的内存使用,否则内存空间不足的话要报错。
   3.5.2.1 使用-e限制内存启动
-Xms256m:初始的内存大小256m-Xmx256m:最大的内存大小256m
   3.5.2.2 内存足够直接启动
  内存足够大的话就不用限制它的内存大小,直接启动。
   3.5.2.2 扩展内存
  如果又不想限制内存启动,又想直接启动,可以扩展自己的虚拟机, 参考:linux扩展内存
   3.5.2.3 异常:启动等一下就退出
   3.5.2.3.1 the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
  这个错误是说[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] 这三项,必须得设置其中一项,这里就设置discovery.seed_hosts进入容器
找到config
编辑 elasticsearch.yml
添加以下内容
解决完成
   3.5.2.3.2 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
   这个错误是内存太小,至少是262144,这里解决的话就是修改配置文件使用root用户,然后修改配置sysctl.conf
在文件中添加vm.max_map_count=655360
添加完成保存退出执行 [root@wzw ~]# sysctl -p
然后重启ES,解决完成
   3.5.2.3.3 OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will l
进入es容器,修改config中的jvm.options,将 -XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC,并重启es。
   3.5.2.3.4 如果启动访问ip:9200没问题,但是测试添加数据返回错误
   应该是docker默认的配置文件没有设置,给它填点配置
以上这些配置写在容器中的config文件夹下的elasticsearch.yml中基本就可以测试添加了
  3.6 docker下的zookeeper
拉取zookeeper
启动做了端口映射的zookeeper
不带日志的启动
启动并显示日志./zkServer.sh start-foreground
  3.7 docker下的nginx
拉取nginx
启动nginx
修改配置文件
  3.8 docker下的centos
拉取centos
启动centos
启动centos不带--privileged的话,执行systemctl命令报错System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down
如果提示:Unit firewalld.service could not be found. 说明防火墙没有安装,需要安装。yum install firewalld firewall-config
报错
CentOS8的docker网络有问题apt-get update用不了,报错,前一天都可以用,后来都用不了,ping也不通,研究了很久,网上的各种改源或者改配置文件都没用,估计虚拟机原本用的桥接的方式,docker创建容器默认也用的是桥接的方式。后来可能因为不正常的关闭虚拟机出了问题,也没人请教,最后都没解决.重装VMware,docker都没用
方法一
只能删除创建好的容器,再重新创建容器,创建容器的时候带上指定的网络参数,就可以使用apt-get update了,但是端口号就有问题了,
方法二
参考: https://www.jianshu.com/p/6481842a96e6依次执行命令
好用,有效
docker网络
- 创建网络
- 查看网络列表
- 查看网络具体信息
- 查看容器ip
- 将容器连接到该网络将zk1容器,连接到名为mynetwork的网络
- 将容器从指定网络中移除将容器kafka1,从mynetwork网络中移除
资料: https://www.qikegu.com/docs/3018
其它
方向键和退格键乱码
使用sh进入docker容器,使用方向键和退格键会乱码,
使用/bin/bash就可以了
将文件从docker容器中拿出来
docker cp [容器ID或名称]:[容器内文件路径] [宿主机文件路径]
将宿主机器的文件放入到docker容器中
docker cp [宿主机文件路径] [容器ID或名称]:[容器内文件路径]