Docker与虚拟机的区别

  • docker和虚拟机最大的不同,docker共用宿主机的内核,虚拟机中每个虚拟机中有单独的内核虚拟出来,如上图所示;
  • docker不能做后端兼容性测试,因为其没有独立的虚拟内核
  • 在系统上操作的任何东西都不是直接调用内核的,都需要经过系统调用,使用docker安装了操作系统的镜像软件,感觉像是在操作系统上运行,因此即使用的是Centos镜像,内核也有可能是Ubantu的,如下图所示:

Docker的优缺点

优点

  • 轻量级:因为docker不用虚拟化内核,直接共享宿主机的内核,所以节省了很多资源,在同样的资源下可以启动更多的软件,同时启动速度也更快

缺点

  • 优点即缺点: docker的优点也是它的缺点,正是因为所有的容器都共享一个内核,如果其中一个容器将内核给"搞坏了",那所有的容器就都无法正常工作了

Docker的隔离-三项关键技术

  • NameSpace

    每启动一个docker进程就会分配一个网络名称空间,进行网络的隔离
  • 联合文件系统

    能够给每一个容器提供单独的视图,达到文件目录的隔离,这样就不会访问到其他容器的文件
  • Cgroups

    资源隔离,限定当前进程使用资源大小,达到资源的隔离

镜像管理命令

  • docker pull {image_name} 拉取镜像
  • docker push {image_name} 推送镜像
  • docker images查看当前机器的所有镜像
  • docker rmi {image_name} 删除当前机器的⼀镜像
  • docker tag {source_images_name:tag your_image_name:tag} 为一个镜像打tag
  • docker save {image_name} > {new_image_name}.tar 将一个镜像打包成一个tar包,可供无网络设备使用
  • docker load < {image_name}.tar 解压一个镜像tar包

容器管理

  • docker run --name={your_name} --d {image_name} 运行容器
  • docker ps -a 查看当前所有容器
  • docker stop {container_name} 停止容器
  • docker kill (container_name) 杀死容器
  • docker rm -f {container_name} 强制删除容器
  • docker start {container_name} 启动容器
  • docker restart {container_name} 重启容器
  • sudo docker cp host_path containerID:container_path 从主机复制到容器
  • sudo docker cp containerID:container_path host_path 从容器复制到主机

容器运行命令的一些参数

  • --name 指定容器名称
  • -d 后台运行
  • -port 指定端⼝映射规则
  • --network 指定容器器运行的⽹路模式
  • -v 指定需要挂载的数据卷
  • -env 指定需要传递给容器的环境变量

查看信息相关

  • docker logs -f {容器名称} 查看容器⽇日志
  • docker info 查看docker服务的信息
  • docker inspect {容器名称} 查看容器的元数据

docker搭建Jenkins时区问题

  • 1.通过dcoker exec -it jenkins bash 进入Jenkins容器 ,执行:echo 'Asia/Shanghai' > /etc/timezone
  • 2.启动参数加--env JAVA_OPTS="-Duser.timezone=GMT+08"
  1. docker run --name myjenkins -itd -p 8001:8080 -p 50000:50000 -v /home/test/jenkins_home:/var/jenkins_home --env JAVA_OPTS="-Duser.timezone=GMT+08" jenkins
  2. /home/test/jenkins_home 是本地新建的目录,如果在Mac需要给设置权限,chmod 777 /home/test/jenkins_home
  3. 注意挂载权限:sudo chown -R 1000:1000 /home/test/jenkins_home
  4. 需要修改下目录权限, 因为当映射本地数据卷时,/home/test/ jenkins_home目录的拥有者为root用户,而容器中jenkins useruid1000
  5. sudo chown -R 1000 /home/test/jenkins_home/

搭建MySQL

  1. docker run --name some-mysql -v /hometest/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 -d mysql:5.7
  2. 其中1qaz9ol. 为数据库root的密码

selenium远程部署

  1. 1. docker pull selenium/node-chrome-debug:3.7.1-beryllium
  2. 2. docker pull selenium/hub:3.7.1-beryllium
  3. docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1- beryllium
  4. docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium
  5. node_exporter监控系统资源
  6. 后台启动 nohup ./node_exporter >>node_exporter.log 2>&1 &

测试脚本

  1. from threading import Thread
  2. from selenium import webdriver
  3. from time import sleep, ctime
  4. # 测试用例
  5. def baidu(search=None):
  6. # print('start:%s,' % browser)
  7. # print('browser:%s' % browser)
  8. # if browser == 'chrome':
  9. # driver = webdriver.Chrome()
  10. # elif browser == 'firefox':
  11. # driver = webdriver.Firefox()
  12. # else:
  13. firefox_capabilities = {
  14. "browserName": "chrome",
  15. "version": "",
  16. "platform": "ANY",
  17. "javascriptEnabled": True,
  18. "marionette": True,
  19. }
  20. browser = webdriver.Remote("http://119.3.89.184:5001/wd/hub",
  21. desired_capabilities=firefox_capabilities) # 注意端口号4444是我们上文中映射的宿主机端口号
  22. # browser.get("http://www.baidu.com")
  23. # driver = webdriver.Chrome()
  24. # print('参数有误')
  25. browser.get('http://www.baidu.com')
  26. browser.find_element_by_id('kw').send_keys(search)
  27. browser.find_element_by_id('su').click()
  28. sleep(3)
  29. browser.quit()
  30. if __name__ == '__main__':
  31. print("主线程开始======{}".format(ctime()))
  32. lites = {
  33. 'chrome': 'threading',
  34. 'firefox': 'python',
  35. 'java': 'java'
  36. } # 启动浏览器,指定每个浏览器搜索的内容
  37. threads = []
  38. files = range(len(lites))
  39. # 创建多线程
  40. for search in lites.values(): # 字典循环
  41. print(search)
  42. t = Thread(target=baidu, args=(search,))
  43. threads.append(t)
  44. # 启动多线程
  45. for t in files:
  46. threads[t].start()
  47. for t in files:
  48. threads[t].join()
  49. print("主线程结束======{}".format(ctime()))

搭建prometheus

  1. docker run --name prometheus -d -p 9090:9090 -v `pwd`/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

prometheus.yml文件

  1. global:
  2. scrape_interval: 15s
  3. evaluation_interval: 15s
  4. rule_files:
  5. - rules/*.rules
  6. scrape_configs:
  7. - job_name: 'prometheus'
  8. static_configs:
  9. - targets: ['localhost:9090']
  10. - job_name: 'node_exporter'
  11. static_configs:
  12. - targets: [ '192.168.0.103:9100']
  13. - job_name: 'mysql'
  14. static_configs:
  15. - targets: ['docker.testing-studio.com:9104', '119.3.89.184:9104']

启动grafana

  1. docker run --name grafana -d -p 8000:3000 grafana/grafana

启动mysqld-exporter

  1. docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:1qaz9ol.@(docker.testing-studio.com :8888)/mysql" prom/mysqld-exporter

doker基本使用的更多相关文章

  1. [doker]ubuntu18安装doker

    ubuntu安装doker很简单,分4个步骤: Step1:更新资源库并安装apt-transprot-https软件包. 在安装Docker前, 首拉取最新的软件资源库 wangju@wangju- ...

  2. Doker安装日志,留个记录而已

    tianye@ubuntu:/usr/share$ wget -qO- https://get.docker.com/ | sh # Executing docker install script, ...

  3. doker学习笔记

    1.获取镜像: docker pull mysql 2,查看已安装的镜像: docker image 3,运行: 查看docker运行:docker info(docker run ubuntu ec ...

  4. Doker学习笔记之一:安装

    基于Ubuntu16.04LTS 第一步:通过脚本进行安装 $ curl -sSL https://get.docker.com/ | sh 或者选择国内的DaoCloud安装脚本 $ curl -s ...

  5. linux 下安装doker centeros6.5

    通过 cat /proc/version .uname [root@192.168.1.1 ~]# cat /proc/version Linux version 2.6.32-279.el6.x86 ...

  6. doker 笔记(1) 架构

    Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 ...

  7. Doker容器之间连接

    第一个应用容器 $ sudo docker run --name=mysql_client1 --link=mysql_server:db -t -i kongxx/mysql_client /usr ...

  8. doker基础

    去 Docker Hub 上拉取一个叫 hello-world 的集装箱docker pull hello-world然后让这个集装箱跑起来docker run hello-world查看本机所安装的 ...

  9. Doker容器部署Tomcat服务器

    1.拉取tomcat服务镜像文件 root@ubuntu:~# docker pull registry.cn-hangzhou.aliyuncs.com/xxxx/xxxxx:web web: Pu ...

  10. Doker部署Jmeter(一) 目标服务器部署Jmeter监控容器

    用jmeter插件监控服务器性能之前也有提到:https://www.cnblogs.com/betterbb/p/11285022.html 这里主要记录一下docker上的部署,所需的3个插件可以 ...

随机推荐

  1. robotframework安装与运行(ride.py1.7.4.2命令报错)(win10+python3.8.1)

    首先,robotframework必须在python的环境下运行 所以你的电脑里必须有python3.x的环境先. 上古时期的robotframework只支持python2,不过python2都已经 ...

  2. [PyTorch 学习笔记] 7.1 模型保存与加载

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson7/model_save.py https://githu ...

  3. 升级微服务架构5:API网关

    API网关是一个服务器,是系统的唯一入口.从面向对象设计的角度看,它与外观模式类似.API网关封装了系统内部架构,为每个客户端提供一个定制的API.它可能还具有其它职责,如身份验证.监控.负载均衡.缓 ...

  4. 回归 | js实用代码片段的封装与总结(持续更新中...)

      上一次更博还是去年10月28号了,截至今天已经有整整4个月没有更新博客了,没更新博客不是代表不学了,期间我已经用vue做了两个项目,微信小程序做了一个项目,只是毕竟找到工作了,想偷偷懒,你懂的. ...

  5. Spring boot中配置HikariCP连接池

    # jdbc_config datasourcespring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasourc ...

  6. java 常用类-String-1

    一.字符串相关的类 1.1 String 的特性 String类:代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. String是一个fin ...

  7. 关于KeePass实现mstsc远程桌面(rdp协议)的自动登录

    本文的Keepass版本:KeePass Password Safe Version 2.45 首先介绍一下Keepass,引用官网的解释如下: KeePass is a free open sour ...

  8. leetcode1552题解【二分+贪心】

    leetcode1552.两球之间的磁力 题目链接 算法 二分+贪心 时间复杂度O(nlogn + nlogm) 1.根据题意描述,我们需要将m个球放入到n个篮子中,根据题目中数据范围描述发现m &l ...

  9. NX导入DWG失败

    给客户开发的NX导入DWG图纸功能,部分电脑偶尔出现导入失败的情况,且几乎没有规律可言.客户无法理解,坚持认为是代码的问题,毕竟使用的是我们二次开发的功能.我本机没有问题,在某些出问题的电脑上也尝试多 ...

  10. 自定义带边框TextView--边框粗细不一的问题

    自定义带边框TextView 给textview加边框 最low的做法.textview外层套一层布局,然后给布局加边框样式(这么弱的做法,不能这么干) 自定义控件 canvas.drawLines ...