docker的使用(docker的使用场景适用于哪些)

本篇文章给大家谈谈docker的使用,以及docker的使用场景适用于哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

docker中使用docker

Docker 容器技术目前是微服务/持续集成/持续交付领域的第一选择。而在 DevOps 中,我们需要将各种后端/前端的测试/构建环境打包成 Docker 镜像,然后在需要的时候,Jenkins 会使用这些镜像启动容器以执行 Jenkins 任务。

为了方便维护,我们的 CI 系统如 Jenkins,也会使用 Docker 方式部署。

Jenkins 任务中有些任务需要将微服务构建成 Docker 镜像,然后推送到 Harbor 私有仓库中。

或者我们所有的 Jenkins Master 镜像和 Jenkins Slave 镜像本身都不包含任何额外的构建环境,执行任务时都需要启动包含对应环境的镜像来执行任务。

我们的 Jenkins Master、Jenkins Slaves 都是跑在容器里面的, 该如何在这些容器里面调用 docker run 命令启动包含 CI 环境的镜像呢?

在这些 CI 镜像里面,我们从源码编译完成后,又如何通过 docker build 将编译结果打包成 Docker 镜像,然后推送到内网仓库呢?

答案下面揭晓。

Docker 采取的是 Client/Server 架构,我们常用的 docker xxx 命令工具,只是 docker 的 client,我们通过该命令行执行命令时,实际上是在通过 client 与 docker engine 通信。

我们通过 apt/yum 安装 docker-ce 时,会自动生成一个 systemd 的 service,所以安装完成后,需要通凯渗过 sudo systemctl enable docker.service 来启用该服务。

这个 Docker 服务启动的,就是 docker engine,查看 /usr/lib/systemd/system/docker.service ,能看到有这样一条语句:

默认情况下,Docker守护进程会生成一个 socket( /var/run/docker.sock )文件来进行本地进程通信,因此只能在本地使用 docker 客户端或者使用 Docker API 进行操作。

sock 文件是 UNIX 域套接字,它可以通过文件系统(而非网络地址)进行寻址和访问。

因此只要以数据卷的形式将 docker 客户端和上述 socket 套接字挂载到容器内部,就能实现 "Docker in Docker",在容器内使用 docker 命令了。具体的命令见后面的「示例」部分。

要记住的是,真正执行我们的 docker 命令的是 docker engine,而这个 engine 跑在宿主机上。所以这并不是真正的 "Docker in Docker".

运行过Docker Hub的Docker镜像的话,会发现其中一些容器时需要挂载/var/run/docker.sock文件。这个文件是什么呢?为什么有些容器需要使用它?简单地说,它是Docker守护进程(Docker daemon)默认监听的Unix域套接字(Unix domain socket),容器中的进程可以通过它与Docker守护进程进行通信。

在容器内部使用宿主机的 docker,方法有二:

容器的启动方式也有两种,如下:

示例命令如下:

必须以 root 用户启动!(或者其他有权限读写 /var/run/docker.sock 的用户) 然后,在容器内就能正常使用 docker 命令,或者访问宿主机的 docker api 了。

docker-compose.yml 文件内容如下:

然后通过 docker-compose up -d 即可后台启动容器。

通过上面的操作,我们在槐宴容器内执行 docker ps 时,还是很可能会遇到一个问题: 权限问题 。

如果你容器的默认用户是 root,那么你不会遇到这个问题,因为 /var/run/docker.sock 的 onwer 就是 root.

但是一般来说,为了铅孙银限制用户的权限,容器的默认用户一般都是 uid 和 gid 都是 1000 的普通用户。这样我们就没有权限访问 /var/run/docker.sock 了。

解决办法:

方法一(不一定有效):在构建镜像时,最后一层添加如下内容:

方法二:经测试一定有效,在Dockerfile中使用USER参数

这样我们构建的镜像就是root用户了,经测试在docker-compose.yaml文件中user参数并不好用,类似如下

这样我们的默认用户,就能使用 docker 命令了。

参考

[img]

5分钟轻松教你学会:Docker镜像仓库的使用

镜像保存在Registry的仓库中,默认的Registry是由Docker公司运营的公共Registry服务,即Docker Hub,网址为: 。可以把Docker Hub看成类似于Github一样的网址。

1、登录「docker」

命令:docker login,显示Login Succeeded说明成功,没登录的话,需要输入用户名username和密码password。

2、创建镜像

使用docker-compose来创建镜像,在yml文件中还要定义项目所依赖的容器(redis和mysql)

命令:docker-compose up -d

docker-compose.yml文件如下:

3、查看镜像

命令:docker images

说明:

REPOSITORY:该镜像所属的仓库名称

TAG:镜像的标签(见下面介绍)

IMAGE ID:镜像ID

CREATED:镜像创建的时间

SIZE:镜像的大小

4、局明tag标签(镜像的标签)

标签介绍

作用蚂洞:一个仓库中可以有多个镜像。为了区分一个仓库中不同的镜像,Docker提供了标签(tag)的功能,每个镜像在列出来时都会带有一个标签,如:16.04、18.04、quantal或者precise等。

每个标签对组成特定镜像的一些镜像层进行标记(比如,标签16.04就是对桐物告所有ubuntu 16.04镜像的层的标记)

同一个仓库中,可以同时存在多个相同的镜像(IMAGE ID相同),只要标签(TAG)不同就可以了

命令:docker tag jeecg-boot-system:latest xiaoxiaoyuyu123/aids:jeecg-boot-system

说明:

jeecg-boot-system:latest(本地仓库名称+标签)

xiaoxiaoyuyu123/aids:jeecg-boot-system(私服仓库地址+标签)

5、上传到私有仓库

命令:docker push xiaoxiaoyuyu123/aids:jeecg-boot-system

说明:

xiaoxiaoyuyu123/aids:jeecg-boot-system(私服仓库地址+标签)

1、先登录私服地址,然后从上面pull下来镜像

命令:docker pull xiaoxiaoyuyu123/aids:jeecg-boot-system

2、上传服务器yml文件,使用docker-compose来启动镜像

命令:docker-compose -f ./docker-compose-server.yml up

docker-compose-server.yml文件如下:

好啦, 关于Docker镜像仓库的使用分享就到这啦~

Webfunny专注于微信小程序、H5前端、PC前端线上应用实时监控,实时监控前端网页、前端数据分析、错误统计分析监控和BUG预警,第一时间报警,快速修复BUG!支持私有化部署,容器化部署,可支持千万级PV的日活量!

怎样使用Docker帮助

一 直接输入docker命令来查看Docker客户端的所有命令选项。

[root@localhost ~]# docker

Usage: docker [OPTIONS] COMMAND [arg...]

docker [ --help | -v | --version ]

A self-sufficient runtime for containers.

Options:

--config=~/.docker              Location of client config files

-D, --debug                     Enable debug mode

-H, --host=[]                   Daemon socket(s) to connect to

-h, --help                      Print usage

-l, --log-level=info            Set the logging level

--tls        明凯歼                   Use TLS; implied by --tlsverify

--tlscacert=~/.docker/ca.pem    Trust certs signed only by this CA

--tlscert=~/.docker/cert.pem    Path to TLS certificate file

--tlskey=~/.docker/key.pem      Path to TLS key file

--tlsverify                     Use TLS and verify the remote

-v, --version                   Print version information and quit

Commands:

attach    Attach to a running container

build     Build an image from a Dockerfile

commit    Create a new image from a container's changes

cp        Copy files/folders between a container and the local filesystem

create    Create a new container

diff      Inspect changes on a container's filesystem

events    Get real time events from the server

exec      Run a command in a running container

export    Export a container'孙瞎s filesystem as a tar archive

history   Show the history of an image

images    List images

import  激冲  Import the contents from a tarball to create a filesystem image

info      Display system-wide information

inspect   Return low-level information on a container, image or task

kill      Kill one or more running containers

load      Load an image from a tar archive or STDIN

login     Log in to a Docker registry.

logout    Log out from a Docker registry.

logs      Fetch the logs of a container

network   Manage Docker networks

node      Manage Docker Swarm nodes

pause     Pause all processes within one or more containers

port      List port mappings or a specific mapping for the container

ps        List containers

pull      Pull an image or a repository from a registry

push      Push an image or a repository to a registry

rename    Rename a container

restart   Restart a container

rm        Remove one or more containers

rmi       Remove one or more images

run       Run a command in a new container

save      Save one or more images to a tar archive (streamed to STDOUT by default)

search    Search the Docker Hub for images

service   Manage Docker services

start     Start one or more stopped containers

stats     Display a live stream of container(s) resource usage statistics

stop      Stop one or more running containers

swarm     Manage Docker Swarm

tag       Tag an image into a repository

top       Display the running processes of a container

unpause   Unpause all processes within one or more containers

update    Update configuration of one or more containers

version   Show the Docker version information

volume    Manage Docker volumes

wait      Block until a container stops, then print its exit code

Run 'docker COMMAND --help' for more information on a command.

二 通过命令docker command --help更深入的了解指定的Docker命令使用方法。

[root@localhost ~]# docker version --help

Usage:docker version [OPTIONS]

Show the Docker version information

Options:

-f, --format string   Format the output using the given go template

--help            Print usage

终于有人把Docker讲清楚了,Docker入门教程,原来这么简单...

Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中,然后发布到任何流行的机器上。Docker的迅猛发展和全新理念,席卷了整个IT界,成为云时代的一颗新星。

Docker相比于传统虚拟化方式具有更多的优势:

我们可以从下面这张表格很清楚地看到容器相比于传统虚拟机的特性的优势所在:

企业使用一项技术是为了解决当前企业环境中存在的某个痛点。目前整个软件行业存在着以下几个痛点。

(1)软件更新发布及部署低效,过程繁琐且需要人工介入。

(2)环境一致性难以保证。

(3)不同环境之间迁移成本太高。

Docker在很大程度上解决了上述问题。

首先, Docker的使用十分简单,从开发的角度来看就是“三步走”:构建、运输、运行。其中,关键步骤是构建环节,即打包镜像文件。但是从测试和运维的角度来看,那就只有两步:复制、运行。有了这个镜像文件,想复制到哪里运行都可以,完全和平台无关。

Docker这种容器技术隔离出了独立的运行空间,不会和其他应用争用系统资源,不需要考虑应用之间的相互影响。

其次, 因为在构建镜像时就处理完了服务程序对于系统的所有依赖,所以在使用时,可以忽略原本程序的依赖以及开发语言。对测试和运维人员而言,可以更专注于自己的业务内容。

最后, Docker为开发者提供了一种开发环境的管理办法,帮助测试人员保证环境的同步,为运维人员提供了可移植的标准化部署流程。

动力节点的 Docker入门教程,将带你一步一步从基础到实践学习Docker,了解什么是Docker,Docker的核心思想、核心组件诸如镜像,仓库,容器等,通过大量的实际操作循序渐进地介绍Docker,带你轻松玩转Docker,Docker技术也是当今IT从业人员的必备技能之一。

在线学习:

资料下载:

•001.Docker视频教程:虚拟化技术发展史

•002.Docker视频教程:虚拟化技术是什么

•003.Docker视频教程:虚拟化技术的分类

•004.Docker视频教程:虚拟化技术的优缺点消兆

•005.Docker视频教程:容器技术的发展

•006.Docker视频教程:Docker的发展 历史

•007.Docker视频教程:Docker是什么

•008.Docker视频教程:容器和虚拟机的区别(1)

•009.Docker视频教程:容器和虚拟机的区别(2)

•010.Docker视频教程:为什么要使用Docker视频教程:Docker

•011.Docker视频教程:Docker的版本

•012.Docker视频教程:Docker的安装

•返游013.Docker视频教程:Docker服务启动漏桥销

•014.Docker视频教程:Docker服务信息

•015.Docker视频教程:Docker使用初体验-Docker的运行机制

•016.Docker视频教程:Docker使用初体验-Docker官方镜像仓库

•017.Docker视频教程:Docker使用初体验-Docker官方镜像下载

•018.Docker视频教程:Docker使用初体验-Docker镜像启动运行

•019.Docker视频教程:Docker使用初体验-访问容器中的Tomcat服务

•020.Docker视频教程:Docker使用初体验-Docker的网络访问机制

•021.Docker视频教程:Docker使用初体验-进入Docker容器内部

•022.Docker视频教程:Docker使用初体验-补充说明

•023.Docker视频教程:Docker的体系架构(1)

•024.Docker视频教程:Docker的体系架构(2)r

•025.Docker视频教程:Docker核心组件

•026.Docker视频教程:Docker核心组件-镜像的基本概念

•027.Docker视频教程:Docker核心组件-镜像的组成结构

•028.Docker视频教程:Docker核心组件-镜像的日常操作(1)

•029.Docker视频教程:Docker核心组件-镜像的日常操作(2)

•030.Docker视频教程:Docker核心组件-镜像的日常操作(3)

•031.Docker视频教程:Docker核心组件-镜像的日常操作(4)

•032.Docker视频教程:Docker核心组件-容器的基本概念

•033.Docker视频教程:Docker核心组件-容器的日常操作(1)

•034.Docker视频教程:Docker核心组件-容器的日常操作(2)

•035.Docker视频教程:Docker核心组件-仓库的基本概念

•036.Docker视频教程:Docker核心组件-官方仓库与阿里云仓库

•037.Docker视频教程:Docker核心组件-仓库的日常操作(1)

•038.Docker视频教程:Docker使用示例-安装MySQL

•039.Docker视频教程:Docker使用示例-访问与操作MySQL容器

•040.Docker视频教程:Docker使用示例-安装Nginx

•041.Docker视频教程:Docker使用示例-访问Nginx容器

•042.Docker视频教程:Docker使用示例-容器Nginx部署静态网站

•043.Docker视频教程:Docker使用示例-安装Zookeeper

•044.Docker视频教程:Docker使用示例-安装ActiveMQ

•045.Docker视频教程:认识Dockerfile文件

•046.Docker视频教程:Dockerfile的基本结构

•047.Docker视频教程:Dockerfile常用指令

•048.Docker视频教程:自定义JDK镜像Dockerfile文件

•049.Docker视频教程:自定义JDK镜像构建与运行测试

•050.Docker视频教程:自定义Tomcat镜像Dockerfile文件

•051.Docker视频教程:自定义Tomcat镜像构建与运行测试

•052.Docker视频教程:自定义MySQL镜像Dockerfile文件

•053.Docker视频教程:自定义MySQL镜像构建与运行测试

•054.Docker视频教程:自定义Redis镜像Dockerfile文件

•055.Docker视频教程:自定义Redis镜像构建与运行测试(1)

•056.Docker视频教程:自定义Redis镜像构建与运行测试(2)

•057.Docker视频教程:阿里云容器镜像仓库

•058.Docker视频教程:阿里云镜像仓库管理后台

•059.Docker视频教程:发布镜像到阿里云镜像仓库(1)

•060.Docker视频教程:发布镜像到阿里云镜像仓库(2)

•061.Docker视频教程:发布镜像到阿里云镜像仓库(3)

•062.Docker视频教程:Docker Hub官方镜像加速

•063.Docker视频教程:Docker部署SpringBoot项目-介绍

•064.Docker视频教程:Docker部署SpringBoot项目-本地测试

•065.Docker视频教程:Docker部署SpringBoot项目-基本流程

•066.Docker视频教程:Docker部署SpringBoot项目-打Jar包与War包

•067.Docker视频教程:Docker部署SpringBoot项目-jar项目的镜像构建

•068.Docker视频教程:Docker部署SpringBoot项目-jar项目的镜像运行与测试(1)

•069.Docker视频教程:Docker部署SpringBoot项目-jar项目的镜像运行与测试(2)

•070.Docker视频教程:Docker部署SpringBoot项目-war项目的镜像构建与运行

•071.Docker视频教程:Docker部署SpringBoot项目-war项目的测试

•072.Docker视频教程:Docker保存新镜像

•073.Docker视频教程:Docker保存的新镜像数据验证

详解Docker——你需要知道的Docker进阶知识三

我们可以将数据保存在容器中,但是这样存在一些缺点:

针对上述的缺点,有些数据,例如数据库文件,我们不应该将其保存在镜像或者容器的可写层中。Docker 提供三种不同的方式将数据从 Docker 主机挂载到容器中,分别为卷( volumes ),绑定挂载( bind mounts ),临时文件系统( tmpfs )。很多时候, volumes 总是正确的选择。

无论使用上述的哪一种方式,数据在容器内看上去都是一样的。它被认为是容器文件系统的目录或文件。

对于三种不同的存储数据的方式来说,卷是唯一完全由 Docker 管理的。它更容易备份或迁移,并且我们可以使用 DockerCLI 命令来管理卷。

列出本地可用的卷列表:

这种由系统随机生成名称的卷称为 匿名卷 ,匿名卷名称不具备可读性,使用起来不太方便,所以创建卷时一般会指定其 name 。例如我们创建一个名为 volume1 的卷。

创建好卷之后,我们可以用卷来启动一个容器,这里首先需要学习 docker container run 命令的两个参数:

对于前面创建的卷 volume1 ,可使用如下命令来在容器中使用:

使用 --mount 的命令如下:

上述操作,我们运行了两个容器,并分别挂渗行载了一个卷。对于这两个容器来说,由于挂载的是同一个卷,所以它们将共享该数据卷。多个容器共享数据卷时,需要注意并发读写问题。可以分别连接到两个容器中,操作数据来验证数据是同步的。

绑定挂载( bind-mounts )通过将主机上的目录挂载到容器中,使得容器可以操作和修改主机上的文件。

例如,我们将 /home/hellodocker 目录挂载到容器中的 /home/hellodocker 目录下,使用的命令如下:

而如果使用 --mount ,相应的语句如下:

上述两个操作针对的是目录,而对于挂载文件来说,可能会出现一些特殊情况,涉及到绑定挂载和使用卷的区别。下面我们重现这一操作:

首先在当前目录,即 /home/hellodocker 目录下,创建一个 test.txt 文件。并向其中写入文本内容 "test1":

接着创建一个容器 hellodocker6 ,将 test.txt 文件挂载到容器中的 /test.txt 路径,并查看容器中 /test.txt 文件的内容:

这时新打开一个终端,通过 echo 命令向 /home/hellodocker/test.txt 文件追加内容 "test2",并在容器中查看 /test.txt 文件的内容:

这时无论是在容器中还是主机上都能查看到该文件的最新内容。接下来在主机上查看 test.txt 的 inode 号,并使用 vim 编辑该文件丛渣哗,添加 "test3",并查看该文件的内容:

在主机上使用 vim 编辑后,通过 vim 做出的修改并不能在容器中查看到

这是因为 vim 编辑文件的时候,会将文件内容暂存到一个临时文件中,退出保存后会删除原来的文件,并将临时文件重命名为原文件。但是我们标识文件是通过 inode ,因此 Docker 绑定的依然是旧的主机文件,所以容器中看到的依然是旧的内容。

对于数据卷来说,由 docker 完全管理,而绑定挂载需要我们自己去维护。我们需要自己手动去处理这些问题,这些问题并不仅仅是上面演示的这些,还有用户权限, SELINUX 等。

tmpfs 只存梁姿储在主机的内存中。当容器停止时,相应的数据就会被移除。

Docker搭建与使用

docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。

这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后在左侧的 Docker Hub 镜像站点 可以找到专属加速器地址,复制下来。

然后分开执行以下命令:

之后重新加载配置,并且重银铅启 Docker 服务

这里推荐使用 Portainer 作为容器的 GUI 管理方案。官方地址:

安历清装命令:

访问你的 IP:9000 即可进入容器管理页面。

名字为镜像库中的镜像名,若出现权限问题报错,前面加上sudo即可。

参数说明:

-p 3306:3306 :将容器的3306端口映射到主机的3306端口

-v /mydata/mysql/log:/var/log/mysql :将配置文件夹挂载到主机

-v /mydata/mysql/data:/var/lib/mysql :将日志文件夹挂载到主机

-v /mydata/mysql/conf:/etc/mysql :将配置文件夹挂载到主机

-e MYSQL_ROOT_PASSWORD=root :初始化root用户的密码

验证,查看docker下的所有进程:docker ps

docker安装的mysql,相当于linux系统中单开了一个linux专门用来安装mysql。

-p 3306:3306 :将容器的3306端口映射到主机(vagrant开启的虚拟机)的3306端口。

日志也是将经常变动数据挂载到外部锋烂好linux文件夹下。

  上面已经说到,将mysql容器中的配置文件挂载到本机中,所以直接修改本机目录下的配置文件即可。

防止挂载时 redis.conf找不到而在conf文件夹下再次创建名为redis.conf的文件夹,所以预先创建。

mysql之前是进入容器,现在我们直接进入客户端进行操作redis

贼好用啊,还有提示。

docker restart redis 重启redis容器后,发现之前的数据都丢失了,因为保存在内存中。所以我们需要配置持久化。

因为之前已经将容器配置文件挂载到本机目录下,所以直接修改本机redis.conf即可。

重启验证,OK。

关于docker的使用和docker的使用场景适用于哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表