栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Mu教程系列:Docker(一)初识

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mu教程系列:Docker(一)初识

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     // 后台运行,状态为:Up
docker 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    // 接着删除镜像

// 提交镜像到hub
docker 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                                // 初始化swarm
docker stack deploy -c docker-compose.yml name   // 部署新堆栈或更新现有堆栈

docker stack ls                                 // 列出现有堆栈
docker service ls                               // 查看服务
docker service ps name                          // 查看实例
docker container ls -q                          // 查看所有容器id
docker stack rm name                            // 退出程序
docker swarm leave --force                      // 退出swarm
systemctl 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.conf
mkdir mysql
mkdir xbjh_admin
mkdir xbjh_admin/file
mkdir 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

# 单独重启某个Service
docker service update --force [Service ID]
四、注意事项
  • ✅ 记得阿里云配置安全组入方向规则
  • ✅ 配置HTTPS和CDN时要设置: 协议跟随回源
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/940068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号