最后更新:2022-08-02 03:52:57 手机定位技术交流文章
多克是一个开放源代码应用程序容器引擎,基于Go语言的开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后在任何流行的Linux机器上发布它,也可以实现虚拟化。这个容器完全是砂箱的机构,它们之间没有接口(如iPhone应用程序),更重要的是,容器性能成本非常低。多克是一个容器技术.解决软件跨环境迁移问题。
多克应用程序场景
使用Docker可以实现开发人员的开发环境、测试人员的测试环境和执行人员的生产环境的一致性。
Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。
传统虚拟机
传统的虚拟机技术是基于在主操作系统上安装的虚拟机管理系统(如VirtualBox和VMWare),创建虚拟机(虚拟化各种硬件),从操作系统上安装到虚拟机,从操作系统中安装和部署各种应用程序。
Docker
Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

名称
说明
Docker 镜像(Images)
Docker 镜像是用于创建 Docker 容器的模板。 镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。
Docker 容器(Container)
容器是一个或多个独立运行的应用程序。 例如镜像等于类和容器等于类
Docker 客户端(Client)
Docker客户端使用Docker API来通过命令行或其他工具与Docker的ដេមិន进程进行通信。
Docker 主机(Host)
一个物理或虚拟机器用于执行Docker 代emon进程和容器。
多克监护程序
Docker服务器端进程,支持运行Docker容器和管理镜子。
Docker Store DockerHub (Registry)
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub提供了庞大的镜像集合供使用。用户也可以将自己本地的镜像推送到Docker仓库供其他人下载。
多克可以在Mac、Windows、 CentOS、DEBIAN、UBUUNTU和其他操作系统上运行,提供社区和企业版本,这个课程是基于 CentOS安装多克。CentOS6不适合多克支持,推荐使用 CentOS7.
以下是 CentOS 7中安装Docker的步骤:
ustc是旧式Linux镜子服务提供商,仍远于ubuntu5。 版本04仍在使用。 ustc的docker镜子加速器的速度非常高
来吧。 ustc多cker镜的优点之一是它是一个没有注册的真正公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
编辑文件/etc/docker/daemon.json
将下列内容添加到文件中
镜子:多克镜子是通过重叠文件系统(一种文件存储格式)创建的;它们是多克器的核心概念。可以假设镜子是一些运行环境或软件的包,用户可以从多克仓库下载基本镜子到本地,例如,开发者可以从多克仓库下载一个仅包含 Centos7系统的基本镜子,然后在镜子中安装jdk,mysql,Tomcat和自开发的应用程序,最后,这些环境被构造成一个新的镜子。开发者将新的镜子提交给测试者进行测试,测试者只是在测试环境中运行镜子,这确保开发者的环境和测试者的环境是完全一致的。
Docker为镜子操作提供了下列选项:




docker images -q:删除所有镜像容器也是多克的核心概念,容器是通过镜子操作生成的实例运行的。 镜子与容器之间的关系类似于Java中的类和对象之间的关系。
Docker提供下列关于容器的操作信息:
查看当前运行的容器,使用命令: docker ps
查看所有容器使用命令: docker ps -a

根据现有的镜子创建和启动容器。使用命令:dockerrun创建和启动容器
参数说明:
-i:表示运行容器
-t:指示容器在启动后将输入命令行。 在添加这两个参数后,容器创建者可以登录,即指定一个伪端子。
–name:创建的容器的名称。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:如果在运行后添加-d参数,在背景中运行时将创建一个保护容器(这样容器在创建后不会自动登录;如果仅添加-i-t参数,它会在创建后自动输入容器)。
-p:表示端口映射,前者是主端口,后者是容器内映射端口。 -p可以用于映射多个端口
以交互式方式创建并启动容器,启动完成后,直接进入当前容器。使用exit命令退出容器。需要注意的是以此种方式启动容器,如果退出容器,则容器会进入停止状态。

创建一个守护式容器;如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):


下列命令可以用于从Linux主机复制文件到容器:

使用命令从容器中复制文件到Linux主机:

注:容器也可以在停止状态中完成文件的副本
可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
创建容器时添加-v参数,后边为宿主机目录:容器目录,例如: docker run -di -v /usr/local/test:/usr/local/test –
name=mycentos3 centos:7

注:如果您共享一个多层次目录,可能有迹象表明权力不足.这是因为 CentOS7 Selenux的安全模块阻塞了权限,您需要添加 -- privileged=true 参数来解决安装目录没有权限的问题。
可以通过以下命令查看容器运行的各种数据 docker inspect 容器名称(容器ID)

在容器间的本地网络中,Linux主机可以与容器进行通信;然而,外部物理机器笔记本不能直接与容器进行通信,如果有必要,则需要通过主机端口进行代理。
删除指定的容器: docker rm容器名称(容器ID) 删除所有容器: docker rmdocker ps -a -q

如果容器处于运行状态,删除失败,需要停止才能删除

·docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql·
-p代表端口映射,格式为主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的远程登陆密码(如果是在容器中使用root登录的话,那么其密码为空)
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-
57-centos7


使用Navicat在windows中进行远程登录在docker容器中的mysql。

测试访问主机的端口号是900 Tomcat。地址: http://hostip:900,您可以在/user/local/tomcat/webapps下部署应用程序,然后再访问它们。
重新进入主机: http://hostIP/

可以使用redis图形界面客户端工具连接redis,端口也是6379。
编译项目是多克官方的开放源代码项目,负责实现多克容器集群的快速编译.这是一个定义和运行多个容器的多cker应用程序工具。使用成分,您可以通过YMAL文件配置自己的服务,然后通过一个命令,你能使用配置文件
创建和运行所有服务。
Docker-Compose将它管理的容器分成三个层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录中的所有文件( docker-compose.yml,(例如扩展文件或环境变量文件)以形成项目,如果没有指定特殊的项目名称,则它是当前目录名称。一个项目可以包括多个服务,每个服务定义了容器运行的镜子,参数,依赖。一个服务可以包含多个容器实例。
Docker-Compose的工程配置文件默认为docker-compose.yml,是一个自定义的配置文件,包含环境变量 COMPOSE_FILE或-f参数,定义多个与依赖相关的服务和每个服务运行的容器。
使用 Dockerfile模板文件,它允许用户轻松定义一个单独的应用程序容器。在工作中,通常情况下,多个容器需要一起工作才能完成任务。例如,部署一个网站项目,除了Web服务容器外,经常需要添加后端数据库服务容器,甚至包括负荷平衡容器等。
Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我们以编译好的二进制包方式安装在Linux系统中。

在使用编译器之前,您可以执行docker-compose --help|-h查看编写程序的基本命令使用.
也可以通过执行docker-compose [COMMAND] --help或者docker-compose --help [COMMAND]查看特定的使用格式。
可以知道Compose命令的基本的使用格式为:
命令选项如下:
Docker Compose常见的命令列表如下:
命令
说明
build
在项目中构建服务容器
help
获得一个命令的帮助
kill
迫使服务容器停止发送SIGKILL信号
config
验证和查看组成文件配置
create
创建服务的容器。 简单地创建,并使用 startstartcompose
down
停止和删除容器、网络、镜像和数据量
exec
在运行的容器中执行命令
logs
查看服务容器的输出
pause
暂停一个服务容器
port
将公共码头映射到容器码头上
ps
项目中的所有当前容器列表
pull
拉取服务依赖的镜像
push
推送服务镜像
restart
重启项目中的服务
rm
删除所有(停用)服务容器
run
在指定服务上执行命令
scale
设置运行指定服务的容器数目
start
启动现有服务容器
stop
停止已经运行的容器,但不删除它
top
显示运行的进程
unpause
暂停服务恢复
up
自动完成一些列操作,包括创建镜子、创建服务、启动服务和关闭相关服务容器
version
打印版本信息
格式为:
up命令十分强大,它尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一些列操作。链接的服务都将会被自动启动,除非已经处于运行状态。
在大多数情况下,我们可以通过这个命令直接启动项目。
选项包括:
格式为:
项目中的所有当前容器列表。
选项包括:
格式为:
停止已经运行的容器,但不删除它。
选项包括:
格式为:
停止和删除容器、网络、卷、镜像,这些内容是通过docker-compose up命令创建的. 默认值删除 容器 网络,可以通过指定 rmi 、volumes参数删除镜像和卷。
选项包括:
格式为:
重启项目中的服务。
选项包括:
格式为:
删除所有(停用)服务容器。
选项包括:
格式为:
启动现有服务容器。
格式为:
在指定服务上执行命令。
例如:
将执行一个ubuntu容器,并执行一个 ping ww.Baidu.com命令。
默认情况下,如果存在一个链接,所有关联服务都会自动启动,除非这些服务已经运行。 该命令类似于在启动容器后运行指定的命令,并根据配置自动创建关联的卷、链接等。
如果你不想自动启动关联容器,你可以使用-no-deps选项,例如:
与网络容器关联的其他容器不会启动。
选项包括:
格式为:
验证和查看组合文件配置.
选项包括:
格式为:
迫使服务容器停止发送SIGKILL信号。 支持通过-s参数来指定发送的信号,例如:通过如下指令发送SIGINT信号:
docker-compose kill -s SIGINT
格式为:
创建服务的容器。 简单地创建,您需要使用 startstartcompose。
选项包括:
格式为:
类似于docker exec命令函数,它可以通过使用服务名登录到容器来访问。
选项包括:
模板文件是使用Compose的核心,涉及的指令关键字也比较多,大部分指令与docker run 相关参数的含义都是类似的。默认的模板文件名称为docker-compose.yml,格式为YAML格式。
例如,编写模板文件:
Docker Compose模板文件主要分为三个区域,如下:
多克编写通用模板文件的主要命令:
指令
功能
build
指定服务镜子Dockkerfile的路径
cap_add,cap_drop
指定容器的内核能力(capacity)分配
command
在容器启动后执行的默认命令
cgroup_parent
指定母类cgroup组,这意味着限制该组的资源基础
container_name
指定容器名称。 默认将使用项目名称服务名称序列等格式
devices
指定设置映射关系
dns
默认的DNS服务器,可以是值或列表
dns_search
配置DNS搜索字段,可以是值或列表
dockerfile
指定用于额外编译镜子的 Dockerfile 文件,由此命令指定
env_file
从文件中获取环境变量,可以作为单独的文件路径或列表使用
environment
设置环境变量,可以是集合或字典格式
expose
暴露端口
external_links
连接docker-compose.yml外部容器,甚至不能由Compose管理的外部容器
extra_hosts
指定额外的主机名称映射信息
image
指定镜子名称或镜子ID。 如果镜子没有本地存在,编译器将尝试引出镜子
labels
指定服务镜子Dockkerfile的路径
links
其他服务中的容器链接
log_driver
指定日志驱动类型,它与多克的-log-driver参数类似。目前,支持三个类型的ログ驱动程序:log_driver "json-file",log_driver "syslog",log_driver "none"和log_opt。
net
设置网络模式。与docker clinet的-net参数类似的参数
pid与主机系统共享进程命名空间。 通过进程ID访问和操作此选项打开的容器之间,以及通过进程ID访问和操作的容器和主机系统之间
ports
暴露端口信息
security_opt
指定容器模板标签机制的默认属性(如用户、角色、类型、级别等)。
ulimits
指定容器的限值
volumes
数据卷所挂载路径设置。可以设置宿主机路径(HOST:CONTAINER)或加上访问模式(HOST:CONTAINER:ro)
要求:编译一个编译模板文件,同时运行Tomcat、MySQL和Redis容器。
Docker-compose.yml文件的内容如下(该文件的内容可以在配置文件docker - compose.yml copy中找到):
我们已经列出了上述三个服务: Redis1,mysql1,web1,分别,并指定了所有三个服务的相应的多克镜子和端口。
您可以在命令中看到,创建两个自定义网络(mycompose_dev和mycompose_pro),然后创建一个容器,并"攻击到..",将网络应用到服务中。
您可以使用Docker网络 ls来查看一个特定的网络如下:
查看启动的容器:
在进入启动时,可以在窗口下测试三个服务;例如,访问9090的下列Tomcat:
有关的命令如下:
使用多克提交命令可以将容器保存到镜子上。
命令形式:docker commit 容器名称 镜像名称
这个镜子的内容是当前容器的内容,您可以用这个镜子再次运行新的容器
使用“docker save”命令可以将现有的镜子保存到一个Tar文件中。
命令格式:Docker save –o tar文件名镜像名称

使用docker load命令可以根据tar文件恢复为docker镜像。
命令格式:Docker load -i tar文件名

注意:执行多克负载命令恢复镜子时,必须先删除原来的镜子。
前面的课程中已经知道了,要获得镜像,可以从Docker仓库中进行下载。那如果我们想自己开发一个镜像,那该如何做呢?答案是:Dockerfile
Dockerfile实际上是一个由一系列命令和参数组成的文本文件,Docker可以读取 Dockerfile文件并根据 Dockerfile文件的描述构建镜子。
Dockerfile文件的内容一般分为四个部分:


基于新创建的镜子 jdk1.8 创建和启动测试容器;

Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以把镜子从上面拉到现场,我们也可以把自己的镜子抬高。但是,有时我们的服务器无法访问互联网,或者你不想把镜子放在公共领域,所以我们需要建立自己的私人仓库来储存和管理自己的镜子。
私有仓库搭建步骤:

操作步骤:

如果要将镜子拖到位于私人仓库的服务器上,则直接执行以下命令:
执行 docker info 命令之后显示内容:
将镜子拖到仓库的服务器是一个相对较小的操作,很容易理解。
在大多数情况下,它是在服务器部署了镜子的私有存储库之后;从其他服务器的私有存储库中取镜子,为了取私有存储库镜子,您需要修改多克配置文件并在启动时设置存储库地址。
重新启动后,你可以在私人仓库里拉出镜子:
整个多克的私人仓库的运作形式如下:
先自我介绍一下,他高中毕业了13年,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。了解大多数年轻的Java工程师,想要升技能,经常需要找到自己的成长或向班上汇报。但对于培训机构来说,学费大约是人民币,着实压力不小。当你不在系统时,自我学习的效率很低,而且很持久。也很容易停止天花板技术。所以我为你收集了一个"java开发工具"初衷也很简单,这是一个想帮助自己学习的朋友,却不知道该从哪里学习。同时减少每个人的负担.添加下方名片,你可以得到完整的学习信息
本文由 在线网速测试 整理编辑,转载请注明出处。