Docker笔记

Docker简介

Docker是一个开源的应用容器引擎,基于GO语言并遵从Apache2.0协议开源
Docker基本概念:

  • 主机:主要是安装了Docker的就是主机,可以使用Docker
  • Docker客户端:客户端通过命令行或图形界面的方式操作Docker
  • 仓库:Docker支持将软件编译成一个镜像,然后将这个镜像发布出去,发布的地方就是仓库,分远程仓库与本地仓库,与maven类似。我们可以将我们自己的软件通过Docker打包成一个镜像发布到远程仓库或本地仓库。
  • 镜像:用户将软件配置等编译成一个镜像后发布出去,其他人就可以直接将这个镜像拉到本地运行
  • 容器:运行中的镜像称为容器,容器的启动速度非常快,性能开销也非常小

安装

简介

docker是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面只介绍CentOs的安装,Windows提供安装连接,但是不提供安装步骤,可以在官网中自己看。以下都是社区版。

CentOS

Linux包管理工具简介

CentOS是Linux的发行版之一,关于Linux发行版可以看Linux发行版特色
首先来了解一下什么是Linux的包管理工具,可以查看Linux的包管理工具

简单来说,Linux软件包管理工具是一组命令的集合,其作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。在GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和DPT为最常见的两类软件包管理工具,他们分别应用于基于 rpm 软件包的

版本前端后端包格式
Debian, Ubuntu(优班图)等dpkg-deb/apt-getDPT管理器deb
RedHat,SUSE等yumRPM管理器rpm

Linux 发行版本和基于deb软件包的 Linux 发行版本
各个发行版之间最大的不同通常就在于包管理器,所以想玩的话可以集中玩几个代表性的就行:

  • apt系,当然选最纯正的Debian
  • yum系,选最具代表性的CentOS
  • YaST,最主要的就是openSUSE
  • Pacman,当然是Manjaro、ArchLinux

本人仅接触过CentOS,其他的包管理工具不知道。下面介绍的系统为CentOS6和7版本,因此安装使用的下载安装命令也是yum
docker的默认安装路径在/var/lib/docker/
下图是docker在Linux中的文件路径及文件夹
在这里插入图片描述
其中image是镜像,containers是容器,overlay2是docker官方推荐使用的存储驱动,其他的暂时不知道

CentOS6.8安装

安装步骤如下:

  • yum install -y epel-release(-y表示不需要询问,使用默认同意的方式进行安装。epel【一跑】是安装docker前优先安装的一个类似仓库的依赖包)
  • yum install -y docker-io
  • 安装后的配置文件:/etc/sysconfig/docker

在这里插入图片描述

  • 启动docker后台服务:service docker start
  • docker version 验证是否安装成功

CentOS7.X安装

参考官网安装

  • yum install -y yum-utils(在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。)
  • yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo(设置存储库,安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的存储库。)
  • yum install docker-ce docker-ce-cli containerd.io (安装Docker,如果需要安装其他版本的Docker,请参考官网
  • systemctl start docker (启动Docker)
  • docker run hello-world (运行hello world验证是否成功)

安装完成后配置Docker为开机自启动 systemctl enable docker

Docker镜像加速

参考阿里云镜像加速
注意这里因为Docker版本的不同,配置文件也不同,有/etc/sysconfig/docker和/etc/docker/daemon.json两个,具体参考上方阿里云镜像加速。

  • ContOS6版本的Docker镜像加速配置,在/etc/sysconfig/docker文件中添加"DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=<从阿里云获取的专属加速连接>\""在这里插入图片描述

  • ContOS7版本的Docker镜像配置在/etc/docker/daemon.json(没有时新建该文件)中添加
    { "registry-mirrors": ["<your accelerate address>"] }

  • 重启Docker:service docker restart

  • 验证是否生效:ps -ef|grep docker,如果打印出来的Docker进程中显示了配置的镜像地址,则表示成功(另ps命令解释)

Docker运行原理

Docker运行原理

为什么Docker比虚拟机快

相比于虚拟机,Docker去掉了虚拟机的操作系统部分,虚拟机是在主机上新开一个虚拟机的时候会加载一个完整的操作系统内核,而Docker不需要,docker上云行的容器都是只与docker引擎交互,因此在加载和内存大小 方面都要 优于虚拟机。

Docker命令

帮助命令

  • docker info
  • docker version
  • docker --help(重点,学会使用help命令来查看docker操作命令)

镜像、容器命令

  • docker pull 拉取镜像
  • docker images 列出本地镜像列表
  • docker ps 本地容器列表
  • docker start 启动一个或多个停止的容器
  • docker stop 停止一个或多个容器
  • docker kill 强制停止一个容器,相当于结束该容器的运行进程?
  • docker run 运行一个新的容器

    docker run 命令option说明:
    --name 表示在运行这个容器的时候给起一个名字,如果不指定,则docker默认给生成一个随机名字,建议自己制定
    -d 表示后台运行容器,并返回容器id,也就是启动守护式容器,与下面两个命令-i -t 对比来看,使用了-i -t则表示进入这个启动的容器内进行操作,例如启动Tomcat命令docker run -it --rm -p 8888:8080 tomcat:9.0-it,使用此命令后将进入Tomcat的黑窗口
    -i 以交互模式运行容器,交互模式的意思就是要去操作这个容器,,容器启动成功后会返回一个命令窗口来供我们与该容器进行交互。如果这个容器是CentOs这样的操作系统,则会进入这个系统,这个系统就是这个容器,与登录虚拟机一样,默认root目录?
    -t 为容器分配一个伪输入终端,通常与-i一起使用
    -p -P 这两个命令都是指定端口,大写P表示随机端口,小写p表示以指定的方式映射端口

  • docker rm 移除一个或多个容器
  • docker rimi 移除一个或多个镜像
  • docker search 从远程仓库搜索镜像
  • 退出命令,下面两个退出指令的区别例如Tomcat,当我们用-it指令运行Tomcat后,会返回一个与Tomcat交互的命令行窗口,而exit就表示Tomcat 停止,并且退出当前交互窗口;ctrl+P+Q表示仅退出交互窗口,不停止Tomcat容器服务。
    • exit 表示容器停止退出
    • ctrl+P+Q 表示容器不停止退出
    • 退出之后重新连接命令窗口怎么连???????
  • docker logs -t -f 容器id

docker logs 命令参数说明 -t 表示time

  • docker top 查看容器内运行的进程
  • docker inspect 容器id
  • 进入正在运行的容器,并以命令行交互
    • docker exec -it 容器id bashShell
    • docker attach 容器id

    上面两个命令都可以实现,区别是attach命令只能进入容器并返回该容器id标识的命令行窗口,而exec命令后面可以追加一些操作,当有操作的时候是不需要进入容器,而是直接返回操作后的结果。总结一下就是exec比attach命令功能强大一些。

  • docker cp 容器id:/tmp/yum.log /root 从容器中拷贝文件到主机上。这里的命令意思就是从容器id指向的容器中,将其内tmp文件夹下的yum.log文件拷贝到主机的root目录下
  • 详情查看docker --help 命令

Docker镜像

是什么?

docker镜像就是联合文件系统(UnionFS)

自定义镜像

提交容器副本使之成为一个新的镜像 docker commit -m=‘提交的描述信息’ -a=‘作者’ 容器id 要创建的目标镜像名:[标签名] ,这个命令是将本地容器进行自定义后重新commit到本地仓库中,使之成为一个新的镜像。

Docker容器数据卷

是什么

docker容器数据卷可以让容器之间共享数据,也可以让容器与主机之间共享数据,当容器关闭或者退出后,保留容器内的数据。

命令添加容器卷

docker run -it -v /宿主机聚堆路径目录:/容器内目录  镜像名
  • 举例:docker run -it -v /myDataVolume:/dataVolumeContainer centos,该命令表示,在启动centos容器的时候,在容器内增加根目录下的DatavolumeContainer文件夹,在主机增加根目录下的myDataVolume文件夹,这两个互相对应的文件夹就是给该容器添加的容器卷
    输入命令docker inspect后查看json串中Volumes项即可发现该容器卷文件夹对应,HostConfig项中的binds也标明了两个文件夹对应,VolumesRM表示读写。
  • 数据共享
    当我们在主机内进入MyDataVolume文件夹后,输入命令touch host.txt在该文件夹内新建一个文件后,切换至容器内(docker exec -it centos /bin/bash)进入DataVolumeContainer文件夹后发现该文件夹内也存在host.txt文件,然后我们使用命令vi或vim更改host.txt文件后再touch container.txt新建一个文件,退出容器后进入myDataVolume文件夹后发现host.txt文件内容已经被容器修改,并且增加了一个名叫container.txt文件。由此可以说明,这俩文件夹相当于同一个文件夹。
  • 容器停止退出后,主机修改也同步
    当我们使用命令exit退出容器后(exit表示退出并关闭容器),在主机端使用命令cat host.txt修改文件内容,并touch host02.txt新建,当我们再次使用命令docker start centos启动容器,使用命令docker attach 容器id打开centos的命令窗口,进入datavolumecontainer文件夹后发现,host.txt文件的内容已经被主机修改过,并且也有新建的host02.txt.
  • 增加读写权限的容器卷
    docker run -it -v /宿主机聚堆路径目录:/容器内目录:ro 镜像名
    ro表示readonly,只读。当添加该命令时表示,数据卷文件夹中的内容只能在主机端增加或修改,而容器内虽然可以同步主机添加的数据,但是只有读权限,不能修改也不能新建。
    输入命令docker inspect 容器id查看VolumesRM项发现值为false,表示不能写。

DockerFile添加

是什么?

DockerFIle相当于是对Doker image 的描述。如下图,使用Tomcat举例,在docker.hub上搜索Tomcat镜像,下拉到下图在这里插入图片描述
翻译过来就是支持标签和相应的dockerfile连接,当我们点击某个版本的Tomcat后,跳转到git.hub上的dockerfile,如下图(展示部分图片)
在这里插入图片描述

使用DockerFIle的方式添加数据卷

出于可移植和分享的考虑,使用***-v 主机目录:容器目录*** 这种方式不能够直接在Dockerfile中实现,由于宿主机目录是依赖特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录。
添加步骤:

  • 构建dockerfile
    vim 命令新建dockerfile文件,输入内容如下(例子):
# volume test
FROM centos
VOLUME [“/dataVolumeContainer1”,“/dataVolumeContainer2”]
CMD echo “finished,--------success1”
CMD /bin/bash

这个dockerfile文件的意思就是,使用centos这个镜像,设置容器卷目录为“/dataVolumeContainer1”,“/dataVolumeContainer2”这两个容器内部的文件夹,打印Finnish这句话,表示程序运行成功,最后这句表示打开交互窗口

  • build
    docker build -f dockerfile所在目录 -t 标签/新镜像的名字 .(最后这个点表示在当前目录下,这一段不是很清楚)
    执行该命令根据dockerfile文件描述构建一个新的镜像,
  • docker images 查看当前镜像是否有新生成的镜像
  • 如果有,则运行run命令启动容器
  • 最后运行docker inspect 容器id 命令查看VOLUME 映射,在这个步骤当中我们没有指定主机的容器卷文件夹路径,因此,docker会默认给我们生成一个路径,具体映射在inspect命令打印出来的Volumes项中在这里插入图片描述
容器间共享容器卷

当我们需要启动多个例如Tomcat容器时,这些容器都是用某一个

docker run -it --name dc02 --volumes-from dc01 镜像id或名字这个命令的意思就是使用镜像id指向的镜像启动第二个容器,名字叫dc02,并且该容器的容器卷来此dc01。如果我们在不指定读写权限的情况下在dc02容器中给容器卷添加或修改,那么不论是dc01还是在主机,都能看见dc02的修改。以此达到共享的目的。

总结:容器之间配置信息的传递,在整个数据卷的生命周期一直持续,也就是说我们不论是dc01还是02、03、04…任何一个容器在修改了容器卷后都是所有容器生效,并且无论其中任何一个容器删除或者停止都不会影响其他容器访问容器卷,直到没有容器使用容器卷为止。

=================================================
Docker如何将软件打包成一个镜像并发布出去?

### 回答1: 要下载Docker笔记,首先需要了解Docker是什么以及其使用场景。 Docker是一种开源的容器化平台,可以帮助用户打包、部署和运行应用程序。通过使用容器化技术,用户无需担心运行环境的差异,可以将应用程序和其依赖项打包到一个可移植的容器中,随时在不同的环境中运行。 要下载Docker笔记,可以按照以下几个步骤进行操作: 1. 首先,需要在计算机上安装Docker。可以从Docker官方网站(https://www.docker.com/)上下载适合自己操作系统的Docker安装包,并按照安装指南进行安装。 2. 安装完成后,需要启动Docker服务。根据操作系统的不同,可以在启动菜单或终端中找到Docker应用程序,并点击打开。在Docker控制台中,可以查看、管理容器以及进行其他操作。 3. 接下来,需要搜索并下载Docker笔记的镜像。可以使用Docker Hub(https://hub.docker.com/)这个官方的镜像仓库,搜索关键词以找到合适的笔记镜像。在搜索结果中,会显示镜像的名称、描述、标签等信息,选择一个合适的镜像。 4. 找到想要下载的笔记镜像后,可以使用Docker命令行工具或Docker控制台中的图形界面来下载镜像。通过输入命令`docker pull 镜像名称:标签`,即可下载对应的笔记镜像到本地。 5. 下载完成后,可以使用`docker images`命令在本地查看已下载的镜像列表。根据下载的笔记镜像的名称和标签,可以使用`docker run`命令来创建并启动一个容器,从而运行笔记。 通过以上步骤,就可以成功下载Docker笔记并在本地运行。希望这些信息对您有帮助! ### 回答2: 要下载Docker笔记,首先需要知道从哪里获取这些笔记Docker有一个官方文档网站,其中包含了大量关于Docker的技术文档、教程和示例以及各种使用场景的说明。用户可以访问Docker官方网站,在文档部分进行浏览和搜索,找到所需的笔记。 在Docker官方文档网站上,用户可以按照主题、标签或关键字进行检索,以找到相关的笔记。网站还提供了各种文件格式的下载选项,包括PDF、EPUB和HTML版本,用户可以根据自己的使用习惯选择适合的格式进行下载。 此外,还有一些第三方资源库和网站提供了Docker相关的笔记下载。例如GitHub上有很多开源项目,其中包含了Docker的使用笔记和示例代码。用户可以通过在GitHub上搜索关键字"Docker笔记"或"Docker notes"来找到相关的项目,然后根据项目的说明进行下载。 总之,下载Docker笔记可以通过Docker官方文档网站或第三方资源库进行。用户可以根据自己的需求和偏好选择下载适合自己的格式和来源。 ### 回答3: 要下载 Docker 笔记,首先需要确保已经安装了 Docker 客户端工具。然后按照以下步骤进行下载: 1. 打开终端或命令提示符,输入以下命令来下载 Docker 笔记Docker 镜像: ``` docker pull [镜像名称] ``` 这里的 `[镜像名称]` 是 Docker Hub 上提供的 Docker 镜像名称,可以根据需要搜索并选择合适的镜像。 2. 等待镜像下载完成后,使用以下命令来创建和运行一个 Docker 容器,并将笔记下载到本地: ``` docker run -it --name [容器名称] [镜像名称] [下载命令] ``` 这里的 `[容器名称]` 是用于标识容器的名称,`[下载命令]` 是具体的下载命令,可以根据下载方式的不同进行相应的设置。 3. 等待下载完成后,可以使用以下命令来停止并删除容器: ``` docker stop [容器名称] docker rm [容器名称] ``` 这里的 `[容器名称]` 是之前创建容器时指定的名称。 通过以上步骤,你就可以成功下载 Docker 笔记到本地了。记得根据实际需求选择适合的 Docker 镜像和下载命令,同时也可以通过 Docker Hub 上的文档和社区提供的资源,了解更多有关 Docker 的使用方法和技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值