当前位置: 首页 > news >正文

深圳优化网站公司网上有多少个购物平台

深圳优化网站公司,网上有多少个购物平台,网站开发工作流审批流,慧聪网官方网站概述 docker是什么呢#xff1f;就是容器呀#xff0c;像你用的Tomcat一样都是容器#xff0c;只不过#xff0c;docker可以用极少的资源来运行#xff0c;极大的利用计算资源#xff0c;不像你要隔离应用一样需要启用虚拟机#xff0c;你的应用是部署在虚拟机上#…概述 docker是什么呢就是容器呀像你用的Tomcat一样都是容器只不过docker可以用极少的资源来运行极大的利用计算资源不像你要隔离应用一样需要启用虚拟机你的应用是部署在虚拟机上相当于你跑应用的时候其实你的使用的资源是包括虚拟机的源应用需要的资源并且速度比较慢至少是秒级别的docker容器相当于你应用直接报相关依赖环境都整体打包启动速度贼快毫秒级别资源利用就相当于只是你应用所需OpenStack跟docker相当于一个是面向物理环境的一个是面向服务的 官网 https://www.docker.com/what-docker 上面有教程 https://www.docker.com/101-tutorial QAQ 真的是简单的教程 菜鸟教程 这个比较友善一些 https://www.runoob.com/docker/docker-tutorial.html 狂神的笔记 https://blog.csdn.net/qq_21197507/article/details/115071715 官网安装教程 https://docs.docker.com/engine/install/ubuntu/ 安装 Hyper-V Hyper-V 是微软开发的虚拟机类似于 VMWare 或 VirtualBox仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。 但是这个虚拟机一旦启用QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用如果你必须在电脑上使用其他虚拟机例如开发 Android 应用必须使用的模拟器请不要使用 Hyper-V 由于我的笔记本需要运行虚拟机后续学习就放在linux上的吧。 linux下运行doc 安装 安装教程 安装命令如下curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 也可以使用国内 daocloud 一键安装命令 这个可以测试docker sudo docker run hello-world ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/15b3180ed5c844e893e032370ed58985.png#pic_center)### 卸载 docker删除安装包 sudo apt-get purge docker-ce 删除镜像、容器、配置文件等内容 sudo rm -rf /var/lib/docker ## 运行ubuntu22版本的dorker镜像https://blog.csdn.net/sjy072411/article/details/125025159 echo \ “deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 常用指令## 1.**列出所有的运行的容器** docker ps 命令 # 列出当前正在运行的容器-a # 列出正在运行的容器包括历史容器 -n? # 显示最近创建的容器 -q # 只显示当前容器的编号 [rootiZ2zeg4ytp0whqtmxbsqiiZ /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [rootiZ2zeg4ytp0whqtmxbsqiiZ /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 77969f5dcbf9 centos “/bin/bash” 5 minutes ago Exited (0) 5 minutes ago xenodochial_bose 74e82b7980e7 centos “/bin/bash” 16 minutes ago Exited (0) 6 minutes ago silly_cori a57250395804 bf756fb1ae65 “/hello” 7 hours ago Exited (0) 7 hours ago elated_nash 392d674f4f18 bf756fb1ae65 “/hello” 8 hours ago Exited (0) 8 hours ago distracted_mcnulty 571d1bc0e8e8 bf756fb1ae65 “/hello” 23 hours ago Exited (0) 23 hours ago magical_burnell [rootiZ2zeg4ytp0whqtmxbsqiiZ /]# docker ps -qa 77969f5dcbf9 74e82b7980e7 a57250395804 392d674f4f18 571d1bc0e8e8 ## 2.**新建容器并启动** docker run [可选参数] image 参数说明 –name“Name” 容器名字 tomcat01 tomcat02 用来区分容器 -d 后台方式运行 -it 使用交互方式运行进入容器查看内容 -p 指定容器的端口 -p 8080:8080 -p ip:主机端口容器端口 -p 主机端口容器端口常用 -p 容器端口 容器端口 -p 随机指定端口 测试启动并进入容器 [rootiZ2zeg4ytp0whqtmxbsqiiZ ~]# docker run -it centos /bin/bash [root74e82b7980e7 /]# ls # 查看容器内的centos基础版本很多命令是不完善的 bin etc lib lostfound mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr 从容器中退回主机 [root77969f5dcbf9 /]# exit exit [rootiZ2zeg4ytp0whqtmxbsqiiZ /]# ls bin dev fanfan lib lostfound mnt proc run srv tmp var boot etc home lib64 media opt root sbin sys usr ## 3.**退出容器** exit # 直接退出容器并关闭 Ctrl P Q # 容器不关闭退出 ## 4.使用数据卷 方式一直接使用命令来挂载 -v docker run -it -v 主机目录容器目录 [rootiZ2zeg4ytp0whqtmxbsqiiZ home]# docker run -it -v /home/ceshi:/home centos docker run -it -v 主机目录容器目录 docker run -it -v /home/lkt/gitlab/xdevice-platform/release_xdevice:/home ubuntu ## 5.拉取镜像 docker search ubuntu 直接从库中拉取对应版本号的镜像 docker pull ubuntu:20.04 上面两个方法拉去的都是20.04 版本的镜像 ## 6.查看所有本地主机上的镜像 [rootiZ2zeg4ytp0whqtmxbsqiiZ ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 7 months ago 13.3kB 解释 REPOSITORY # 镜像的仓库 TAG # 镜像的标签 IMAGE ID # 镜像的ID CREATED # 镜像的创建时间 SIZE # 镜像的大小 可选项 –all , -a # 列出所有镜像 –quiet , -q # 只显示镜像的id ## 7.查找镜像 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 9822 [OK] mariadb MariaDB is a community-developed fork of MyS… 3586 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 719 [OK] 可选项 –filterSTARS3000 # 搜素出来的镜像就是STARS大于3000的 [rootiZ2zeg4ytp0whqtmxbsqiiZ ~]# docker search mysql --filterSTARS3000 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 9822 [OK] mariadb MariaDB is a community-developed fork of MyS… 3586 [OK] ## 8.**启动和停止容器的操作** docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止当前正在运行的容器 docker kill 容器id # 强制停止当前的容器 ## 9.**查看容器中进程信息ps** 命令 docker top 容器id [rootiZ2zeg4ytp0whqtmxbsqiiZ /]# docker top df358bc06b17 UID PID PPID C STIME TTY root 28498 28482 0 19:38 ? ## 10.**进入当前正在运行的容器** 我们通常容器使用后台方式运行的 需要进入容器修改一些配置 命令 docker exec -it 容器id 测试 [rootiZ2zeg4ytp0whqtmxbsqiiZ /]# docker exec -it df358bc06b17 /bin/bash [rootdf358bc06b17 /]# ls bin etc lib lostfound mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [rootdf358bc06b17 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Aug11 pts/0 00:00:00 /bin/bash root 29 0 0 01:06 pts/1 00:00:00 /bin/bash root 43 29 0 01:06 pts/1 00:00:00 ps -ef 方式二 docker attach 容器id docker exec # 进入容器后开启一个新的终端可以在里面操作 docker attach # 进入容器正在执行的终端不会启动新的进程 ## 11.**从容器中拷贝文件到主机** docker cp 容器id容器内路径 目的地主机路径 [rootiZ2zeg4ytp0whqtmxbsqiiZ /]# docker cp 7af535f807e0:/home/Test.java /home ## 12.删除镜像 docker rmi ID docker rmi tag ## 13.如何从本地传文件进 docker 容器里面https://blog.csdn.net/qq_43257914/article/details/124731529?utm_mediumdistribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-1-124731529-null-null.pc_agg_new_rankutm_term%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E5%88%B0docker%E5%AE%B9%E5%99%A8spm1000.2123.3001.4430 sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 00e7d0f73704 ubuntu:20.04 “bash” 5 hours ago Up 5 hours planck-pi-env 传文件进docker指定路径 docker cp /路径/文件名 容器ID:/上传路径 sudo docker cp gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz 00e7d0f73704:/usr/share/ 从docker传文件到实体机 docker cp 容器ID:/上传路径 /路径/文件名 sudo docker cp 00e7d0f73704:/usr/local/arm/rootfs-debian/123.txt /usr/share/ ## 14.docker如何将运行中的容器保存为docker镜像使用docker commit和docker save保存镜像$ sudo docker commit 当前运行的container id 仓库名称: $ sudo docker save -o 仓库名称-.img 仓库名称: 示例如下: $ sudo docker ps 34750a2ca5e8 requarks/wiki:2 “docker-entrypoint.s…” 5 days ago Up About an hour 3443/tcp, 0.0.0.0:80-3000/tcp wiki_wiki_1 $ sudo docker commit 34750a2ca5e8 requarks/wiki:2.1 本地会生成新的镜像 将镜像保存为本地文件可以使用Docker save命令 docker save -o mssql-2019-with-cimb.tar mssql-2019-with-cimb 保存为一个单独的文件 从文件载入镜像 docker load --input mssql-2019-with-cimb.tar https://zhuanlan.zhihu.com/p/348849578## 15.上传到docker hub https://hub.docker.com/ 注册 lktlkt-VirtualBox:~/gitlab/xdevice-platform$ sudo docker login -u dockerzjf Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded 先给要推送的镜像打标签 sudo docker tag xdevice_ubuntu_test dockerzjf/xdv_demon:tag1.0 推送镜像 sudo docker push dockerzjf/xdv_demon:tag1.0 ## 16.docker网卡配置 查看docker网络配置显示所有网络模式包括自定义 docker network ls 查看某一网卡的详细信息可以到该网卡下所有容器网络信息(以bridge为例) docker inspect bridge 自定义网络模式创建 docker network create --subnet 网段 name 我们可以自定义一个网络 –driver bridge –subnet 192.168.0.0/16 可以支持255*255个网络 192.168.0.2 ~ 192.168.255.254 –gateway 192.168.0.1 [rootiZ2zeg4ytp0whqtmxbsqiiZ ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet 26a5afdf4805d7ee0a660b82244929a4226470d99a179355558dca35a2b983ec 删除自定义网络模式 docker network rm mynet 固定ip启动指定网络模式为自定义并且将ip固定 docker run -itd --name net01 --net mynet --ip 172.18.0.2 spring:1.0 让某一容器加入某一网络 docker network connect 网络名 容器名 https://blog.csdn.net/weixin_44861399/article/details/119086521https://blog.csdn.net/thlzjfefe/article/details/109169974 Docker内置这三个网络运行容器时你可以使用该来指定容器应连接到哪些网络。 我们在使用docker run创建Docker容器时可以用–network标志 选项指定容器的网络模式Docker有以下4种网络模式 host模式使用 --nethost 指定。 none模式使用 --netnone 指定。 bridge模式使用 --netbridge 指定默认设置。 container模式使用 --netcontainer:NAMEorID 指定。 ## 17 制作我自己的镜像Dockerfile参考狂神的教程使用官方的基础镜像安装好基础工具后。上传自己的镜像。到dockerhub 基础知识 每个保留关键字指令都是必须大写字母 执行从上到下顺序执行 表示注释 每个指令都会创建提交一个新的镜像层并提交 dockerFile是面向开发的 我们以后要发布项目 做镜像 就需要编写dockefile文件 这个文件十分简单 Docker镜像逐渐成为企业的交互标准必须要掌握 步骤开发部署 运维… 缺一不可 DockerFile 构建文件 定义了一切的步骤源代码 DockerImages 通过DockerFile构建生成的镜像 最终发布和运行的产品 Docker容器容器就是镜像运行起来提供服务器 ![请添加图片描述](https://img-blog.csdnimg.cn/direct/91aa7efec26a482ab9ccba29ed0608ba.png)![请添加图片描述](https://img-blog.csdnimg.cn/direct/164a709270454668a631db27149f99ae.png) FROM # 基础镜像一切从这里开始构建 MAINTAINER # 镜像是谁写的 姓名邮箱 现在换成 LABEL RUN # 镜像构建的时候需要运行的命令 ADD # 步骤 tomcat镜像 这个tomcat压缩包添加内容 WORKDIR # 镜像的工作目录 VOLUME # 挂载的目录 EXPOSE # 保留端口配置 CMD # 指定这个容器启动的时候要运行的命令只有最后一个会生效可被替代 ENTRYPOINT # 指定这个容器启动的时候要运行的命令 可以追加命令 ONBUILD # 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令触发指令 COPY # 类似ADD, 将我们文件拷贝到镜像中 ENV # 构建的时候设置环境变量 2. 通过这个文件构建镜像 命令 docker build -f dockerfile文件路径 -t 镜像名:[tag] . docker build -f mydockerfile-centos -t mycentos:0.1 . FROM ubuntu MAINTAINER zjf_ubuntu ENV MYPATH /home WORKDIR $MYPATH 镜像的工作目录 RUN apt-get update RUN apt-get install net-tools EXPOSE 80 CMD echo $MYPATH CMD echo “—end—” CMD /bin/bash 2. 通过这个文件构建镜像 命令 docker build -f dockerfile文件路径 -t 新的镜像名:[tag] . sudo docker build -f DockerFile_ubuntu_20.04 -t dockerzjf/ubuntu_test:tag1.0 . # docker-compose Compose 是一个用于定义和运行多容器 Docker 的工具。借助 Compose您可以使用 YAML 文件来配置应用程序的服务。使用 Compose 基本上分为三步1. 使用 Dockerfile 定义您的应用程序的环境 2. 使用 docker-compose.yml 定义组成您的应用程序的服务 3. 运行docker compose up启动并运行程序## compose 的诸多优点- 在单个主机上建立多个隔离环境Compose 使用项目名称将环境彼此隔离。您可以在多个不同的上下文中使用此项目名称。默认项目名称是项目目录的基本名称。您可以使用-p 命令行选项或 COMPOSE_PROJECT_NAME 环境变量设置自定义项目名称 。默认项目目录是 Compose 文件的基本目录。可以使用--project-directory 命令行选项自定义项目目录。 - 创建容器时保留卷数据 - 仅重新创建已更改的容器当您重新启动未更改的服务时Compose 会使用现有容器。 - 变量在环境之间组合重复使用## 多个配置文件我们可以为同一个项目配置多个compose文件使用多个 Compose 文件使您能够针对不同的环境或不同的工作流程自定义 Compose 应用程序。默认情况下Compose 读取两个文件docker-compose.yml和一个可选的docker-compose.override.yml文件。按照惯例docker-compose.yml包含您的基本配置。override.yml 文件顾名思义就是包含现有服务或全新服务的配置覆盖。如果在两个文件中都定义了服务Compose 会使用 override 进行合并配置。要使用多个覆盖文件或具有不同名称的覆盖文件您可以使用该-f选项来指定文件列表。Compose 按照在命令行中指定的顺序合并文件。当您使用多个配置文件时您必须确保文件中的所有路径都相对于基本 Compose 文件 指定的第一个 Compose 文件-fbash docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d接下来我们来具体看看docker-compse.yml有哪些具体的配置 一、version 版本信息定义关乎于docker的兼容性Compose 文件格式有3个版本,分别为1, 2.x 和 3.x 二、build 指定构建镜像的 dockerfile 的上下文路径或者详细配置对象。 version: 3.9 services:webapp:build: ./dir #指定路径或者更详细配置的写法 version: 3.9 services:webapp:build:context: ./dirdockerfile: Dockerfile-alternateargs:buildno: 1context 上下文路径可以是文件路径也可以是到链接到 git 仓库的 url。当是相对路径时它被解释为相对于 Compose 文件的位置。dockerfile 指定构建镜像的 Dockerfile 文件名args 构建参数只能在构建过程中访问的环境变量cache_from 缓存解析镜像列表labels 设置构建镜像的元数据network 设置网络容器连接none 表示在构建期间禁用网络shm_size 设置/dev/shm此构建容器的分区大小target 多阶段构建可以指定构建哪一层 三、network 默认情况下Compose为您的应用程序设置单个网络。services 服务的每个容器都加入默认网络并且可以被该网络上的其他容器访问。 您的应用程序网络的名称基于“项目名称”也就是其所在目录的名称。您可以使用 --project-name 命令行选项 或 COMPOSE_PROJECT_NAME 环境变量覆盖项目名称。 例如假设您的应用程序是在一个名为myapp目录下docker-compose.yml如下 version: 3.9 services:web:build: .ports:- 8000:8000db:image: postgresports:- 8001:5432运行docker-compose up会发生以下情况 创建了一个名为 myapp_default 的网络。把web加入网络。把db加入网络。 上面例子还有一个注意点就是端口号注意区分HOST_PORT和CONTAINER_PORT以上面的db为例 8001 是宿主机的端口5432postgres的默认端口 是容器的端口 当容器之间通讯时 是通过 CONTAINER_PORT 来连接的。 我们可以通过设置一级配置network自定义网络创建更复杂的网络选项也可以用来连接已经存在的网络不是通过compose创建的 每个service 配置下也可以指定networks配置来指定一级配置的网络。 version: 3 services:proxy:build: ./proxynetworks:- frontendapp:build: ./appnetworks:- frontend- backenddb:image: postgresnetworks:- backendnetworks:frontend:# Use a custom driverdriver: custom-driver-1backend:# Use a custom driver which takes special optionsdriver: custom-driver-2driver_opts:foo: 1bar: 2一级配置networks 创建了自定义的网络 。这里配置了两个frontend和backend 且自定义了网络类型。 每一个services下proxy , app , db都定义了networks配置。 proxy 只加入到 frontend网络。db 只加入到backend网络。app同时加入到 frontend和backend 。db和proxy不能通讯因为不在一个网络中。app和两个都能通讯因为app在两个网络中都有配置。db和proxy要通讯只能通过app这个应用来连接。 同一网络上的其他容器可以使用服务名称或别名来连接到其他服务的容器 services:some-service:networks:some-network:aliases:- alias1- alias3other-network:aliases:- alias2加入网络时还可以指定容器的静态 IP 地址。 version: 3.9services:app:image: nginx:alpinenetworks:app_net:ipv4_address: 172.16.238.10ipv6_address: 2001:3984:3989::10networks:app_net:ipam:driver: defaultconfig:- subnet: 172.16.238.0/24- subnet: 2001:3984:3989::/64一级networks还有如下这些配置 driver 指定该网络应使用哪个驱动程序。默认使用bridge单个主机上的网络overlay代表跨多个节点的网络群 driver: overlayhost or none 使用主机的网络堆栈或者不使用网络。相当于docker run --nethost或docker run --netnone。仅在使用docker stack命令时使用。如果您使用该docker-compose命令请改用 network_mode。driver_opts 将选项列表指定为键值对以传递给此网络的驱动程序 driver_opts:foo: barbaz: 1attachable 仅在driver设置为 overlay时可用。如果设置为true那么除了服务之外独立容器也可以连接到此网络。 networks:mynet1:driver: overlayattachable: trueenable_ipv6 在此网络上启用 IPv6 网络。ipam 自定义 IPAM IP地址管理配置。 ipam:driver: defaultconfig:- subnet: 172.28.0.0/16internal 默认情况下Docker 会将桥接网络连接到它提供外部连接。如果要创建外部隔离的覆盖网络可以将此选项设置为true。labels 添加元数据external如果设置为true则指定此网络是在 Compose 之外创建的。docker-compose up不会尝试创建它如果它不存在则会引发错误。在下面的例子中proxy是通往外界的门户。 version: 3.9services:proxy:build: ./proxynetworks:- outside- defaultapp:build: ./appnetworks:- defaultnetworks:outside:external: truename为此网络设置自定义名称。 version: 3.9 networks:network1:name: my-app-net四、cap_add, cap_drop 添加或删除容器功能。 cap_add:- ALLcap_drop:- NET_ADMIN- SYS_ADMIN五、cgroup_parent 为容器指定一个可选的父 cgroup。 cgroup_parent: m-executor-abcd六、command 覆盖容器启动后默认执行的命令 command: bundle exec thin -p 3000 command: [bundle, exec, thin, -p, 3000]七、configs 为每个服务赋予相应的configs访问权限 简短语法指定配置名称即可。以下示例授予redis服务访问my_config和my_other_configconfigs 的权限。 version: 3.9 services:redis:image: redis:latestdeploy:replicas: 1configs:- my_config- my_other_config configs:my_config:file: ./my_config.txtmy_other_config:external: true长语法 source配置名称 - target要挂载文件的路径和名称 - uid和gid容器的数字 UID 或 GID - mode挂载在服务的任务容器中的文件的权限以八进制表示。例如0444 代表可读。 - 以下示例在容器内设置configs名称为my_config 路径为redis_config将模式设置为0440组可读并将用户和组设置为103。该redis服务无权访问my_other_config配置。 version: 3.9 services:redis:image: redis:latestdeploy:replicas: 1configs:- source: my_configtarget: /redis_configuid: 103gid: 103mode: 0440 configs:my_config:file: ./my_config.txtmy_other_config:external: true一级configs详细配置 file: 使用指定路径中的文件内容创建配置。external: 如果设置为 true则指定此配置已经创建。Docker 不会尝试创建它如果它不存在 会报错config not found。name: Docker 中配置对象的名称。此字段可用于引用包含特殊字符的配置。driver和driver_opts自定义驱动程序的名称以及作为键/值对传递的特定于驱动程序的选项。template_driver要使用的模板驱动程序的名称它控制是否以及如何将配置负载作为模板。如果未设置驱动程序则不使用模板。当前支持的唯一驱动程序是golang它使用golang。 在下面例子中my_first_config是通过confif_data文件内容创建的就像 stack_name_my_first_config)部署堆栈时一样并且my_second_config已经创建过。 configs:my_first_config:file: ./config_datamy_second_config:external: true 当 Docker 中的配置名称与服务中存在的名称不同时可以使用name进行配置。 configs:my_first_config:file: ./config_datamy_second_config:external:name: redis_config八、container_name 指定自定义容器名称而不是生成的默认名称。由于 Docker 容器名称必须是唯一的因此如果您指定了自定义名称则不能将服务扩展到 1 个以上的容器。 九、credential_spec 为托管服务帐户配置凭据规范。此选项仅用于使用 Windows 容器的服务。在credential_spec上的配置列表格式为file://filename或registry://value-name 十、depends_on 表示服务之间的依赖关系。服务依赖会导致以下行为 docker-compose up按依赖顺序启动服务。在下面的例子中db和redis在 web之前启动。docker-compose up SERVICE自动包含SERVICE的依赖项。在下面的示例中docker-compose up web还创建并启动db和redis。docker-compose stop按依赖顺序停止服务。在以下示例中web在db和redis之前停止。 version: 3.9 services:web:build: .depends_on:- db- redisredis:image: redisdb:image: postgres十一、deploy 指定与服务的部署和运行有关的配置。只在 swarm 模式下才会有用。 endpoint_mode 访问集群服务的方式。 vip Docker 集群服务一个对外的虚拟 ip。所有的请求都会通过这个虚拟 ip 到达集群服务内部的机器。dnsrr DNS 轮询DNSRR。所有的请求会自动轮询获取到集群 ip 列表中的一个 ip 地址。 labels 在服务上设置标签。可以用容器上的 labels跟 deploy 同级的配置 覆盖 deploy 下的 labels。 mode 指定服务提供的模式 global全局服务服务将部署至集群的每个节点。replicated复制服务复制指定服务到集群的机器上。 placement 指定约束和首选项的位置 version: 3.9 services:db:image: postgresdeploy:placement:constraints:- node.rolemanager- engine.labels.operatingsystemubuntu 18.04preferences:- spread: node.labels.zone您可以通过定义约束表达式来限制可以安排任务的节点集。约束表达式可以使用匹配() 或排除(!) 规则。多个约束查找可以使用 AND 匹配。约束可以匹配节点或 Docker 引擎标签如下所示 节点属性匹配例子node.id节点 IDnode.id2ivku8v2gvtg4node.hostname节点主机名node.hostname!node-2node.role节点角色 ( manager/ worker)node.rolemanagernode.platform.os节点操作系统node.platform.oswindowsnode.platform.arch节点架构node.platform.archx86_64node.labels用户定义的节点标签node.labels.securityhighengine.labelsDocker 引擎的标签engine.labels.operatingsystemubuntu-14.04 max_replicas_per_node 如果服务是replicated默认值则限制任何时间在节点上运行的副本数replicas 如果服务是replicated默认值指定在任何给定时间应运行的容器数量。resources 配置资源约束。在下面示例中redis服务被限制为使用不超过 50M 的内存和0.50单核的 50%可用处理时间 (CPU)并保留20M内存和0.25CPU 时间始终可用。 version: 3.9 services:redis:image: redis:alpinedeploy:resources:limits:cpus: 0.50memory: 50Mreservations:cpus: 0.25memory: 20Mrestart_policy 配置是否以及如何在退出时重新启动容器。替换restart condition: none, on-failure 或 any (默认: any) 之一。delay重新启动尝试之间等待的时间默认值5s。max_attempts在放弃之前尝试重新启动容器的次数默认值永不放弃。如果在配置的窗口window内重新启动未成功则此尝试不计入配置max_attempts值。例如如果 max_attempts 设置为“2”并且第一次尝试重启失败则可能会尝试两次以上的重启。window在决定重启是否成功之前等待多长时间默认值立即重启。 rollback_config 在更新失败的情况下应如何回滚服务。 parallelism一次回滚的容器数量。如果设置为 0则所有容器同时回滚。delay每个容器组回滚之间等待的时间默认为 0 秒。failure_action: 如果回滚失败怎么办。continue或者pause默认pausemonitor每次任务更新后监控失败的持续时间(ns|us|ms|s|m|h)默认 5s注意设置为 0 将使用默认 5s。max_failure_ratio回滚期间允许的故障率默认为 0。order回滚期间的操作顺序。stop-first旧任务在开始新任务之前停止或start-first首先启动新任务并且正在运行的任务短暂重叠默认stop-first。 update_config 配置应如何更新服务。用于配置滚动更新。 parallelism一次更新的容器数量。delay更新一组容器之间的等待时间。failure_action: 如果更新失败怎么办。continuerollback或者pause 默认pause。monitor每次任务更新后监控失败的持续时间(ns|us|ms|s|m|h)默认 5s注意设置为 0 将使用默认 5s。max_failure_ratio更新期间可容忍的故障率。order更新期间的操作顺序。stop-first旧任务在开始新任务之前停止或start-first新任务首先启动并且正在运行的任务短暂重叠默认stop-first 十二、devices 设备映射列表。使用与--devicedocker 客户端创建选项格式相同。 devices:- /dev/ttyUSB0:/dev/ttyUSB0十三、dns 自定义 DNS 服务器。可以是单个值或列表。 dns: 8.8.8.8 dns:- 8.8.8.8- 9.9.9.9十四、dns_search 自定义 DNS 搜索域。可以是单个值或列表。 dns_search: example.com dns_search:- dc1.example.com- dc2.example.com十五、entrypoint 在 Dockerfile 中有一个指令叫做ENTRYPOINT指令用于运行程序。在docker-compose.yml中可以定义覆盖 Dockerfile 中定义的 entrypoint entrypoint: /code/entrypoint.sh entrypoint: [php, -d, memory_limit-1, vendor/bin/phpunit]十六、env_file 从文件添加环境变量。可以是单个值或列表。 如果您使用指定了 Compose 文件docker-compose -f FILE则其中的路径 env_file相对于该文件所在的目录。 environment 声明的环境变量会覆盖这些值——即使这些值是空的或未定义的。 env_file: .env env_file:- ./common.env- ./apps/web.env- /opt/runtime_opts.env十七、environment 添加环境变量。您可以使用数组或字典。任何布尔值true、false、yes、no都需要用引号括起来以确保它们不会被 YML 解析器转换为 True 或 False。 一般 arg 标签的变量仅用在构建过程中。而environment和 Dockerfile 中的ENV指令一样会把变量一直保存在镜像、容器中类似docker run -e的效果 environment:RACK_ENV: developmentSHOW: trueSESSION_SECRET:environment:- RACK_ENVdevelopment- SHOWtrue- SESSION_SECRET十八、expose 暴露端口但不映射到宿主机只被连接的服务访问。这个标签与 Dockerfile 中的EXPOSE指令一样用于指定暴露的端口但是只是作为一种参考实际上docker-compose.yml的端口映射还得ports这样的标签。 十九、external_links 链接到 docker-compose.yml 外部的容器甚至 并非 Compose 项目文件管理的容器。 external_links:- redis_1- project_db_1:mysql- project_db_1:postgresql二十、extra_hosts 添加主机名映射。使用与 docker 客户端--add-host类似。 extra_hosts:- somehost:162.242.195.82- otherhost:50.31.209.229会往/etc/hosts文件中添加一些记录启动之后查看容器内部 hosts可以看到 162.242.195.82 somehost 50.31.209.229 otherhost二十一、healthcheck 配置运行的检查以确定此服务的容器是否“健康”。 healthcheck:test: [CMD, curl, -f, http://localhost]interval: 1m30stimeout: 10sretries: 3start_period: 40sintervaltimeout 和 start_period都是持续时间。test必须是字符串或列表。如果是列表则第一项必须是NONE,CMD或CMD-SHELL。如果是字符串则相当于指定CMD-SHELL后跟该字符串。 # Hit the local web app test: [CMD, curl, -f, http://localhost] test: [CMD-SHELL, curl -f http://localhost || exit 1] test: curl -f https://localhost || exit 1如果需要禁用镜像的所有检查项目可以使用disable:true相当于test:[NONE] healthcheck:disable: true 二十二、image 从指定的镜像中启动容器可以是存储仓库、标签以及镜像 ID 二十三、init 在容器内运行一个 init 来转发信号和取得进程。将此选项设置true为服务启用此功能。 version: 3.9 services:web:image: alpine:latestinit: true二十四、isolation 指定容器的隔离技术。在 Linux 上唯一支持的值是default。在 Windows 上可接受的值为default、process和hyperv。 二十五、labels 使用 Docker 标签将元数据添加到容器可以使用数组或字典。与 Dockerfile 中的LABELS类似 labels:- com.example.descriptionAccounting webapp- com.example.departmentFinance- com.example.label-with-empty-valuelabels:com.example.description: Accounting webappcom.example.department: Financecom.example.label-with-empty-value: 二十六、links 链接到另一个服务中的容器。指定服务名称和链接别名 (SERVICE:ALIAS)或仅指定服务名称。 它们不需要启用服务进行通信 - 默认情况下任何服务都可以以该服务的名称访问任何其他服务。在以下示例中web可以访问db并且设置别名为database version: 3.9 services:web:build: .links:- db:databasedb:image: postgres二十七、logging 日志记录配置。 version: 3.9 services:some-service:image: some-servicelogging:driver: json-fileoptions:max-size: 200kmax-file: 10 network_mode二十八、network_mode 网络模式。使用与 docker 客户端--network相同可以使用特殊形式service:[service name]。 network_mode: bridge network_mode: host network_mode: none network_mode: service:[service name] network_mode: container:[container name/id]二十九、pid 将 PID 模式设置为主机 PID 模式。这会在容器和主机操作系统之间共享 PID 地址空间。使用此标志启动的容器可以访问和操作裸机命名空间中的其他容器反之亦然。 pid: host三十、ports 暴露端口。 简短语法 共有三种写法 指定两个端口 ( HOST:CONTAINER)仅指定容器端口为主机端口选择了一个临时主机端口。指定要绑定到两个端口的主机 IP 地址默认为 0.0.0.0表示所有接口( IPADDR:HOSTPORT:CONTAINERPORT)。如果 HOSTPORT 为空例如127.0.0.1::80则会选择一个临时端口来绑定到主机上。 ports:- 3000- 3000-3005- 8000:8000- 9090-9091:8080-8081- 49100:22- 127.0.0.1:8001:8001- 127.0.0.1:5000-5010:5000-5010- 127.0.0.1::5000- 6060:6060/udp- 12400-12500:1240长语法 target: 容器内的端口published: 公开的端口protocol端口协议tcp或udpmodehost用于在每个节点上发布主机端口或ingress用于负载平衡的群模式端口。 ports:- target: 80published: 8080protocol: tcpmode: host三十一、profiles 允许通过有选择地启用服务来针对各种用途和环境调整 Compose 应用程序模型。这是通过将每个服务分配给单个或多个配置文件来实现的。如果未分配则始终启动该服务但如果已分配则仅在激活配置文件时才启动。 这允许人们在单个docker-compose.yml文件中定义额外的服务这些服务应该只在特定场景中启动例如用于调试或开发任务。 profiles: [frontend, debug] profiles:- frontend- debug三十二、restart no是默认的重启策略在任何情况下都不会重启容器。当always指定时容器总是重新启动。on-failure如果退出代码指示失败错误则该策略会重新启动容器。unless-stopped总是重新启动容器除非容器停止手动或其他方式。 restart: no restart: always restart: on-failure restart: unless-stopped三十三、secrets 为每个服务机密授予相应的访问权限 简短语法 简短的语法仅指定机密名称。 以下示例授予redis服务对my_secret和my_other_secret机密的访问权限。./my_secret.txt文件的内容被设置为 my_secretmy_other_secret被定义为外部机密这意味着它已经在Docker中定义无论是通过运行docker secret create命令还是通过另一个堆栈部署都不会重新创建。如果外部机密不存在堆栈部署将失败并显示secret not found错误。 version: 3.9 services:redis:image: redis:latestdeploy:replicas: 1secrets:- my_secret- my_other_secret secrets:my_secret:file: ./my_secret.txtmy_other_secret:external: true长语法 source定义机密标识符。target要挂载在/run/secrets/服务的任务容器中的文件的名称默认是 source。uid和gid/run/secrets/在服务的任务容器中拥有文件的数字 UID 或 GID 。mode要挂载在/run/secrets/ 服务的任务容器中的文件的权限以八进制表示法。例如0444 代表可读。 下面的示例表示将my_secret 命名为redis_secret模式为0440组可读和用户组为103。该redis服务无权访问该my_other_secret机密。 version: 3.9 services:redis:image: redis:latestdeploy:replicas: 1secrets:- source: my_secrettarget: redis_secretuid: 103gid: 103mode: 0440 secrets:my_secret:file: ./my_secret.txtmy_other_secret:external: true一级secrets详细配置 file使用指定路径中的文件内容创建机密。external如果设置为 true则指定此机密已创建。Docker 不会尝试创建它如果它不存在 会报错secret not found。nameDocker 中秘密对象的名称。此字段可用于引用包含特殊字符的机密。template_driver要使用的模板驱动程序的名称它控制是否以及如何将机密负载评估为模板。如果未设置驱动程序则不使用模板。当前支持的唯一驱动程序是golang它使用golang。 在本示例中my_first_secret在stack_name_my_first_secret 部署堆栈时创建 并且my_second_secret已存在于 Docker 中。 secrets:my_first_secret:file: ./secret_datamy_second_secret:external: true 三十四、security_opt 为每个容器覆盖默认的标签。简单说来就是管理全部服务的标签比如设置全部服务的 user 标签值为USER security_opt:- label:user:USER- label:role:ROLE 三十五、stop_grace_period 指定在尝试停止容器时等待多长时间。 在docker stop命令执行的时候会先向容器中的进程发送系统信号SIGTERM然后等待容器中的应用程序终止执行。如果等待时间达到设定的超时时间或者默认的10秒会继续发送SIGKILL的系统信号强行kill掉进程。 在容器中的应用程序可以选择忽略和不处理SIGTERM信号不过一旦达到超时时间程序就会被系统强行kill掉因为SIGKILL信号是直接发往系统内核的应用程序没有机会去处理它。 stop_grace_period: 1s默认情况下stop在发送 SIGKILL 之前等待容器退出 10 秒。 三十六、stop_signal 设置一个替代信号来停止容器。默认情况下stop使用 SIGTERM。使用stop_signal设置替代信号来stop。 stop_signal: SIGUSR1三十七、sysctls 在容器中设置的内核参数可以为数组或字典 sysctls:net.core.somaxconn: 1024net.ipv4.tcp_syncookies: 0三十八、tmpfs 在容器内挂载一个临时文件系统。可以是单个值或列表。 tmpfs: /run tmpfs:- /run- /tmp三十九、ulimits 设置当前进程以及其子进程的资源使用量覆盖容器的默认限制可以单一地将限制值设为一个整数也可以将soft/hard限制指定为映射 ulimits:nproc: 65535nofile:soft: 20000hard: 40000四十、userns_mode 如果 Docker 守护程序配置了用户命名空间则禁用此服务的用户命名空间。 userns_mode: host四十一、volumes 挂载一个目录或者一个已存在的数据卷容器可以直接使用HOST:CONTAINER这样的格式或者使用HOST:CONTAINER:ro这样的格式后者对于容器来说数据卷是只读的这样可以有效保护宿主机的文件系统 您可以将主机路径挂载为单个服务定义的一部分无需在一级volumes键中定义它。 但是如果您想在多个服务中重用一个卷则需要在一级volumes 中定义一个命名卷。 如下实例web 服务使用命名卷 (mydata)以及为单个服务定义的绑定安装dbservice下的第一个路径volumes。db服务还使用名为dbdatadbservice下的第二个路径volumes的命名卷使用了旧字符串格式定义它以安装命名卷。命名卷必须列在顶级volumes键下。 version: 3.9 services:web:image: nginx:alpinevolumes:- type: volumesource: mydatatarget: /datavolume:nocopy: true- type: bindsource: ./statictarget: /opt/app/staticdb:image: postgres:latestvolumes:- /var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock- dbdata:/var/lib/postgresql/datavolumes:mydata:dbdata:简短语法 简短语法使用通用[SOURCE:]TARGET[:MODE]格式其中 SOURCE可以是主机路径或卷名。TARGET是安装卷的容器路径。标准模式ro用于只读和rw读写默认。 您可以在主机上挂载一个相对路径该路径相对于正在使用的 Compose 配置文件的目录展开。相对路径应始终以.或开头..。 volumes:# Just specify a path and let the Engine create a volume- /var/lib/mysql# Specify an absolute path mapping- /opt/data:/var/lib/mysql# Path on the host, relative to the Compose file- ./cache:/tmp/cache# User-relative path- ~/configs:/etc/configs/:ro# 命名卷- datavolume:/var/lib/mysql长语法 type: 安装类型 bind,tmpfs或npipesource: 安装源、主机上用于绑定安装的路径或在顶级volumes 中定义的卷的名称 。不适用于 tmpfs 挂载。target安装卷的容器中的路径read_only: 将卷设置为只读的标志bind: 配置额外的绑定选项 propagation用于绑定的传播模式 volume: 配置额外的选项 nocopy: 创建卷时禁用从容器复制数据的标志 tmpfs: 配置额外的 tmpfs 选项 sizetmpfs 挂载的大小以字节为单位 version: 3.9 services:web:image: nginx:alpineports:- 80:80volumes:- type: volumesource: mydatatarget: /datavolume:nocopy: true- type: bindsource: ./statictarget: /opt/app/staticnetworks:webnet:volumes:mydata:一级 Volume 详细配置 driver 指定该卷应使用哪个卷驱动程序driver_opts 将选项列表指定为键值对以传递给此卷的驱动程序 volumes:example:driver_opts:type: nfso: addr10.40.0.199,nolock,soft,rwdevice: :/docker/exampleexternal 如果设置为true则指定该卷是在 Compose 之外创建的labels 添加元数据name 为此卷设置自定义名称 version: 3.9 volumes:data:name: my-app-data四十二、变量置换 你可以使用 V A R I A B L E ∗ ∗ 或者 ∗ ∗ VARIABLE** 或者 ** VARIABLE∗∗或者∗∗{VARIABLE} 来置换变量 ${VARIABLE:-default}VARIABLE在环境中未设置或为空时设置为default。${VARIABLE-default}仅当VARIABLE在环境中未设置时才设置为default。${VARIABLE:?err}退出并显示一条错误消息其中包含环境中的errif VARIABLE未设置或为空。${VARIABLE?err}退出并显示一条错误消息其中包含errif VARIABLE在环境中未设置。如果想使用一个不被compose处理的变量可用使用 $$ 更换dockerhub源 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF {registry-mirrors: [https://ur1ulb7a.mirror.aliyuncs.com] } EOF启动docker sudo systemctl daemon-reload sudo systemctl restart docker 讲上面指令sudo systemctl restart docker 换成如下指令就可以了。sudo snap restart dockerhttps://blog.csdn.net/farkuai/article/details/127711847其他使用记录 解决容器关闭需要10S的问题C程序需要添加对信号的捕获处理void Stop(int signo) {LOG(INFO) oops! stop!!! ;exit(0); }signal(SIGTERM, Stop);解决docker-compose 启动应用环境变量不生效docker-compose.yml 加下面这个environment:- LD_LIBRARY_PATH/root/xdevice:$LD_LIBRARY_PATH 解决文件传递问题直接往容器里面传输文件。linux传递文件会失败ssh容器重启自启动,这个和关闭需要10S的问题冲突了
http://www.pierceye.com/news/891242/

相关文章:

  • 福田区住房和建设局官方网站wordpress仿凡客商城主题
  • 做下载网站用什么程序好深圳公司注册服务
  • 猎头网站模板济源专业网站建设(制作网站)
  • kotlin做网站单页应用网站
  • 邢台网站改版开发长沙教育网站开发
  • 网站开发人员必备技能网站背景图片自动切换
  • 企业网站建立策划书有网站吗给一个
  • 外贸建站有哪些公司建设主管部门网站查询
  • 泰安市网站建设广州优化公司哪家好
  • 手机网游传奇西安关键词优化平台
  • 网站建设公司权威机构3d虚拟人物制作软件
  • 北京网站建设seo公司哪家好阿里巴巴企业邮箱登录入口
  • 广州shopify代建站新产品代理
  • html5网站特点在线搜索引擎
  • 网站搭建服务平台网站备案 关闭网站
  • 高端建站收费标准宣传设计网站
  • 视频网站数据库设计手机企业网站设计
  • 广安发展建设集团有限公司门户网站竞价推广代运营服务
  • 济南mip网站建设公司山西住房建设厅网站
  • 兰州需要做网站的公司有哪些做词云的网站
  • 红酒公司网站建设模板6841如何通过网站获取qq
  • 写一张营销型网站页面多长时间微动漫怎么制作
  • 网站架构设计师月薪多少柳州团购网站建设
  • 深圳宝安沙井网站建设网络营销推广主要做什么?有哪些方法和技巧?
  • 图书馆门户网站建设的意义开票 网站建设
  • 如何用家用电脑做网站wordpress的伪静态
  • 东营市城市和建设管理局网站网络基础知识点
  • 怎么制作网站链接转发视频网页游戏开服表怎么取消
  • 360网站seo怎么做北京商场关闭通知
  • 连云港建设公司网站工程承包信息