Docker 详细文档

article/2025/3/11 6:29:11

Docker 文档

目录       

⒈ 简介... 2

1.1什么是容器?... 2

1.2 什么是Docker?... 3

1.3 Doceker的目标... 3

1.4 Docker 的使用场景... 3

⒉ Docker 的基本组成... 3

2.1 Docker 客户端/守护进程... 3

2.2 Docker 镜像... 4

2.3 Doceker Container容器... 4

2.4 Docker Registry 仓库... 4

⒊ Docker容器相关技术简介... 5

3.1 Namespaces 命名空间... 5

3.2 Control groups 控制组... 5

3.3 Docker容器的能力... 5

⒉安装和部署... 6

2.1 在red-hat安装Docker. 6

2.2 在windows安装Docker. 7

4.Docker容器... 8

4.1容器的基本操作... 8

3.2守护式容器... 9

3.3部署静态网站... 9

5.Docker镜像与仓库... 11

5.1 查看和删除镜像... 11

5.2 获取和推送镜像... 11

5.3 构建镜像... 12

6.Docker客户端和守护进程... 14

6.1 docker的c/s 模式(客户端支持远程访问sercer). 14

6.2守护进程的配置和操作... 14

6.3 docker的远程访问... 16

7.      dockerfile. 17

7.1 dockerfile指令... 17

7.2  dockerfile构建镜像过程... 18

8.      网络连接... 18

8.1docker容器的网络基础... 18

8.2 容器的互联... 19

8.3  docker容器与外部网络的链接... 21

9.docker容器的数据管理... 21

9.1容器的数据卷... 22

9.2 卷容器... 23

9.3 数据卷的备份和还原... 23

10.跨主机链接... 23

10.1 网桥实现跨主机链接... 24

10.2 使用open switch实现跨主机链接... 24

10.3 使用weave实现跨主机链接... 26

 

 

⒈ 简介

1.1什么是容器?

一种虚拟化的方案

操作系统级别的虚拟化

只能运行相同或相似内核的操作系统

依赖于Linux内核特性:Namespace 和Cgrops(control group)

1.2 什么是Docker?

将应用程序自动部署到容器

Go语言开源引擎

2013年初发布

基于Apache 2.0 开源授权协议发行

1.3 Doceker的目标

提供简单轻量的建模方式

职责的逻辑分离

快速高效的开发生命周期

鼓励使用面向服务的架构

1.4 Docker 的使用场景

使用Docker容器开发、测试、部署服务

创建隔离的运行环境

搭建测试环境

构建多用户的平台即服务(paas)基础设施

提供软件即服务(saas)应用程序

高性能、超大规模的宿主机部署

⒉ Docker 的基本组成

2.1 Docker 客户端/守护进程

C/S 架构

本地/远程

 

2.2 Docker 镜像

容器的基石 

层叠的只读文件系统

联合加载

 

2.3 Doceker Container容器

通过镜像启动

启动和执行阶段

写时复制(copy on write)

 

2.4 Docker Registry 仓库

公有

私有

Docker Hub

 

 

⒊ Docker容器相关技术简介

3.1 Namespaces 命名空间
 

编程语言

封装———代码隔离

操作系统

  系统资源的隔离

  进程、网络、文件系统、资源…….

3.2 Control groups 控制组

用来资源分配

来源于google

提供的功能

       资源限制

       优先级设定

       资源计量

       资源控制

3.3 Docker容器的能力

文件系统隔离:每个容器都有自己的root文件系统

进程隔离:每个容器都运行在自己的进程环境中

网络隔离:容器间的虚拟网络接口和IP地址都是分开的

资源隔离和分组:使用cgroups将cpu和内存之类的资源独立分配给每个docker容器

 

 

⒉安装和部署

http://www.docker.org.cn/     参考文档 Docker中文社区

https://docs.docker.com/      下载

2.1 在red-hat安装Docker

Docker目前可以在红帽企业版7(Red Hat Enterprise Linux 7)版本下面安装

依赖性检查

Docker需要一个64位系统的红帽系统,内核的版本必须大于3.10。可以用下面的命令来检查是否满足docker的要求。

$ uname -r 3.10.0-229.el7.x86_64 

如果上述的依赖满足的话,还是推荐您全面地更新红帽系统,以保证内核相应的bug都得到修复。

 

目前红帽RHEL系统下面安装docker可以有两种方式:一种是使用curl获得docker的安装脚本进行安装,还有一种是使用yum包管理器来安装docker。

一、使用安装脚本安装。

备注:你可以按照同样的步骤在CentOS系统下面安装docker。

  1. 使用一个有sudo权限的帐号登录红帽系统。
  2. 更新现有的yum包。
$ sudo yum update 
  1. 执行docker安装脚本。
$ curl -sSL https://get.docker.com/ | sh 
  1. 启动docker服务。
$ sudo service docker start
  1. 确认docker安装成功。
  2. $ sudo docker run hello-world

二、使用yum包安装

1. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.yum makecache fast

3.yum -y install docker-ce

 

 

  1. 启动docker服务。
service docker start
  1. 确认docker是否安装成功。
docker run hello-world

 2.2 在windows安装Docker

方法一、下载Docker for windows (需要运行Microsoft Hyper-V);Docker Community Edition(社区版)和Docker Enterprise Edition(企业版)Docker CE仅支持win10,而Docker EE仅支持WIN SERVER 2016.

方法二、下载Docker Toolbox(需要运行Oracle Virtual Box);Docker 给旧版本的WIN系统提供的是Docker Toolbox下载

Docker ToolBox共包含5个docker工具:

  • Docker Machine:包含了docker-machine命令。
  • 运行Docker命令所需要的引擎。
  • Kitematic,Docker GUI界面。
  • 事先为docker 命令行环境配置好的shell。
  • Oracle公司的VM VirtualBox包。

因为Docker守候进程依赖于linux内核,所以无法直接在windows环境中直接运行Docker。解决方案就是使用docker-machine命令创建一个Docker虚拟机并附加到它上面。这个Docker虚拟机来为你的windows系统提供Docker服务。

这个Docker虚拟机专门为windows运行环境优化过,轻量级,完全在内存中运行,很小,下载不超过24M,5秒那可以启动。

安装完成后桌面会生成三个快捷方式,分别为

(1) Docker Quickstart Terminal: 提供Docker的命令行操

(2) Oracle VM VirtualBox: 虚拟机软件

(3) Kitematic (Alpha):图形化的docker

 

 

4.Docker容器

4.1容器的基本操作

 启动容器:

$ docker run IMAGE [COMMAND][ARG…]

     RUN 在新容器在中执行命令

启动交互式容器:

 $ docker run –I –t IMAGE /bin/bash

       -I  --interactive=ture  |   false   默认是false         -------告诉守护进程始终打开标准输入 交互式

       -t   --tty=ture | false  默认是false                          -------打开命令终端

查看容器:

$ docker ps [-a][-l]

$ docker inspect  (id/name)  查看容器详细信息

$ docker run --name自定义 –I – t ubutun /bin/bash    ----  自定义容器名称

$ docker start [-i]  容器名  -----重新启动

$ docker rm [容器名]   -----删除一个停止的容器

3.2守护式容器

$ docker run -i –t  IMAGE /bin/bash   退出时用 ctrl + P   ctrl +Q;

$ docker attach  (id/name)     重新进入退出时的容器

启动守护式容器

$ docker run –d 镜像名 [COMMAND][ARG…]

$ docker logs [-f][-t][-tail] 容器名

        -f    --follows=ture | false  默认为false   ---跟踪日志变化并返回结果

        -t    --timestamps=true | false   ---加上时间戳

      --tail = “all”    ---返回行数

在运行中的容器内启动新的进程

$ docker exex [-d][-it[-t]

$docker stop  容器名  

$ docker kill 容器名

3.3部署静态网站

设置容器的端口映射

run [-P]  [-p]

NGINX 部署流程

docker run --name web1 -p 8080 -i -t centos /bin/bash  创建docker

正常部署并启动tomcat

Ctrl p   ctrl q  返回宿主机

[root@QiYong-APP-T01 ~]# docker port web1

8080/tcp -> 0.0.0.0:32769

显示宿主机的32769端口映射docker的8080端口

访问宿主机的32769端口正常显示页面

Docker top web1  显示docker的进程

Docker exec web1 nginx 启动容器相关服务

5.Docker镜像与仓库

5.1 查看和删除镜像

存储位置:/var/lib/docker

Docker info  ----查看信息

列出镜像

 

 

 

 

删除镜像

 

 

5.2 获取和推送镜像

查找镜像

获取和推送镜像——拉取镜像

                                                                                      

 

使用国内仓库镜像服务器

登录https://www.daocloud.io注册

在dashboard中申请链接xxx

修改启动配置文件 Vi /etc/default/docker 

添加DOCKER_OPTS=”.XXX”

重启

上传镜像到dockerhup中

Docker push image

5.3 构建镜像

手动构建镜像

实例:
1.运行一个docker容器并做修改

docker run -i -t --name test centos /bin/bash   ---运行了一个test的容器

安装一个nginx  然后退出

 [root@QiYong-APP-T01 ~]# docker ps –l      列出docker信息

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

72a9de314e75        centos              "/bin/bash"         2 minutes ago       Up 2 minutes                            test

2.将容器转化为镜像作者齐勇镜像名image_test

docker commit -a  qiyong  test image_test

[root@QiYong-APP-T01 ~]# docker images     列出镜像

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

image_test          latest              9cf7917b729d        15 seconds ago      298MB 

使用Dockerfile构建镜像

  1. 创建doclerfile文件
  2. 使用docker build 命令

创建一个目录创建dokerfile文件并将以上内容放入,使用build构建镜像

6.Docker客户端和守护进程

6.1 docker的c/s 模式(客户端支持远程访问sercer)

Remote API

链接方式

6.2守护进程的配置和操作

启动关闭重启守护进程

systemctl [commod] docker   start stop  restart

docker –d  --以守护方式运行

   

以上选项在配置文件中配置

6.3 docker的远程访问

修改服务端启动配置文件

修改客户端

  1. dockerfile

7.1 dockerfile指令

指令格式(两部分:注释 指令)

四种指令

    FROM

 

 

   MAINTAINER<NAME>--指定镜像的作者信息,包含镜像的所有者和联系信息

   RUN    ----指定镜像中运行的命令

   RUN<COMMAND>  (shell模式)    RUN [“excutable”,”param1”,”param2”] (exec模式)

   EXPOSE  ----指定运行改镜像的容器使用的端口

其他指令

   CMD  <COMMAND> --- RUN类似 区别是容器运行过程中执行命令

   ENTRYPOINT <COMMAND> --CMD相像,区别是不会被run命令替换

ADD<src>   ---将文件和目录复制到镜像中  包含了tar的解压功能

COPY <src> ---将文件和目录复制到镜像中

VOLUME [“/DATA”]

WORKDIR /PATH/TO/WORKDIR   ----指定工作目录 默认使用绝对路径

ENV <key><value>   --设置环境变量

USER daemon  ----指定

ONBUILD   [intruc] 创建触发器

7.2  dockerfile构建镜像过程

1.从基础镜像运行一个容器

2.执行一条指令,对容器进行修改

3.执行类似docker commit的操作,提交一个新的镜像层

4.再基于刚提交的镜像运行一个新容器

5.执行dockerfile的下一条指令,直至所有指令执行完毕

Docker history <images>  查看镜像构建过程

Dockerfile镜像缓存,再次构建更高效

  1. 网络连接

8.1docker容器的网络基础

 

 

 

 

 

 

Brctl show   --显示网桥信息

8.2 容器的互联

                                                                                       

 

 

 

1)允许容器互联

默认(-icc=ture)情况下同一宿主机之间的容器没有网络限制,都是通过虚拟网桥进行链接的

容器在重启后ip地址会发生改变,这样我们就无法链接到指定的服务器了,这是我们不希望的,所以docker给我们提供了下面的选项:为容器间创建链接和别名,设置link选项后容器在重启时,系统会自动修改ip地址和别名的映射 具体可以 /etc/hosts  实验

2)拒绝容器的互联

-icc=false

Vi /etc/default/docker

添加:DOCKER_OPTS=” –icc=false”

3)允许特定的容器间链接

1.Vi /etc/default/docker

添加:DOCKER_OPTS=” --icc=false  --iptables=true”

Webtest为别名

2.iptables –F  清空配置

3.重启docker   docker  restart

4.重启容器

5.进入容器查看 iptables –L

Docker链变成了第一位,而且设置link的两个容器之间是通的规则

 

8.3  docker容器与外部网络的链接

Ip_forward   linux中的变量:决定了系统是否会转发流量  默认值 ture

查看命令 :systectl  net4.conf.all.forwarding

Iptables(包过滤)

主要

Iptables  -I DOCKER  -s 10.3.3.3 –d 10.3.3.2 –p TCP  --dport 80 –j DROP    (阻止10.3.3.3  访问10.3.3.2)

 

9.docker容器的数据管理

 

9.1容器的数据卷

 

不能指定本地映射的路径

9.2 卷容器

--volumes-from  指定数据卷容器

Docker  run –it  --name dvt5  --volumes-from  dvt4  ubutun /bin/bash

 

9.3 数据卷的备份和还原

 10.跨主机链接

 

10.1 网桥实现跨主机链接

 

10.2 使用open switch实现跨主机链接

10.3 使用weave实现跨主机链接

Chmod +x /usr/bin/weave

Weace launch  启动

启动命令时 会在主机上创建一个weave的docker容器

Weave launch 192.168.59.103  分配一个ip(第二台也传入这个ip

用weave命令创建一个容器

C2=$(Weave  run  192.168.1.2/24  -it  centos /bin/bash)

Echo $c2   返回docker的id

Docker  attrch  $c2   进入容器

 

第二台一致的动作

 

 


http://chatgpt.dhexx.cn/article/aBHDCewX.shtml

相关文章

我的世界数据包制作(一)

我的世界数据包教程(一) 本人一直是minecraft粉丝&#xff0c;最近学习数据包制作&#xff0c;看网络上的中文教程挺少的&#xff0c;决定在学习的同时自己出一个专栏。OK&#xff0c;让我们直接进入专题&#xff01; 一、数据包是什么&#xff1f; 数据包是在java版1.13时添加…

饥荒联机版Mod开发——制作简单的物品(三)

饥荒联机版Mod开发——制作简单的物品&#xff08;三&#xff09; 前言建立文件夹及mod图标把文件夹添加到VS Codemod代码的入口——modmain探寻官方代码看懂官方代码创建动画、贴图动画修改动画相关代码 物品栏贴图修改贴图相关代码 添加物品名字&#xff0c;检查对话传送门 前…

我的世界mod服务器详细搭建

我的世界服务器搭建以及mod安装 服务器准备&#xff08;推荐使用Linux系统&#xff09;阿里云服务器购买xshell、xftp连接服务器1.安装配置java环境&#xff0c;java82.安装虚拟终端screen3.获取mc服务器jar包4.首次启动mc服务器端5.同意最终用户许可协议 EULA6.根据需要修改se…

我的世界在自建的服务器中装mod,《我的世界》中国版服务器MOD添加教程

我的世界中国版怎么加MOD 中国版功能组件怎么安装 《我的世界中国版》加MOD方法详解 1、首先右键你的MC中国版启动器找到打开文件夹位置&#xff0c;(如果右键中没有打开文件夹位置的话可以点击属性-快捷方式-打开文件夹所在位置)。 2、点击进入MCLauncherDownloadGame你需要添…

我的世界javamod怎么装_我的世界MOD安装方法图文教程_我的世界MOD怎么安装_牛游戏网...

【导读】很多玩家不知道我的世界MOD怎么安装&#xff0c;怎么用&#xff0c;今天小编就为你讲解一下我的世界MOD怎么用&#xff1f;一起来了解一下吧&#xff01; 第一部分-安装JAVA7 下载完成后&#xff0c;打开&#xff1a; 安装(别更改目标文件夹) 安装完成 第二部分-选择游…

我的世界制作服务器rj,我的世界星系mod常用工具制作方法

我的世界星系mod中有许多有用的工具&#xff0c;下面小编为大家带来各种工具的详细介绍。 一、常用工具 全星系mod中**的装备系列&#xff0c;耐久度与戴斯系列装备相同 合成&#xff1a;致密钛板木棒 星系mod中装备等级第二高的系列 合成&#xff1a;致密戴斯板戴斯棒 戴斯稿子…

我的世界1.13 mod制作——Item材质及翻译(四)

1.13 游戏改了好多内容&#xff0c;就拿item来说&#xff0c;没有那么多花里胡哨冗余的代码了。 单单是给item上材质&#xff0c;研究老长时间&#xff0c;看了官方的教程&#xff0c;非官方的教程&#xff08;国内的教程&#xff0c;国外的墙的太厉害&#xff0c;英语底子差也…

我的世界自制mod{0}

目录 路径如上 games/com.mojang/rescource_packs 创建一个叫做manifest.json的文件 里面创建叫做functions sounds shaders textures等等的一些名称 打开我的世界 面相国际基岩版 网易版不知道可不可以 我用的是手机编写的mod 其实就是懒 我认为手机写更加简便 用的是m…

【MineCraft】-- Mod制作物品与方块

基于上一文章继续&#xff0c; 下面完成以下功能&#xff1a;制作一个方块和物品&#xff0c;物品有描述信息。 快速指南 &#xff08;第一次看请跳过这步&#xff09; 如何制作物品与方块 1、/resources/assets/xxx/lang/... 添加物品或方块id 例&#xff1a; item.dem…

我的世界自制mod{1}

上期我们制作了一个什么也没有的mod上期说错了文件夹里没有functions文件 做一个包的图标 首先打开sounds for idol{你们自己包的名字的文件夹就是放manifest.json的文件夹} 然后像我这样在mt管理器找到一张图片 图片途径一般是DCIM/screenshots里面的 然后把他转移到刚刚说…

【MineCraft】-- 学习Mod制作合成配方

下面完成合成配方的制作&#xff1b; 合成分为有序合成和无序合成&#xff1b; 无序合成&#xff1a;无摆放位置要求 有序合成&#xff1a;需要正确的摆放位置 一、在recipes下放置json json名字建议与产物相关&#xff0c;但非必须。 首先找到recipes文件 recipes文件下建…

我的世界mod服务器怎么制作,我的世界国服MOD添加教程 我的世界国服MOD添加方法...

关于MOD&#xff1a; 首先我们要找到游戏的安装文件夹。 路径为&#xff1a; MCLDDownload---Game---你的账号---NetGame---你所要添加mod的服务器---.minecraft---mods(就是这个文件夹)将你需要安装的mod复制到mods文件夹即可。 如果找不到位置&#xff0c;也可以先进入游戏&a…

我的世界1.13 mod制作——简单的方块(五)

(一) 注册一个方块 新建一个类&#xff0c;继承Block(本来可以不用新建&#xff0c;可以直接实例化一个Block&#xff0c;为方便管理还是新建一个) package com.qiao.mymod.block;import net.minecraft.block.Block;public class MyBlock extends Block {public MyBlock(Prop…

java我的世界mod制作_我的世界:MOD的编写有多复杂,估计你也学不会

原标题&#xff1a;我的世界&#xff1a;MOD的编写有多复杂&#xff0c;估计你也学不会 MOD应该有不少人使用&#xff0c;但是你们知道MOD的去做有多困难吗&#xff1f;你们知道该怎么做吗&#xff1f;如何才能做一个简单的游戏模组呢&#xff1f;其实制作模组是非常简单的&…

我的世界1.13 mod制作——制作一个Item(二)

&#xff08;一&#xff09; 修改mod信息 forge 默认提供了一个mod配置&#xff0c;ExampleMod.java&#xff0c;接下来修改mod信息。 首先修改的是包的结构&#xff0c;去掉默认的包结构&#xff0c;改成符合mod信息的结构&#xff0c;我这里修改成了com.qiao.mymod. 修改类名…

java版我的世界如何做mod_《我的世界手机版》怎么制作mod制作JS教程图文攻略

&#xfeff;我的世界手机版中&#xff0c;用惯其他人分享的JS之后觉得不满意&#xff0c;自己想要创作专属的JS&#xff1f;今天当乐网小编给大家带来的是我的世界手机版的JS基础教程&#xff0c;各位小伙伴学习一下然后自己制作JS吧&#xff1a; 教程作者&#xff1a;s某某世…

【MineCraft】-- 学习我的世界Mod制作引雷附魔书与事件

基于前面搭建的环境继续。 下面完成一个附魔书制作&#xff0c;并且附魔武器后有雷击效果。 一、监听事件两种情况 成员函数 对象构造时AddToEventBus 如&#xff1a; 函数开头上一行加SubscribeEvent 如&#xff1a; 静态函数 类开头Mod.EventBusSubscriber(括号里可写…

【MC 网易-我的世界-mod开发基础笔记】 --- 创建第一个空白Mod

目录 创建Mod文件夹构建Mod的基本目录结构构建行为包基本结构构建脚本文件夹基本结构构建 mod 启动入口脚本 构建资源包基本结构构建国际化文件基本结构自定义物品配置中文名称自定义方块配置中文名称自定义实体配置中文名 构建贴图资源文件夹的基本结构 创建Mod文件夹 在电脑…

我的世界1.13 mod制作——环境搭建(一)

说明&#xff1a;已经玩过好多年《我的世界》&#xff0c;大概从13年开始吧&#xff0c;虽然不算早&#xff0c;但是也不是很晚。因为高度自由、丰富的mod、精美的材质光影&#xff0c;简单的方块游戏风靡世界。最近心血来潮想学学怎么做mod&#xff0c;但是直接从1.13.2直接起…

我的世界MOD制作(2)|| 你的第一个MOD

正文&#xff1a;I. 开发环境配置 我们需要一个带mixin的forge开发环境&#xff0c;这一步相当折磨人&#xff0c;网络不好的话半天时间都得砸这上面&#xff0c;但是不要灰心&#xff0c;过了这个坎接下来基本是顺风顺水。 1. 下载资源 & 修改build.gradle 首先去forge官网…