Docker 基本概念
Windows 装置 Docker
- 下载
- 注册
关上CMD
或Powershell
就能够欢快的游玩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时要设置:
协定追随回源