• Docker如何使用


    目录

    1、Docker是什么

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    1.1、Docker优点

    1.简化配置
    这是Docker初始目的,虚拟机VM最大的好处是基于你的应用配置能够无缝运行在任何平台上。Docker提供同样类似VM的能力,但是没有任何副作用,它能让你将环境和配置放入代码然后部署,同样的Docker配置能够在各种环境中使用,这实际是将应用环境和底层环境实现了解耦。

    2.代码管道化管理
    能够对代码以流式pipeline管道化进行管理,从开发者的机器到生产环境机器这个流程中都能有效管理。因为在这个流程中会有各种不同的环境,每个都可能有微小的区别,Docker提供了跨越这些异构环境以一致性的微环境,从开发到部署实现流畅发布。

    3.开发人员的生产化
    在一个开发环境,我们希望我们的开发环境能更加接近于生产环境,我们会让每个服务运行在自己的VM中,这样能模拟生产环境,比如有时我们并不总是需要跨越网络连接,这样我们可以将多个Docker装载一系列服务运行在单机上最大程度模拟生产分布式部署的环境。

    4.应用隔离
    有很多理由你需要在一台机器上运行多个应用,这就需要将原来铁板一块monolithic的应用切分为很多微服务。实现应用之间的解耦,将多个应用服务部署在多个Docker中能轻松达到这个目的。

    5.服务合并
    使用Docker也能合并多个服务以降低费用,不多的操作系统内存占用,跨实例共享多个空闲的内存,这些技术Docker能以更加紧密资源提供更有效的服务合并。

    6.多租户
    Docker能够作为云计算的多租户容器,使用Docker能容易为每个租户创建运行应该多个实例,这得益其灵活的快速环境以及有效diff命令。

    7.快速部署
    Docker通过创建进程的容器,不必重新启动操作系统,几秒内能关闭,你可以在数据中心创建或销毁资源,不用担心额外消耗。典型的数据中心利用率是30%,通过更积极的资源分配,以低成本方式对一个新的实例实现一个更聚合的资源分配,我们很容易超过这个利用率,大大提高数据中心的利用效率。

    8.环境统一 docker将容器打包成镜像,创建符合docker hub规范的镜像,上传进个人的私有docker hub,转换环境时直接pull即可,最大程 度的保证了开发环境,正式环境统一

    1.2、Docker缺点

    Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:
    1、Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
    2、LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
    3、隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
    4、网络管理相对简单,主要是基于namespace隔离
    5、cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
    6、Docker对disk的管理比较有限
    7、container随着用户进程的停止而销毁,container中的log等用户数据不便收集

    2、Docker安装部署

    2.1、安装

    yum install docker
    
    • 1

    2.2、开启服务

    systemctl start  docker.service
    
    • 1

    2.3、安装镜像(这里是以centos为例)

    docker pull centos:7.2.1511
    
    • 1

    可以利用以下命令查看是否安装成功

    docker images
    
    • 1

    在这里插入图片描述

    3、开启该镜像的服务

    一个镜像可以开启N多次,彼此操作之间不影响。也就是说你在A镜像中删除某文件,但是B镜像中的该文件还依然存在,不会影响。以下举个例子,其中4cbf是镜像IMAGE ID字段,前四位的缩写。

    docker run -ti 4cbf /bin/bash
    
    • 1

    开启后会自动进入到镜像中,此时操作就是再镜像中了,查看是否真的是在镜像中

    uname -a
    
    • 1

    在这里插入图片描述

    记住按“ctrl + q + p”组合键退出该镜像,这样镜像并不会停止服务,可以通过该命令查看

    docker ps
    
    • 1

    如果不小心结束了该服务,比如说按了exit等,还可以通过该命令查看

    docker ps -a
    
    • 1

    在这里插入图片描述
    如何再进入到开启的服务中呢?
    直接输入以下命令即可(其中469a913f3c26是该Image的Container ID)

    docker exec -it 469a913f3c26 /bin/bash
    
    • 1

    在这里插入图片描述

    4、错误的解决方案

    4.1、Docker出现“. Is the docker daemon running”的解决方案

    执行docker ps命令,出现"Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running”问题。此时已确定Docker本身已经安装正常。
    问题原因是因为docker服务没有启动,所以在相应的/var/run/ 路径下找不到docker的进程。
    执行以下命令,启动docker服务

     service docker start 
    
    • 1

    4.2、Docker报错“Error response from daemon: Container *”的解决方案

    例如:
    现象:

    docker exec -it 7c5a2350c4cb /bin/bash
    Error response from daemon: Container * is not running。
    
    • 1
    • 2

    原因:
    因为这个exec跑不起来,那就用start
    解决:

    docker start 7c5a2350c4cb 
    
    • 1

    5、Docker实例

    5.1、docker run

    docker run -d -p 8082:80 --name nginx -v /usr/sinatra/nginx/www:/usr/share/nginx/html 
    -v /usr/sinatra/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
    -v /usr/sinatra/nginx/logs:/var/log/nginx:ro  nginx
    
    • 1
    • 2
    • 3
    • 挂载数据卷默认权限是rw,可以通过ro指定为只读
    • -d 开启Daemon模式
    • :左边是主机的配置,右边是docker里面的配置
    • -p 8082:80: 将容器的 80 端口映射到主机的 8082 端口
    • 记住进程是

    5.2、docker cp

    docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
    
    • 1
    • 拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以查看 docker ps 命令输入中的第一列
  • 相关阅读:
    5.过拟合,dropout,正则化
    华硕ROG2/ROG5/ROG6/ROG7Pro强解锁L锁-快速实现root权限-支持Zenfone9/8/7
    设计模式之享元模式(十)
    算术表达式
    Python灰帽编程——初识Python下(函数与文件)
    webpack+TypeScript搭建工程化项目
    磁铁产品16CFR1262测试周期多久
    关于前端如何下载后端接口返回content-type为application/octet-stream的文件
    黑猫带你学Makefile第6篇:Makefile重要规则
    第二章-H3C-网络设备操作入门
  • 原文地址:https://blog.csdn.net/m0_67394002/article/details/126327463