Docker 基本概念

Windows 装置 Docker

  • 下载
  • 注册

关上CMDPowershell就能够欢快的游玩Docker了

Ubuntu 装置 Docker

// Ubuntu 自带docker.io源sudo apt install docker.io -y

常用命令

// 根本docker version // 查看版本详情docker -v      // 查看版本简略版// 搜寻docker search ubuntu// 拉取docker pull ubuntu:latest // tag:最新版docker images             // 查看本地镜像// 创立(相似装置零碎)docker run -it -p 8080:8080 ubuntu /bin/bash  // -it示意关上并放弃stdout,并调配一个终端(pseudo-tty)docker run -d -p 80:80 --name [myname] nginx// 退出exit                     // 容器敞开,状态为:Exit快捷键 ctrl+p ctrl+q     // 后盾运行,状态为:Updocker ps -a             // 查看状态// 操作容器docker start CONTAINERID              // 启动docker stop CONTAINERID               // 进行docker restart CONTAINERID            // 重启docker attach CONTAINERID             // 进入docker exec -it CONTAINERID /bin/bash // 进入(如创立时未it)// 提交镜像到本地仓库docker commit -m "msg" -a "Author" CONTAINERID 用户名/仓库名:tag// 删除镜像docker rm CONTAINERID  // 必须先删除所有容器docker rmi IMAGESID    // 接着删除镜像// 提交镜像到hubdocker push 用户名/仓库名:tag

Dockerfile罕用参数

FROM        // 指定构建镜像的根底源镜像MAINTAINER  // 维护者的信息RUN         // 在以后镜像根底上执行指定命令CMD         // 启动容器时提供一个默认的命令执行选项EXPOSE      // 服务端容器对外映射的本地端口ENV         // 指定一个环节变量,会被后续RUN指令应用,并在容器运行时保留ADD         // 复制本地主机文件、目录或者近程文件URLS从并且增加到容器指定门路中,反对正则含糊匹配COPY        // 复制新文件或者目录从并且增加到容器指定门路中 VOLUME      // 创立一个能够从本地主机或其余容器挂载的挂载点WORKDIR     // 为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。能够使  用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指  定的门路// 构建镜像docker build -t name 目录 // 当前目录用`.`示意

WSL相干问题

关上PowerShell,运行:

ubuntu config --default-user root  // 默认root登录// 进入ubuntu零碎,设置默认连贯windows的守护过程vi ~/.bashrc                               // 关上export DOCKER_HOST=tcp://127.0.0.1:2375    // 最初一行增加source ~/.bashrc                           // 运行下

docker-compose.yml罕用参数

version: "3"services:  web:                              # 自定义服务名叫web    image: username/repo:tag    deploy:      replicas: 5                   # 运行5个实例作为一个服务      resources:        limits:          cpus: "0.1"               # 每个实例最多应用10%CPU          memory: 50M               # 每个实例最多应用50MB的RAM      restart_policy:        condition: on-failure       # 如果容器出错,立刻重启    ports:      - "4000:80"    networks:      - webnet                      # 负载平衡网络networks:  webnet:

Swarm 常用命令

// 根本docker swarm init                                // 初始化swarmdocker stack deploy -c docker-compose.yml name   // 部署新堆栈或更新现有堆栈docker stack ls                                 // 列呈现有堆栈docker service ls                               // 查看服务docker service ps name                          // 查看实例docker container ls -q                          // 查看所有容器iddocker stack rm name                            // 退出程序docker swarm leave --force                      // 退出swarmsystemctl restart docker                        // 重启swarm

应用UI工具 - Portainer

# 初始化 swarm 集群  docker swarm init --advertise-addr [IP地址] # 创立 portainer 挂载目录mkdir -p /home/portainer# 以 swarm service 建设 portainer 治理 docker service create \--name portainer \--publish 9000:9000 \--replicas=1 \--constraint 'node.role == manager' \--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \--mount type=bind,src=//home/portainer,dst=/data \portainer/portainer-ce \-H unix:///var/run/docker.sock

应用阿里云镜像库

# 登陆docker login --username=master@bingblue.com registry.cn-shanghai.aliyuncs.com# 提交docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/bingblue/[镜像名]:[镜像版本号]docker push registry.cn-shanghai.aliyuncs.com/bingblue/[镜像名]:[镜像版本号]

Docker images 版本辨别

  • alpine: linux发行版,只有5M,简直无软件仓库反对
  • stretch: Debian 9 的代号,2017年发行
  • jessie: Debian 8 的代号,2015年发行
  • wheezy: Debian 7 的代号,2013年发行
  • slim: 瘦身版,比方xxx-jessie-slim就是基于jessie的瘦身版
  • perl: nginx反对perl模块的版本
  • mainline: nginx目前主力在做的版本,能够说是开发版
  • stable: 稳定版
  • chakracore: 基于Edge浏览器的ChakraCore引擎的node版本

总结:举荐应用alpine,其次举荐slim

实战:我的项目部署

一、编写docker-compose.yml文件

version: '3.6'services:  # nginx 略...  # mysql 略...  # xbjh_admin 略...  # xbjh 略...networks:  bingblue:    driver: overlay    ipam:      driver: default      config:        - subnet: 10.88.0.0/16

而后上传到服务器,目录/root/yml/docker-compose.yml

二、部署

# 初始化Swarm集群docker swarm init --advertise-addr [IP地址]# 创立目录mkdir nginx             // 并在此目录下上传Nginx配置文件 default.confmkdir mysqlmkdir xbjh_adminmkdir xbjh_admin/filemkdir xbjh_admin/log# 登陆阿里云公有库账号docker login --username=master@bingblue.com registry.cn-shanghai.aliyuncs.com# 进入yml目录cd /root/yml# 部署新堆栈或更新现有堆栈docker stack deploy -c docker-compose.yml [堆栈名称] --with-registry-auth

三、我的项目更新

# 批改docker-compose.yml并上传cd /root/yml# 更新现有堆栈docker stack deploy -c docker-compose.yml xbjh --with-registry-auth# 独自重启某个Servicedocker service update --force [Service ID]

四、注意事项

  • ✅ 记得阿里云配置平安组入方向规定
  • ✅ 配置HTTPS和CDN时要设置: 协定追随回源