• 如何在华为昇腾910b上部署bert模型,是否有成熟的docker镜像
    我使用transformer库微调了BERT模型,实现了一个简单的文本分类,现在需要将这个模型部署在华为昇腾910b上,有以下几个问题1.论坛中有在华为昇腾910b上部署BERT模型的详细教程吗?需要从0开始的那种详细教程那。2.是否有官方镜像,可以直接替换模型实现镜像部署。
  • [容器类] acl.rt.set_device报507033错误
    """[EVENT] PROFILING(78,python):2024-03-11-02:22:20.914.096 [msprof_callback_impl.cpp:199] >>> (tid:78) Started to register profiling ctrl callback.[EVENT] PROFILING(78,python):2024-03-11-02:22:25.859.341 [msprof_callback_impl.cpp:78] >>> (tid:78) MsprofCtrlCallback called, type: 255[EVENT] PROFILING(78,python):2024-03-11-02:22:25.859.666 [prof_acl_mgr.cpp:1190] >>> (tid:78) Init profiling for dynamic profiling[ERROR] DRV(78,python):2024-03-11-02:22:34.958.504 [ascend][curpid: 78, 78][drv][tsdrv][drvDeviceOpen 360]open devdrv_device(0) failed, fd(-1), errno(14), error(Bad address).[ERROR] DRV(78,python):2024-03-11-02:22:34.958.716 [ascend][curpid: 78, 78][drv][tsdrv][share_log_read 569]invalid para, vdevid(0), devid(0), fid(0) invalid mode(1) or ctx is null.[ERROR] RUNTIME(78,python):2024-03-11-02:22:34.958.800 [npu_driver.cc:2012]78 DeviceOpen:[drv api] drvDeviceOpen failed: deviceId=0, drvRetCode=4![ERROR] RUNTIME(78,python):2024-03-11-02:22:34.958.809 [device.cc:227]78 Init:report error module_type=0, module_name=EE9999[ERROR] RUNTIME(78,python):2024-03-11-02:22:34.958.814 [device.cc:227]78 Init:Failed to open device, retCode=0x7020014, deviceId=0.[ERROR] RUNTIME(78,python):2024-03-11-02:22:34.958.833 [runtime.cc:2109]78 DeviceRetain:Failed to init device.[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.725.754 [runtime.cc:2133]78 DeviceRetain:report error module_type=0, module_name=EE9999[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.725.935 [runtime.cc:2133]78 DeviceRetain:Check param failed, dev can not be NULL![ERROR] RUNTIME(78,python):2024-03-11-02:22:35.725.988 [runtime.cc:1946]78 PrimaryContextRetain:report error module_type=0, module_name=EE9999[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.725.992 [runtime.cc:1946]78 PrimaryContextRetain:Check param failed, dev can not be NULL![ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.001 [runtime.cc:1973]78 PrimaryContextRetain:report error module_type=0, module_name=EE9999[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.005 [runtime.cc:1973]78 PrimaryContextRetain:Check param failed, ctx can not be NULL![ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.013 [api_impl.cc:1315]78 NewDevice:report error module_type=0, module_name=EE9999[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.017 [api_impl.cc:1315]78 NewDevice:Check param failed, context can not be null.[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.025 [api_impl.cc:1336]78 SetDevice:report error module_type=0, module_name=EE9999[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.029 [api_impl.cc:1336]78 SetDevice:new device failed, retCode=0x7010006[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.037 [logger.cc:615]78 SetDevice:Set device failed, device_id=0, deviceMode=0.[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.067 [api_c.cc:1469]78 rtSetDevice:ErrCode=507033, desc=[device retain error], InnerCode=0x7010006[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.071 [error_message_manage.cc:49]78 FuncErrorReason:report error module_type=3, module_name=EE8888[ERROR] RUNTIME(78,python):2024-03-11-02:22:35.726.079 [error_message_manage.cc:49]78 FuncErrorReason:rtSetDevice execute failed, reason=[device retain error][ERROR] ASCENDCL(78,python):2024-03-11-02:22:35.726.091 [device.cpp:66]78 aclrtSetDevice: open device 0 failed, runtime result = 507033.[EVENT] IDEDH(78,python):2024-03-11-02:22:39.586.549 [adx_server_manager.cpp:27][tid:78]>>> start to deconstruct adx server manager"""
  • [技术干货] Docker常用语法--新建&启动
    新建并启动容器:第一步,在指定镜像上创建一个可写的容器层第二步,使用指定的命令(COMMAND)启动它简而言之,docker run 相当于执行了两个使用docker run命令即可新建并启动一个容器,该命令是我们最常用的命令之一,它有很多选项,下面列举一些常见的选项,通过run命令创建的容器,默认是会运行的。docker run [OPTIONS] IMAGE [COMMAND] [ARG...]上面的命令就是Docker创建新容器的基本命令,其中:OPTIONS:可以指定容器的各种选项,如端口映射、数据卷等。IMAGE:指定容器所使用的镜像。COMMAND:可以覆盖镜像中默认的启动命令。ARG:传递给启动命令的参数。如表:Name,shorthand    Default    Description--detach , -d                           后台运行容器,并打印容器ID--publish-all , -p                   随机映射所有端口--publish , -p                           指定端口映射,该选项有以下四种格式:                                                ip:hostPort:containerPort                                                ip::containerPort                                                hostPort:containerPort                                                containerPort--net owrk                               指定网络模式,该选项有以下四种可选参数                                                --network=bridge:默认选项,表示连接到默认的网桥                                                --network=host:容器使用宿主机的网络                                                --network=container:NAme_or_ID:告诉docker让新建的容器使用已有的网络配置                                                --network=none:不配置该容器的网络,用户可自定义网络配置示例1:docker run java /bin/echo 'hello world'这样终端会打印helloworld的字样 跟在本地直接执行/bin/echo  hello world一样。示例2:docker run -d -p 91:80  nginx这样就可启动一个nginx容器,访问http://docker宿主机 IP:91/.除了使用命令行的方式创建容器,还可以使用Dockerfile创建。FROM ubuntu RUN apt-get update && \ apt-get install -y nginx CMD ["nginx", "-g", "daemon off;"]上面的Dockerfile中指定了基础镜像为ubuntu,然后安装了nginx,并设置了启动命令。使用以下命令在当前目录下构建镜像:docker build -t myimage .使用以下命令创建新容器:docker run -d --name mycontainer -p 80:80 myimage上面的命令将创建一个名为mycontainer的容器,将主机的80端口映射到容器的80端口,并以myimage镜像为基础启动容器。
  • Docker语法——构建&加载
    加载镜像:         Docker是一款用于快速部署应用程序的开源容器引擎。在使用Docker时,镜像是重要的概念之一。镜像是Docker容器的基础组成部分,它包含了一个完整的文件系统,以及运行该文件系统的所有依赖项。这里我们介绍一下使用docer load 命令即可加载镜像 。让我们来看看具体步骤。docker load --input /path/to/image.tar命令格式: docker load [OPTIONS] docker load命令参数Name, shorthand     Default    Description--input,-i                                从文件加载而非标准输入--quiet,-q              false         静默加载示例: #从busybox.tar文件中加载镜像:docker load < busybox.tardocker load --input busybox.tar如果您已将Docker镜像文件上传到云端,您可以通过下面的命令从云端加载镜像。docker pull your-username/your-image-name:version该命令将从Docker Hub上拉取指定Docker镜像。其中,your-username代表你的Docker Hub账户名,your-image-name代表你上传到Docker Hub的镜像名称,version代表你需要拉取的镜像版本。构建镜像:通过 Dockerfle 构建镜像 命令格式: docker build[OPTIONS] PATH] URL|-Name, shorthand     Default    Description--add-host                              添加自定义从host到IP的映射,格式为(hostip--cache-from                          作为缓存源的镜像-cpuset-mems                        指定允许执行的内存(0-3,0,1)OPTIONS 中的一些常用选项如下: -f:指定 Dockerfile 的文件名,默认为当前目录下的 Dockerfile; -t:指定构建出的镜像的名称及 tag,格式为 name:version; –no-cache:在构建镜像时不使用缓存; –force-rm:在构建结束后删除中间容器。 这些命令和指令基本能够满足绝大多数 Docker 镜像的构建需求,如果需要更复杂的构建过程,您可以查看 Docker 官方文档找到更多有用的命令和指令。 
  • [技术干货] Docker语法-删除&保存
    ​ 删除本地镜像:docker rmi是Docker中删除镜像的主要命令之一。它的基本语法如下:    docker rmi [OPTIONS] IMAGE [IMAGE...]    其中,OPTIONS代表可选的参数,IMAGE代表要删除的镜像名称或者镜像ID。我们可以通过指定多个镜像名称或镜像ID来同时删除多个镜像。该命令会删除指定的镜像及其所有相关的容器。如果要删除的镜像被其他容器所依赖,那么在删除之前需要先停止并删除这些容器。下面是一个实际的例子,演示了如何使用docker rmi命令删除一个镜像:$ docker rmi myimage:1.0这个命令将删除名称为myimage:1.0的镜像。命令格式:docker rmi [OPTIONS] IMAGE [IMAGE...]docker rmi命令参数Name,shorthand    Default    Description--force,-f              false        强制删除--no-prune             false        不移除该镜像的过程镜像,默认移除示例1:删除指定名称的镜像。 docker rmi hello-world 表示删除 hello-world这个镜像 示例2:删除所有镜像。 docker rmi -f $(docker images)保存镜像:在Docker中,我们可以使用docker save命令将镜像保存到本地文件系统中。下面是使用docker save命令保存镜像的示例:docker save -o my_image.tar my_image:tag上述命令将my_image镜像和它的tag保存到my_image.tar文件中。让我们来一步一步地解释这个命令:docker save是Docker命令行界面中用来保存镜像的命令。-o参数可以指定保存镜像的文件名。在这个例子中,我们使用my_image.tar作为输出文件名。保存镜像的过程可能需要一些时间,具体取决于您要保存的镜像的大小和网络速度。最后,您可以使用docker load命令来加载您保存在本地的镜像:docker load -i my_image.tar上述命令将my_image.tar文件加载到Docker镜像的库中,并让您可以使用该镜像来构建和运行Docker容器。总之,docker save和docker load是两个非常有用的Docker命令,它们可以帮助您轻松地保存和加载Docker镜像。使用docker save 即可保存镜像 命令格式: docker save [OPTIONS] IMAGE [IMAGE...]docker save命令参数:Name,shorthand    Default    Description--output,-0                          输出到文件,而非标准输出示例: #将busybox保存为busybox.tar docker save busybox > busybox.tar docker save --output busybox.tar busybox​
  • [技术干货] Docker语法—下载&列出
    下载镜像:使用命令docker pull命令即可从Docker Registry上下载镜像。命令格式:docker pull [options]NAME[:TAG]@DIGEST}参数:Name.shorthand              Default       Description--all tags -a                       false         下载所有标签的镜像--disable -content -trust   true          忽略镜像的校验示例1:        docker pull java执行该命令后,docker会从dockershub中的java仓库下载最新版本的java镜像   ,若镜像下载缓慢,可配置镜像加速器示例2:该命令还可指定想要下载的镜像标签以及docker registry地址,例如docker pull reg.itmuch.com/java:7这样就可以指定docker registry中下载标签为7的java镜像列出镜像:使用docker images命令即可列出已下载的镜像。命令格式:docker images [options][repository[:TAG]]参数:Name.shorthand              Default       Description--all -a                              false           列出本地所有镜像(包括中间镜像层,false默认情况下,过滤中间映像层 )--digests                          false          显示摘要信息--filter,-f                                         显示满足条件的镜像Name.shorthand              Default       Description--format                                              通过Go语育模板文件展示镜像--no-trunc                       false            不截断输出,显示完整的镜像信息--quiet,-q                      false           只显示镜像ID     使用私有镜像仓库    除了默认的公共镜像仓库外,还可以使用私有镜像仓库来下载镜像。要从私有镜像仓库下载镜像,需要在镜像名称前添加私有仓库的地址。例如,要从私有仓库private-registry.example.com下载私有镜像my-image,可以执行以下命令:docker pull private-registry.example.com/my-image示例:docker images docker images java docker images java:8 docker images --digests docker images --filter "dangling=true"# 展示虚悬镜像执行该命令后,会看到类似如下的表格:REPOSITORYTAGIMAGE ID CREATED      TAG     TAGIMAGE ID     CREATED        SIZE java              latest   861e95c114d6  4 weeks ago   643.1 MB hello-world latest   c54a2cc56cbb   5 months ago 1.848 kB该表格包含了5列,含义如下 REPOSITORY:镜像所属仓库名称 TAG:镜像标签。默认是 latest,表示最新 ·IMAGEID:镜像ID,表示镜像唯一标识 ·CREATED:镜像创建时间。 ·SIZE:镜像大小。
  • [技术干货] Docker常用命令—search
    Docker 常用命令,Docker有很多命令,这些命令有助于控制Docker的行为。本次将详细探讨Docker常用命令。首先来讨论 Docker镜像的常用命令。搜索镜像:      可使用docker search命令搜索存放在Docker Hub 中的镜像。         命令格式: docker search [OPTIONS] TERM      Registry       表示使用的 Registry,通常意义上的远程仓库,可以使用私有的 Registry,如果不写,默认为 docker hub 仓库。因为仓库地址在国外,国内有一些大厂提供镜像加速    器,可以加速镜像的下载速度。除了公共的 Registry,也可以搭建私有的 Registry,一般不对外公开,内部进行镜像的共享。私有的 Registry 可以使用 Docker Registry 搭建,也可以使用 Harbor 和 Sonatype Nexus 等。   Docker ID用户在 docker hub 上的用户名,这个相当于命名空间的概念。如果不写,默认是 docker hub 的 library 命名空间下。  Repository仓库名称,相当于一个项目的概念,不能省略。  tag类似于版本的概念,如果不写,默认为 lastest,即最新。docker search命令参数 --automated    false    (已废弃)只列出自动构建的镜像              --filter, -f 根据指定条件过滤结果          --limit    25    搜索结果的最大条数     --no-trunc    false    不截断输出,显示完整的输出     --stars,-s    0    [已废弃]只展示Star 不低于该数值的示例: docker search java 执行该命令后,会在DockerHub中搜索含有java这个关键词的镜像仓库。包含5列,含义如下:·NAME:镜像仓库名称。 ·DESCRIPTION:镜像仓库描述。 ·STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于GitHub的Stars。.OFFICAL:表示是否为官方仓库,该列标记为的镜像均由各软件的官方项目组创建和维护。由结果可知,java这个镜像仓库是官方仓库、而其他仓库都不是官方镜像仓库。 AUTOMATED:表示是否是自动构建的镜像仓库。
  • [技术干货] 下一代Docker来了,会让部署更加丝滑吗?
    在生成式AI应用中,Docker容器逐渐成为了最主流的部署方式,它可以屏蔽环境差异,使程序在任何环境上都有一致的表现,实现“build once,run everywhere”。近日,Dockercon大会发布了Docker与AI结合的新型产品,据悉1小时构建可缩短至1.5分钟,那么开发者们你们觉得Docker与AI结合,会让变成更加丝滑吗?在大家眼中,Docker有怎样通俗易懂的理解方式?都在夸Docker的优点,那它有什么缺点吗?Docker与AI结合,会让部署更加丝滑吗?
  • [技术干货] docker-compose 的语法
    语法格式Docker Compose的语法主要基于YAML(YAML Ain't Markup Language)文件格式来定义多容器应用程序的配置。YAML是一种易于阅读和编写的数据序列化语言,常用于配置文件。在Docker Compose中,您可以使用YAML文件(通常命名为docker-compose.yml)来描述应用程序的服务、网络和卷。下面是一些Docker Compose的语法示例:定义服务:services: web: image: nginx:latest ports: - "8080:80" environment: - NGINX_HOST=example.com在上述示例中,我们定义了一个名为"web"的服务,使用最新的Nginx镜像,并将容器端口80映射到主机端口8080。同时,我们还设置了一个环境变量NGINX_HOST。定义网络:networks: mynetwork: driver: bridge在上述示例中,我们定义了一个名为"mynetwork"的自定义网络,使用桥接驱动程序。定义卷:volumes: myvolume:在上述示例中,我们定义了一个名为"myvolume"的卷,可以在服务中使用它来持久化数据。引用其他Compose文件:include: - ./other-compose.yml在上述示例中,我们可以使用include字段引用其他Compose文件,以便将多个Compose文件合并为一个。这只是Docker Compose语法的一小部分示例,您可以根据需要在YAML文件中定义更多的服务、网络和卷。要了解更详细的语法和配置选项,请参阅Docker Compose的官方文档。请注意,上述示例中的语法可能会因Docker Compose的版本而有所不同。建议查阅官方文档以获取最新和完整的语法信息。docker-compose案例实战让我们来看一个简单的Docker Compose案例,以便更好地理解它的配置语法。假设我们要构建一个简单的Web应用程序,包含一个Web服务器和一个数据库。我们可以使用Docker Compose来定义和管理这两个服务。首先,我们需要创建一个名为docker-compose.yml的配置文件,指定我们的服务和相关配置。以下是一个示例配置:version: '3' services: web: build: . ports: - "5000:5000" depends_on: - db db: image: postgres:latest environment: - POSTGRES_DB=mydatabase - POSTGRES_USER=myuser - POSTGRES_PASSWORD=mypassword这个配置文件定义了两个服务:web和db。每个服务都有自己的配置选项。版本(version):指定了Docker Compose文件的版本,这里使用版本3。服务(services):定义了应用程序中的各个服务。在这个例子中,我们定义了两个服务:web和db。web服务:使用当前目录下的Dockerfile进行构建(build: .),并将容器端口5000映射到主机端口5000(ports: - "5000:5000")。该服务依赖于db服务(depends_on: - db),确保在启动web服务之前先启动db服务。db服务:使用最新的Postgres镜像(image: postgres:latest),并设置了一些环境变量(environment)来初始化数据库。这个配置文件定义了应用程序的基本结构和依赖关系。要运行这个应用程序,我们只需要在包含docker-compose.yml文件的目录中执行以下命令:docker-compose upDocker Compose将根据配置文件创建和启动所需的容器,并自动处理依赖关系。它将构建web服务的镜像,并拉取最新的Postgres镜像来创建db服务。然后,它将启动这两个服务,并将它们连接在一起。这只是一个简单的示例,演示了Docker Compose的基本配置语法和用法。您可以根据自己的需求扩展和定制这个配置文件,添加更多的服务、网络和卷等配置选项。
  • [技术干货] docker-compose 的常用命令
    什么是 docker-composeDocker-compose是一个命令行工具,用于定义和运行多容器Docker应用程序。它允许用户使用YAML文件来配置应用程序所需的多个服务,然后通过一条指令来安装这些服务的所有依赖,完成构建。如何安装docker-compose在Linux中安装Docker,可以按照以下步骤进行:首先,确保你的Linux系统满足Docker的最低要求。Docker支持多种Linux发行版,如Ubuntu、CentOS、Debian等。更新你的Linux系统。使用包管理器(如apt、yum等)更新已安装的软件包和系统补丁。安装Docker的依赖包。这些依赖包包括一些必要的内核模块和工具。具体的依赖包取决于你的Linux发行版。从Docker官方网站下载适用于Linux的安装包。选择一个与你的Linux发行版相对应的版本。安装Docker软件包。使用包管理器(如dpkg、rpm等)安装下载好的Docker软件包。启动Docker服务。安装完成后,使用适当的命令启动Docker服务。具体的命令取决于你的Linux发行版和使用的初始化系统(如systemd、init.d等)。验证Docker是否成功安装。运行一些简单的Docker命令(如docker version、docker info等),确保Docker已经正确安装并运行。具体安装步骤如下#下载docker-compose文件 curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #将文件复制到/usr/local/bin环境变量下面 mv docker-compose /usr/local/bin #给他一个执行权限 chmod +x /usr/local/bin/docker-compose #查看是否安装成功 docker-compose -version卸载命令是# 卸载docker-compose rm /usr/local/bin/docker-compose为什么要用docker-composeDocker Compose是一个用于定义和运行多容器Docker应用程序的工具,使用它可以更轻松地管理多个容器的应用程序。以下是为什么要使用Docker Compose的一些原因:简化复杂的应用部署:如果有一个复杂的应用程序,由多个服务(如Web服务器、数据库、缓存等)组成,手动部署和管理这些服务可能会非常困难。Docker Compose允许您在一个配置文件中定义所有的服务及其依赖关系,然后使用一条命令来启动整个应用程序,大大简化了部署流程。提高开发效率:在开发环境中,开发人员需要经常构建、测试和调试应用程序。使用Docker Compose,开发人员可以轻松地在本地环境中创建与生产环境相同的容器配置,从而提高开发效率和代码质量。轻松扩展和管理:随着应用程序的增长,可能需要添加更多的服务或扩展现有的服务。使用Docker Compose,可以轻松地修改配置文件来添加或删除服务,然后使用一条命令重新部署整个应用程序。此外,还可以使用Docker Compose来管理容器的运行状态和日志,以便及时发现和解决问题。与CI/CD系统集成:Docker Compose可以与CI/CD系统集成,实现自动化构建、测试和部署。这可以进一步提高开发效率和质量,减少手动操作的风险。跨平台兼容性:Docker Compose支持多种操作系统和云平台,因此可以轻松地在不同的环境中部署和管理应用程序。这使得在不同的环境中保持一致的应用程序配置和部署流程变得更加容易。docker-compose的常用命令Docker Compose的常用命令包括:docker-compose up:启动并运行整个应用程序。docker-compose down:停止并删除整个应用程序的容器、网络和卷。docker-compose start:启动已经存在的应用程序容器。docker-compose stop:停止正在运行的应用程序容器,但不删除它们。docker-compose ps:列出当前运行的应用程序容器。docker-compose logs:查看应用程序容器的日志输出。docker-compose build:重新构建应用程序的服务容器。docker-compose scale:扩展或缩减应用程序的服务容器数量。docker-compose exec:在正在运行的服务容器中执行命令。这些命令可以帮助您管理Docker Compose定义的多容器应用程序的生命周期,包括启动、停止、构建、扩展和执行等操作。运行这些命令需要结合docker-compose一起使用。且必须要在含有docker-compose.yml文件的目录中才可以使用,不然报错
  • [问题求助] 镜像拉取问题
    1. 第三方的服务是部署在园区平台的K8S上还是自建K8S,如果是园区的K8S,镜像怎么推送到仓库?2. 我们自建的harbor仓库在园区的K8S上支持不支持, 自建harbor通过host别名访问,K8S上是否能配置主机hosts
  • [技术干货] Docker安装mysql配置大小写不敏感挂载数据卷存储操作步骤【转】
    Docker安装MySQL步骤操作要使用Docker安装MySQL的最新版,并配置指定的设置,可以按照以下步骤操作:拉取MySQL的最新镜像使用Docker命令拉取MySQL的最新官方镜像。1docker pull mysql:latest创建数据和配置文件映射目录在主机上创建两个目录,一个用于映射MySQL的数据,另一个用于映射配置文件。12mkdir -p /opt/mysql/datamkdir -p /opt/mysql/config配置MySQL在/opt/mysql/config目录中创建一个名为my.cnf的配置文件。在该文件中添加以下内容以设置表名忽略大小写:12[mysqld]lower_case_table_names=1运行MySQL容器使用以下命令运行MySQL容器,设置root密码、端口映射、数据和配置文件映射,并允许所有IP连接。1docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456a -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/config:/etc/mysql/conf.d -d mysql:latest这里的命令解释如下:--name mysql:设置容器的名称为mysql。-p 3306:3306:将容器的3306端口映射到宿主机的3306端口。-e MYSQL_ROOT_PASSWORD=123456a:设置root用户的密码为123456a。-v /opt/mysql/data:/var/lib/mysql:将宿主机的/opt/mysql/data目录映射到容器的/var/lib/mysql目录。-v /opt/mysql/config:/etc/mysql/conf.d:将宿主机的/opt/mysql/config目录映射到容器的/etc/mysql/conf.d目录。-d mysql:latest:以后台模式运行MySQL的最新镜像。验证配置运行容器后,您可以通过以下命令进入MySQL容器来验证配置是否生效:1docker exec -it mysql mysql -u root -p输入设置的密码123456a,登录MySQL。您可以执行一些SQL语句来确认表名大小写敏感性的设置是否生效。请确保Docker服务正在运行,且您有足够的权限来执行这些命令。
  • [技术干货] 容器技术的发展历程【转】
    1.1.1 容器历史虽然 docker 把容器技术推向了巅峰,但容器技术却不是从 docker 诞生的。实际上,容器技术连新技术都算不上,因为它的诞生和使用确实有些年头了。下面的一串名称肯能有的你都没有听说过,但它们的确都是容器技术的应用:1、Chroot Jail就是我们常见的 chroot 命令的用法。它在 1979 年的时候就出现了,被认为是最早的容器化技术之一。它可以把一个进程的文件系统隔离起来。2、The FreeBSD JailFreebsd Jail 实现了操作系统级别的虚拟化,它是操作系统级别虚拟化技术的先驱之一。3、Linux VServer使用添加到 Linux 内核的系统级别的虚拟化功能实现的专用虚拟服务器。4、Solaris Containers它也是操作系统级别的虚拟化技术,专为 X86 和 SPARC 系统设计。Solaris 容器是系统资源控制和通过 "区域" 提供边界隔离的组合。5、OpenVZOpenVZ 是一种 Linux 中操作系统级别的虚拟化技术。 它允许创建多个安全隔离的 Linux 容器,即 VPS。6、Process ContainersProcess 容器由 Google 的工程师开发,一般被称为 cgroups。7、LXCLXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。8、Warden在最初阶段,Warden 使用 LXC 作为容器运行时。 如今已被 CloudFoundy 取代。9、LMCTFYLMCTY 是 Let me contain that for you 的缩写。它是 Google 的容器技术栈的开源版本。Google 的工程师一直在与 docker 的 libertainer 团队合作,并将 libertainer 的核心概念进行抽象并移植到此项目中。该项目的进展不明,估计会被 libcontainer 取代。10、DockerDocker 是一个可以将应用程序及其依赖打包到几乎可以在任何服务器上运行的容器的工具。11、RKTRKT 是 Rocket 的缩写,它是一个专注于安全和开放标准的应用程序容器引擎。正如我们所看到的,docker 并不是第一个容器化技术,但它的确是最知名的一个。1.1.2 Docker 是什么Docker (码头工人)是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司(后由于 Docker 开源后大受欢迎就将公司改名为 Docker Inc ,总部位于美国加州的旧金山)内部的一个开源的 PAAS 服务 (Platform as a ServiceService )的业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。Docker 是基于 linux 内核实现,Docker 最早采用 LXC 技术 ,LXC 是 Linux 原生支持的容器技术 ,可以提供轻量级的虚拟化 ,可以说 docker 就是基于 LXC 发展起来 的,提供 LXC 的高级封装,标准的配置方法,在LXC的基础之上,docker提供了一系列更强大的功能。而虚拟化技术 KVM(KernelKernel-based Virtual Machine Machine) 基于 模块实现, 后来Docker 改为自己研发并开源的 runc 技术运行容器,彻底抛弃了LXC。Docker 相比虚拟机的交付速度更快,资源消耗更低,Docker 采用客户端/服务端架构,使用远程API来管理和创建容器,其可以轻松的创建一个轻量级的、可移植的、自给自足的容器,docker 的三大理念是build(构建)、ship(运输)、 run(运行),Docker遵从apache 2.0协议,并通过(namespace及cgroup等)来提供容器的资源隔离与安全保障等,所以Docke容器在运行时不需要类似虚拟机(空运行的虚拟机占用物理机6-8%性能)的额外资源开销,因此可以大幅提高资源利用率,总而言之Docker是一种用了新颖方式实现的轻量级虚拟机.类似于VM但是在原理和应用上和VM的差别还是很大的,并且docker的专业叫法是应用容器(Application Container)。Docker的主要目标Build, Ship and Run Any App, Anywhere,即通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统。将应用运行在Docker 容器上,可以实现跨平台,跨服务器,只需一次配置准备好相关的应用环境,即可实现到处运行,保证研发和生产环境的一致性,解决了应用和运行环境的兼容性问题,从而极大提升了部署效率,减少故障的可能性docker 官网:http://www.docker.com帮助文档链接:https://docs.docker.com/docker 中文网站:http://www.docker.org.cn/1.1.3 Docker 的组成Docker 主机(Host):一个物理机或虚拟机,用于运行Docker服务进程和容器,也称为宿主机,node节点Docker 服务端(Server):Docker守护进程,运行docker容器Docker 客户端(Client):客户端使用docker 命令或其他工具调用docker APIDocker 仓库(Registry): 保存镜像的仓库,官方仓库: https://hub.docker.com/,可以搭建私有仓库harborDocker 镜像(Images):镜像可以理解为创建实例使用的模板Docker 容器(Container): 容器是从镜像生成对外提供服务的一个或一组服务1.1.4 Docker 和虚拟机,物理主机容器和虚拟机比较资源利用率更高:一台物理机可以运行数百个容器,但是一般只能运行数十个虚拟机开销更小:不需要启动单独的虚拟机OS内核占用硬件资源启动速度更快:可以在数秒内完成启动集成性更好:和CI/CD(持续集成/持续部署)相关技术结合性更好,实现自动化管理使用虚拟机是为了更好的实现服务运行环境隔离,每个虚拟机都有独立的内核,虚拟化可以实现不同操作系统的虚拟机,但是通常一个虚拟机只运行一个服务,很明显资源利用率比较低且造成不必要的性能损耗,我们创建虚拟机的目的是为了运行应用程序,比如Nginx、PHP、Tomcat等web程序,使用虚拟机无疑带来了一些不必要的资源开销,但是容器技术则基于减少中间运行环节带来较大的性能提升。根据实验,一个运行着CentOS的KVM虚拟机启动后,在不做优化的情况下,虚拟机自己就需要占用100~200 MB内存。此外,用户应用运行在虚拟机里面,它对宿主机操作系统的调用就不可避免地要经过虚拟化软件的拦截和处理,这本身又是一层性能损耗,尤其对计算资源、网络和磁盘I/O的损耗非常大。比如:一台96G内存的物理服务器,运行java程序的虚拟机一般分配8G内存/4核的资源,只能运行13台左右虚拟机,但是改为运行docker容器每个容器分配4G内存,就可以运行25个左右容器,运行数量相当于提高一倍,可以大幅节省IT支出,通常情况下至少可以节约一半以上的物理设备本文链接:http://www.yunweipai.com/34721.html
  • [技术干货] docker安装步骤
    前言 Docker Hub 是存放各种镜像模版的地方,其实就是一个最大的公开仓库docker Hub地址,存放了数量庞大的镜像提供用户下载,在国内一般用国内库下载镜像会比较快。 仓库分为公开库(Public)和私有库(private)两种形式,国内的公开库包括阿里云,网易云等。 以下是本篇文章正文内容,下面案例可供参考  一、docker是什么? Docker 是基于Go语言实现的一个开源项目,通过对应组建的封装,分发,部署,运行等生命周期的管理,使用户的应用及其运行环境“一次镜像,处处运行”,其实是一个应用容器,类似于一个虚拟机。  二、安装步骤 1.安装前检查 1.可以使用以下命令查看CentOS版本: lsb_release -a ,如果出现未找到这个命令的话,需要咱们去安装redhat-lsb  lsb_release -a 2.解决方法,输入命令:yum install -y redhat-lsb 输入这个等待安装成功就可以了 yum install -y redhat-lsb 4.如上再次查看就没有问题了,可以查看版本了,命令: lsb_release -a lsb_release -a  2.docker安装 5.在 CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上,可以使用以下命令查看:uname -r uname -r  6.查看是否已安装docker列表:yum list installed | grep docker,什么都不提示说明咱们还没有安装 yum list installed | grep docker  7.安装docker:yum -y install docker yum -y install docker  8.启动dock   systemctl start docker dock   systemctl start docker   9.查看服务状态是否启动,如下图就说明启动成功了:systemctl status docker systemctl status docker 以上出来的Active(running)就说明你的docker安装成功,你可以自己安装你自己需要使用的工具了   10.设置开机自动启动命令:systemctl enable docker.service systemctl enable docker.service  总结 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。 ———————————————— 原文链接:https://blog.csdn.net/ananyou/article/details/130339383 
  • [技术干货] Docker安装及容器安装
    Docker安装及容器安装 一、Docker简单介绍 1、Docker是什么 Docker是基于Go语言实现的云开源项目。  Docker是一个开源的应用容器引擎,是容器技术的一种,采用Go编程语言编写。虽然 Docker把容器技术推向了巅峰,但其实,还有其他容器技术,比如LXC、CoreOS 的RKT等,只是Docker是最知名和运用最广泛的一个  2、Docker能做什么 Docker的主要目标是Build,Ship and Run Any App,Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到一次封装,到处运行。 3、Docker的 优势 更高效地利用系统资源 更快的启动时间 一致的运行环境 持续交付和部署 更轻松的迁移 更轻松的维护和拓展  二、Docker安装 1、环境要求 CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) 8 CentOS 6.5 (64-bit) 或更高的版本 前提条件:  目前,CentOS 仅发行版本中的内核支持 Docker。 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。 2、虚拟机环境安装 和安装Ubuntu差不多,可以参考这篇安装Ubuntu虚拟机的文章 http://t.csdn.cn/4xg2Q 3、Docker安装 通过uname -r 命令查看当前的内核版本,是否符合Docer环境要求 使用root权限登录虚拟机,通过sudo yum update命令确保yum包是最新的 通过下面的命令卸载系统自带或者安装过的Docker,建议下面两个命令都用一下,卸载干净一些 旧版docker(docker-engine)   yum remove docker \            docker-client \            docker-client-latest \            docker-common \            docker-latest \            docker-latest-logrotate \            docker-logrotate \            docker-selinux \            docker-engine-selinux \            docker-engine 新版docker(docker-ce)也叫社区版  yum remove docker-ce \            docker-ce-cli \            containerd 删除docker的文件  systemctl stop docker rm -rf /etc/systemd/system/docker.service.d rm -rf /etc/systemd/system/docker.service rm -rf /var/lib/docker rm -rf /var/run/docker rm -rf /usr/local/docker rm -rf /etc/docker rm -rf /usr/bin/docker* /usr/bin/containerd* /usr/bin/runc /usr/bin/ctr 安装对应依赖环境  sudo yum install -y yum-utils 映射仓库地址 源地址  sudo yum-config-manager \     --add-repo \     https://download.docker.com/linux/centos/docker-ce.repo  如果安装过慢的话可以用阿里的地址  sudo yum-config-manager \     --add-repo \     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装Docker CE(Docker引擎)  sudo yum install docker-ce docker-ce-cli containerd.io 启动Docker服务 sudo systemctl start docker 查看Docker版本 sudo docker version 设置开机自启动 sudo systemctl enable docker 测试Docker安装是否正常 sudo docker run hello-world 4、阿里云镜像加速配置 打开阿里云官网,登录  http://dev.aliyun.com/search.html 点击控制台,然后点击左上角菜单栏,找到容器镜像服务 点开镜像工具,点击镜像加速器,找到对应的虚拟机 复制第一行的命令,注意不要docker目录下面,建议在root用户目录  sudo mkdir -p /etc/docker 1 然后复制第二行命令,从EOF开始到EOF结束  sudo tee /etc/docker/daemon.json <<-'EOF' {   "registry-mirrors": ["https://45tfghj.mirror.aliyuncs.com"] } EOF 然后复制第三行和第四行命令  sudo systemctl daemon-reload sudo systemctl restart docker 三、容器安装(以MySQL为例) 1、拉取镜像 指定版本  docker pull mysql:5.7 不指定版本(拉取最新的)  docker pull mysql 2、运行MySQL镜像 运行mysql镜像命令  docker run -p 3306:3306 --name mysql -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 -d mysql:5.7 运行报错解决办法  报错提示容器mysql名字已经在使用或者被占用  用docker ps或者docker ps -a命令查看被占用容器名字id 用docker rm -f id号命令结束当前被占用容器名字id,或者换一个名字 报错提示端口被占用  00a68f30ec8cda6fce5614b02274adcf5f6490820918a3a7a991f7130452846b docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql (40ea488b4a9220c473104083d967915b71c10e8c2c3ca5d7f85ef2c72bb43207): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.  用netstat -tanlp命令查看当前被占用端口号pid 用kill 占用端口进程的PID命令杀死被占用端口号pid或者更换端口号 3306:3306,是把后面的端口号映射给前面的端口号 注意关闭防火墙  关闭防火墙命令  // 临时关闭防火墙 systemctl stop firewalld   // 禁止开机启动防火墙 systemctl disable firewalld 3、远程连接配置 成功启动MySQL容器后,切换到mysql的conf目录下面  cd mydata/mysql/conf/ 创建my.conf文件  vim my.conf 写入以下配置信息并保存  [client] default-character-set=utf8  [mysql] default-character-set=utf8  [mysqld] init_connect="SET collation_connection = utf8_unicode_ci" init_connect="SET NAMES utf8" character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake skip-name-resolve 然后重启容器 docker restart 容器ID 其他的容器安装和这个都差不多,运行时出错的解决办法也基本一样,就不多多赘述了 ———————————————— 原文链接:https://blog.csdn.net/weixin_54212148/article/details/130648663