docker的使用

随着docker/K8S技术的日渐成熟, 越来越多的公司将自己的服务放进docker里面来运行, 以此来做到资源隔离和部署的简化。

docker与虚拟机的区别

从下图可以看出, docker与VM相比, 结构要简单, 更加轻量一些, docker的dockerd程序是操作系统的一个进程, 每个docker内部也不是有自己的操作系统, 这些都是公用主机的资源, 因此docker比虚拟机要轻很多, 与之相应的,它的隔离性比虚拟机要差一些。
在这里插入图片描述

docker的基本原理

docker是通过namespace来隔离每个的docker, 使得用户感觉在独立使用一套自己的环境。待续。。。

docker镜像

要创建docker, 必须先创建镜像, 这里包含了docker索要包含的程序以及相关的依赖, 如何初始化并且启动应用程序。

  • 获得基础镜像
    通常可以先到官方的镜像上面下载一个基础镜像, 作为我们自己的镜像的基础,如果有的话更好,没有的话, 可以通过docker search命令查找摸个关键字相关的现有镜像, 然后下载到本地, 通过docker history命令来查看某个镜像的分层情况, 选择某个commitID作为新镜像的基础。
    docker  search centos
    docker pull centos
    docker history centos
    
  • 生成Dockerfile文件
    在获得了基础镜像之后, 我们有需要产生一个Dockerfile文件, 来制定我们的镜像里面需要的操作, 常见的有如下几个:
    命令 说明
    ADD 将本地文件添加到镜像里面去, 注意有些类型的压缩文件是会自动解压缩的, 比如, tar.gz, 而有些如.zip不会
    RUN 后面跟shell命令, 注意这是在docker里面
    CMD 只能有一条, 多个区最后一条
    ENTRYPOINT docker启动时, 执行的第一条命令, 可以是可执行程序, 加参数
    EXPOSE 对外暴露的端口号
  • 生成镜像
    生成镜像可以用如下命令:
    docker build -t "xxx:1.0.0" .
    
  • 特殊情况处理
    正常情况下, 一个docker应该包含一个应用程序, 并且由它作为docker内的1号进程, 这样docker的生命周期与其内部运行的程序相互绑定, 通过外部工具, 比如K8S的监控, 可以实现自动failover的功能。
    但是有时候, 我们的应用程序由于某些原因, 需要多个程序运行在一个docker内, 这时候就需要先启动一个init进程, 由它来block住docker不会退出, 其他的要运行的程序采用开机启动的方式

docker的运行与管理

常见的docker命令:

  • 启动docker
docker run -it -d --privilege IMAGE_XXX -v  host_path:docker_path -p 8080:8080
  • 监控docker状态
    docker ps;
    docker inspect dockerId
    
  • 删除docker
     docker rm -f dockerid
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章