最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 服务器 > 系统运维 >
Docker是什么?怎么用?
CSDN发表于 2020-09-27 17:25 次浏览
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker用途:


    搭建测试环境:
        最常用的,能解决环境不一致的问题:例如程序环境变量
        Docker是通过同一镜像去扩展每一个容器,所以只要用的镜像是一致的,就能保证代码等环境变量也是一致的
    搭建各类基础服务
        用例管理软件:禅道等
        极大提高搭建的效率
        只需要在官方下载相关镜像,解决环境搭建复杂环境依赖问题
    搭建测试执行环境
    


Docker与虚拟机的区别


    虚拟机是虚拟化操作系统的内核S
    Docker没有虚拟化操作系统的内核,而是直接虚拟化上层的软件,所有容器
    共享宿主机内核
    Docker优点:轻量级、启动极快,能打开更多的软件(容器) 
    缺点:若有一个容器把宿主机内核搞坏了,那整台服务器就瘫痪了
    缺点2:一旦应用是挑内核(指定内核),就不好放在Docker上。如:编译C++、不能拿Docker来兼容性测试:因为不虚拟内核,内核会出现不一致,所以只能用虚拟机
    缺点3:不能用来做兼容性测试。

 

容器是什么


    容器=虚拟机
    都是虚拟化方案
    


Docker怎样做到隔离的呢?


    Namespace名称空间
        用来隔离各种事情,如网络隔离空间隔离网络,进程隔离空间隔离进程
        
    联合文件系统
    Cgroups:
        用来隔离资源的:cpu、内存等

配置加速器:http://www.cnblogs.com/atuotuo/p/6264800.html  这样下载外国镜像会快些


找镜像和Docker常用指令:

    Jenkins、mysql等
    打开网址:hub.docker.com
    找official标注的,说明是最好的
    有哪些坑,说明文档基本都会有描述
    docker pull jenkins  # 拉取镜像    
    docker images  # 列出已经安装的镜像
    docker images | grep mysql
    docker pull mysql:5.6   # 这样就下载了mysql:5.6
    docker rmi mysql:5.6  # 删除mysql
    docker tag mysql:5.7 mysql:5.7.1  # 多出一个mysql:5.7.1与mysql:5.7一样的
    相当于新建了一个索引
    没网络的环境下常用:
    docker save nginx > mynginx.tar  # 将nginx 打包为mynginx.tar 
    docker load < mynginx.tar
    
    docker run --name myJenkins -d -p 8099:8080 jenkins/jenkins # 启动镜像
    --name 取一个名称为 myJenkins 
    -d是在后台运行
    -p 8099:8080 把宿主机的8099端口映射到容器的8080端口
    docker ps # 查看启动的所有容器
    docker rm -f myJenkins  # -f是强制,强制删除运行中的 myJenkins
    
    docker logs -f myJenkins  # 查看 myJenkins容器日志
    容器网络是一个私有的虚拟网络,这些容器的ip地址都没进入路由表,
    外部访问不了
    docker exec是让容器去运行一条命令 
    -it :是登陆 其实就是tty(虚拟的shell端口)
    docker exec -it myjenkins bash # 就会登入到myjenkins容器里面
    exit # 退出登陆的容器
    
    docker info  # 产看各项信息
    docker cp container:myJenkins:/var/jenkins_home/text.txt . # 把myjenkins中text.txt拷贝出来放到当前目录
    镜像里的东西是要放在容器里跑的
    容器被删除,里面的数据也丢失
    docker run --name myJenkins -d -p 8099:8080 -v jenkins/jenkins:/var/jenkins_home # -v后面是工作目录
    -v:把宿主机某个文件的目录挂载在容器上,容器的所有读写操作就会同步在宿主机上,即使容器出现文件,数据也得到保留
    
    掌握以上的原理和指令基本就够用了。


标签:容器 docker
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐