美文网首页
docker学习笔记

docker学习笔记

作者: 王小板爱吃鱼 | 来源:发表于2019-10-01 13:42 被阅读0次

    docker与虚拟机的区别

    1. 虚拟机虚拟化了物理机,和docker只是对进程进行隔离。虚拟机是为提供系统环境而生的,由于虚拟化了支撑硬件,所以虚拟机能做到实时的热迁移、热克隆、挂起等操作。容器是为提供应用环境而生的,各有各的标地。

    2. docker启动快,消耗资源少,体积小

    docker 的主要用途,目前有三大类

    1. 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

    2. 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

    3. 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

    常见问题

    1. docker容器中启动service服务 Failed to get D-Bus connection: Operation not permitted

    启动容器时带上参数--privileged,使用该参数,container内的root拥有真正的root权限否则,container内的root只是外部的一个普通用户权限。在centos容器中,这个的原因是因为dbus-daemon没能启动。其实systemctl并不是不可以使用。将你的CMD或者entrypoint设置为/usr/sbin/init即可。会自动将dbus等服务启动起来。如:

    
    docker run --privileged  -ti -e "container=docker"  -v /sys/fs/cgroup:/sys/fs/cgroup  centos  /usr/sbin/init
    
    
    1. 进入运行中的容器的bash
    
    docker exec -it b255e96e1160 /bin/bash  // b255e96e1160可以是容器id或者名称
    
    
    1. 为运行中的容器添加端口映射

    方法1:

    (1)获取容器ip

    
    docker inspect b255e96e1160 | grep IPAddress
    
    

    (2)iptables转发端口

    将容器的8000端口映射到docker主机的8001端口

    
    iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
    
    

    方法2:

    (1)提交一个运行中的容器为镜像

    
    docker commit b255e96e1160 xiaoming/centos  // b255e96e1160为容器id,xiaoming/centos为生成的新的镜像的名称
    
    

    (2)运行镜像并添加端口

    
    docker run -d -p 8080:80 -p 8000:3000 b255e96e1160 /bin/bash // 端口映射可以像这样添加多个,格式为 本机端口:容器端口,b255e96e1160可以是镜像id或名称
    
    
    1. docker挂载本地目录实现文件共享

    docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。

    譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:

    
    docker run -it -v /test:/soft centos /bin/bash
    
    
    1. docker镜像文件导出与导入

    (1)导出:

    
    docker save new-image > /tmp/new-image.tar
    
    

    (2)导入:

    
    docker load < /tmp/new-image.tar
    
    

    相关文章

      网友评论

          本文标题:docker学习笔记

          本文链接:https://www.haomeiwen.com/subject/kzykpctx.html