Docker学习笔记(全 最详细)

一、 Docker的简介

1.Docker是什么/h2>

1.1 问题:为什么会有docker出现/h4>

一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联 公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验.
Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案
环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装就是说,安装的时候,把原始环境一模一样地复制过来开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题

Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

1.3 总结:

Docker是一个解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

2 Docker能干嘛/h2>

2.1 之前的虚拟机技术

虚拟机(virtual machine)就是带环境安装的一种解决方案。
它可以在一种操作系统里面运行另一种操作系统,比如在Windows 系统里面运行Linux 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说**,虚拟机就是一个普通文件,不需要了就删掉**,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。

比较了 Docker 和传统虚拟化方式的不同之处:

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
  • 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
  • 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

2.3 开发/运维(DevOps)

一次构建、随处运行

  • 更快速的应用交付和部署

传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。

  • 更便捷的升级和扩缩容

随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。

  • 更简单的系统运维

应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。

  • 更高效的计算资源利用

Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。

3.去哪里下载/h2>

官 :

  • docker官 :https://www.docker.com/

仓库:

  • Docker Hub官 : https://hub.docker.com/

二、 Docker的安装

1.Docker的基本组成

1.1 镜像(image)

Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。(如同Linux镜像可以安装多个Linux系统…)

2. 安装步骤(以Centos7.6安装为例)

参考文档:https://docs.docker.com/engine/install/centos/

1.确定你是CentOS7及以上版本

2.yum安装gcc相关

  • CentOS7能上外
  • yum -y install gcc
  • yum -y install gcc-c++

3.卸载旧版本

4.安装需要的软件包

5.设置stable镜像仓库

设置成国内阿里云端仓库

6.更新yum软件包索引

7.安装DOCKER CE

8.启动docker

9. 测试

启动Docker后台容器(测试运行 hello-world

10.配置镜像加速

  • 创建docker配置文件夹
  • 编写镜像加速内容
  • 重新加载docker配置
  • 重启Docker

11.卸载

3.底层原理

3.1 Docker是怎么工作的

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境,就是我们前面说到的集装箱。

docker info

docker –help

docker rmi

docker rmi 某个XXX镜像名字ID

删除单个:docker rmi -f 镜像ID

删除全部:docker rmi -f $(docker images -qa)

3.容器命令

有镜像才能创建容器,这是根本前提(下载一个CentOS镜像演示):docker pull centos

3.1 新建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

OPTIONS说明(常用):有些是一个减 ,有些是两个减

  • –name=“容器新名字”: 为容器指定一个名称;
  • -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
  • -i:以交互模式运行容器,通常与 -t 同时使用;
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -P: 随机端口映射;
  • -p: 指定端口映射,有以下四种格式
    ip:hostPort:containerPort
    ip::containerPort
    hostPort:containerPort
    containerPort

启动守护式容器并给与后台进程指定的工作,防止其自杀.

4.3 查看容器内运行的进程

docker top 容器ID

4.4 查看容器内部细节

docker inspect 容器ID

5.常见命令总结

Docker学习笔记(全 最详细)
attach    Attach to a running container  # 当前 shell 下 attach 连接指定运行镜像build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像commit    Create a new image from a container changes   # 提交当前容器为新的镜像cp        Copy files/folders from the containers filesystem to the host path   #从容器中拷贝指定文件或者目录到宿主机中create    Create a new container         # 创建一个新的容器,同 run,但不启动容器diff      Inspect changes on a container's filesystem   # 查看 docker 容器变化events    Get real time events from the server          # 从 docker 服务获取容器实时事件exec      Run a command in an existing container        # 在已存在的容器上运行命令export    Stream the contents of a container as a tar archive   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]history   Show the history of an image   # 展示一个镜像形成历史images    List images     # 列出系统当前镜像import    Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]info      Display system-wide information# 显示系统相关信息inspect   Return low-level information on a container   # 查看容器详细信息kill      Kill a running container       # kill 指定 docker 容器load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]login     Register or Login to the docker registry server    # 注册或者登陆一个 docker 源服务器logout    Log out from a Docker registry server          # 从当前 Docker registry 退出logs      Fetch the logs of a container  # 输出当前容器日志信息port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口对应的容器内部源端口pause     Pause all processes within a container        # 暂停容器ps        List containers # 列出容器列表pull      Pull an image or a repository from the docker registry server   # 从docker镜像源服务器拉取指定镜像或者库镜像push      Push an image or a repository to the docker registry server    # 推送指定镜像或者库镜像至docker源服务器restart   Restart a running container    # 重启运行的容器rm        Remove one or more containers  # 移除一个或者多个容器rmi       Remove one or more images             # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]run       Run a command in a new container              # 创建一个新的容器并运行一个命令save      Save an image to a tar archive # 保存一个镜像为一个 tar 包[对应 load]search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像start     Start a stopped containers     # 启动容器stop      Stop a running containers      # 停止容器tag       Tag an image into a repository # 给源中镜像打标签top       Lookup the running processes of a container   # 查看容器中运行的进程信息unpause   Unpause a paused container     # 取消暂停容器version   Show the docker version information           # 查看 docker 版本 wait      Block until a container stops, then print its exit code   # 截取容器停止时的退出状态值

                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月22日
下一篇 2021年10月22日

相关推荐