doker基本使用
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"
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
/home/test/jenkins_home 是本地新建的目录,如果在Mac需要给设置权限,chmod 777 /home/test/jenkins_home
注意挂载权限:sudo chown -R 1000:1000 /home/test/jenkins_home
需要修改下目录权限, 因为当映射本地数据卷时,/home/test/ jenkins_home目录的拥有者为root用户,而容器中jenkins user的uid为1000
sudo chown -R 1000 /home/test/jenkins_home/
搭建MySQL
docker run --name some-mysql -v /hometest/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 -d mysql:5.7
其中1qaz9ol. 为数据库root的密码
selenium远程部署
1. docker pull selenium/node-chrome-debug:3.7.1-beryllium
2. docker pull selenium/hub:3.7.1-beryllium
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
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
node_exporter监控系统资源
后台启动 nohup ./node_exporter >>node_exporter.log 2>&1 &
测试脚本
from threading import Thread
from selenium import webdriver
from time import sleep, ctime
# 测试用例
def baidu(search=None):
# print('start:%s,' % browser)
# print('browser:%s' % browser)
# if browser == 'chrome':
# driver = webdriver.Chrome()
# elif browser == 'firefox':
# driver = webdriver.Firefox()
# else:
firefox_capabilities = {
"browserName": "chrome",
"version": "",
"platform": "ANY",
"javascriptEnabled": True,
"marionette": True,
}
browser = webdriver.Remote("http://119.3.89.184:5001/wd/hub",
desired_capabilities=firefox_capabilities) # 注意端口号4444是我们上文中映射的宿主机端口号
# browser.get("http://www.baidu.com")
# driver = webdriver.Chrome()
# print('参数有误')
browser.get('http://www.baidu.com')
browser.find_element_by_id('kw').send_keys(search)
browser.find_element_by_id('su').click()
sleep(3)
browser.quit()
if __name__ == '__main__':
print("主线程开始======{}".format(ctime()))
lites = {
'chrome': 'threading',
'firefox': 'python',
'java': 'java'
} # 启动浏览器,指定每个浏览器搜索的内容
threads = []
files = range(len(lites))
# 创建多线程
for search in lites.values(): # 字典循环
print(search)
t = Thread(target=baidu, args=(search,))
threads.append(t)
# 启动多线程
for t in files:
threads[t].start()
for t in files:
threads[t].join()
print("主线程结束======{}".format(ctime()))
搭建prometheus
docker run --name prometheus -d -p 9090:9090 -v `pwd`/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
prometheus.yml文件
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
- rules/*.rules
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: [ '192.168.0.103:9100']
- job_name: 'mysql'
static_configs:
- targets: ['docker.testing-studio.com:9104', '119.3.89.184:9104']
启动grafana
docker run --name grafana -d -p 8000:3000 grafana/grafana
启动mysqld-exporter
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基本使用的更多相关文章
- [doker]ubuntu18安装doker
ubuntu安装doker很简单,分4个步骤: Step1:更新资源库并安装apt-transprot-https软件包. 在安装Docker前, 首拉取最新的软件资源库 wangju@wangju- ...
- Doker安装日志,留个记录而已
tianye@ubuntu:/usr/share$ wget -qO- https://get.docker.com/ | sh # Executing docker install script, ...
- doker学习笔记
1.获取镜像: docker pull mysql 2,查看已安装的镜像: docker image 3,运行: 查看docker运行:docker info(docker run ubuntu ec ...
- Doker学习笔记之一:安装
基于Ubuntu16.04LTS 第一步:通过脚本进行安装 $ curl -sSL https://get.docker.com/ | sh 或者选择国内的DaoCloud安装脚本 $ curl -s ...
- linux 下安装doker centeros6.5
通过 cat /proc/version .uname [root@192.168.1.1 ~]# cat /proc/version Linux version 2.6.32-279.el6.x86 ...
- doker 笔记(1) 架构
Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 ...
- Doker容器之间连接
第一个应用容器 $ sudo docker run --name=mysql_client1 --link=mysql_server:db -t -i kongxx/mysql_client /usr ...
- doker基础
去 Docker Hub 上拉取一个叫 hello-world 的集装箱docker pull hello-world然后让这个集装箱跑起来docker run hello-world查看本机所安装的 ...
- Doker容器部署Tomcat服务器
1.拉取tomcat服务镜像文件 root@ubuntu:~# docker pull registry.cn-hangzhou.aliyuncs.com/xxxx/xxxxx:web web: Pu ...
- Doker部署Jmeter(一) 目标服务器部署Jmeter监控容器
用jmeter插件监控服务器性能之前也有提到:https://www.cnblogs.com/betterbb/p/11285022.html 这里主要记录一下docker上的部署,所需的3个插件可以 ...
随机推荐
- ajax之---上传文件
“伪”ajax向后台提交文件 <iframe style="display: none" id="iframe1" name="i ...
- [POJ]Find The Multiple(DFS)
题目链接 http://poj.org/problem?id=1426 题意 输入一个数n,输出任意一个 只含0.1且能被n整除的数m.保证n<=200,m最多100位. 题解 DFS/BFS都 ...
- 传值&传值引用
转自http://www.cnblogs.com/androidsuperman/p/9012320.html 首先对传值和传引用要有个基本的概念 传值:传递的是值的副本.方法中对副本的修改,不会影响 ...
- 从Class源码看反射
日常敲码中,如果想要在程序运行阶段访问某个类的所有信息,并支持修改类的状态或者行为的话,肯定会用到反射,而反射靠的就是Class类.Java的动态代理也用到了这个东西,所以了解其基本操作在苦逼的CRU ...
- spring的初认识
spring的理解 1.spring是一个开源的免费框架(容器) 2.spring是一个轻量级的,非入侵式的框架 3.支持事务的处理,对框架的整合的支持 4.控制反转(ioc)和面向切口编程(aop) ...
- 《Mybatis进阶》肝了30天专栏文章,整理成册,免费获取!!!
持续原创输出,点击上方蓝字关注我吧 目录 前言 简介 如何获取? 总结 前言 Mybatis专栏文章写到至今已经有一个月了,从基础到源码详细的介绍了每个知识点,没什么多余的废话,全是工作.面试中常用到 ...
- 吴恩达Machine Learning学习笔记(二)--多变量线性回归
回归任务 多变量线性回归 公式 h为假设,theta为模型参数(代表了特征的权重),x为特征的值 参数更新 梯度下降算法 影响梯度下降算法的因素 (1)加速梯度下降:通过让每一个输入值大致在相同的范围 ...
- Vue 属性渲染
属性渲染 关于标签的属性渲染统一使用v-bind属性指令,比如轮播图的src全部经过后端获得,所以我们需要对src属性做动态渲染. 基本使用 使用v-bind属性指令,动态绑定图片的地址. <b ...
- 后端开发实践:Spring Boot项目模板
在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...
- Apache Shiro 1.3.2入门
简介 Apache Shiro是一个功能强大且灵活的开放源代码安全框架,可以清楚地处理认证,授权,企业会话管理和加密.Apache Shiro的首要目标是易于使用和理解.有时候安全性可能非常复杂和痛苦 ...