最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Docker 简介及使用

    正文概述 掘金(不梨)   2021-02-02   689

    Docker 简介

    • docs.docker.com/
    docker run --name nginx-test -p 8080:80 -d nginx
    
    docker run --rm -d -p 40001:3000 jayfong/yapi:play
    # 默认的管理员账号:admin@docker.yapi,管理员密码:adm1n
    

    什么是 Docker

    • Docker 是一个集打包、运行、测试、发布于一体的开放式平台
    • 我们可以把开发过程中的基础设施分离出来部署到 Docker
      • DevOps:开发、构建、自动化部署、测试、文档
      • GitLib、Jenkins
      • Nginx、Apache
      • MySQL、MongoDb
      • 文档管理工具
    • 使用 Docker 可以避免复杂的应用环境配置,并以秒级的速度开启
    • 支持绝大多数平台,容器的性能开销极低

    Docker 应用场景

    • Web 应用的自动化打包和发布
    • 自动化测试和持续集成、发布
    • 在服务型环境中部署和调整数据库或其他的后台应用

    Docker 核心概念

    • Docker Daemon 守护进程
      • Docker Daemon 是 Docker 的守护进程
      • Docker Client 通过命令行与 Docker Daemon 通信完成 Docker 相关操作
    • Docker Client 客户端
      • 通过终端和用户交互
      • 终端中输入指令,Docker 客户端把指令传递给 Docker Daemon
    • Docker Image 镜像
      • 可以认为是一个最小版本的 Linux 系统的镜像,包含了所需的文件系统和一些配置好的应用
      • 需要通过容器来加载镜像
      • 是静态的,可以和面向对象中类对比
    • Docker Container 容器
      • 通过镜像创建一个容器
      • 可以创建多个容器,每一个容器都会开启一个进程,多个容器之间是相互隔离的
      • 是动态的,可以和面向对象的实例对比

    Docker 体系结构

    • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器

    Docker 简介及使用

    Docker 和虚拟机的区别

    • 虚拟机是硬件级虚拟化,每一个虚拟机内部都要分割系统资源,需要虚拟出虚拟硬件
    • Docker 是系统级虚拟化,容器共享系统资源,不会虚拟出硬件

    Docker 简介及使用

    • 官网的说明

      • www.docker.com/resources/w…
    • 容器技术和虚拟机区别

    Docker 简介及使用

    安装 Docker

    参考文档

    • docs.docker.com/install/

    • www.runoob.com/docker/cent…

    • 启动和停止 Docker

    systemctl start docker
    systemctl stop docker
    # 开机启动
    systemctl enable docker
    # 立即运行并开机启动
    systemctl enable --now docker
    
    • 跑一个 Hello world
    docker run hello-world
    
    # 1. Docker client 连接 Docker daemon
    # 2. Docker daemon 从 Docker Hub 拉取'hello world'的镜像
    # 3. Docker daemon 基于拉取的镜像创建一个容器
    # 4. Docker daemon 将容器中的应用执行的结果发送给 Docker client,并打印到终端
    

    镜像加速

    Docker 获取镜像的时候,默认从 Docker hub 获取,服务器在国外所以国内下载会很慢,我们可以设置成国内的镜像地址,类似于 npm

    • 参考文档
      • www.runoob.com/docker/dock…
    • 常用的国内镜像地址
      • docker.mirrors.ustc.edu.cn
      • almtd3fa.mirror.aliyuncs.com
      • registry.docker-cn.com
    • 获取镜像的时候,指定地址
    docker run hello-world --registry-mirror=https://docker.mirrors.ustc.edu.cn
    
    docker run hello-world --registry-mirror=https://almtd3fa.mirror.aliyuncs.com
    
    • 配置中设置镜像地址
      • 在 /etc/docker/daemon.json 文件中设置以下内容
    {"registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com", "https://registry.docker-cn.com"]}
    
    • 重启服务
    systemctl daemon-reload
    systemctl restart docker
    

    Docker 基本使用

    Docker 镜像使用

    • www.runoob.com/docker/dock…
    • 通过 Docker Hub 网站查找镜像
      • hub.docker.com/
    • 常用命令
    # 查看本地镜像
    docker images
    
    # 启动、停止和重启指定的容器
    docker start/stop/restart 容器id
    
    # 查看正在执行的容器
    docker ps
    
    # 查看所有容器
    docker ps -a
    
    # 获取一个镜像
    # 如果指定镜像版本 centos:latest, 默认就是最新版本
    docker pull centos
    
    # 删除镜像
    docker rmi hello-world
    
    # 删除容器
    docker rm 容器名
    
    # 为镜像设置一个新的 tag
    # image id -> 860c279d2fec
    # 镜像的用户名 -> lfz
    # 镜像名称 -> centos
    # tag -> dev
    docker tag 860c279d2fec lfz/centos:dev
    

    容器使用

    • 使用镜像创建一个容器
    # 以 centos 镜像启动一个容器
    # 参数说明: -i 交互式操作,-t 终端,centos 镜像名称,/bin/bash 镜像运行以后执行的命令 打开终端 
    docker run -it centos /bin/bash
    
    # 不同镜像的用户是不一样的,启动镜像的参数也不同
    # 参数说明:-d 后台运行,--name nginx-server 容器的名字
    # 说明:-p 映射容器中的端口,宿主机端口:容器端口,nginx 镜像名称
    docker run -d --name nginx-server -p 8080:80 nginx
    
    • 常用命令
    # 查看所有容器
    # 不加参数 -a 查看所有运行中的容器
    docker ps -a
    
    # 查看运行中容器的状态
    docker stats 
    
    # 启动容器,参数可以是容器id,或者容器名称
    docker start nginx-server
    
    # 停止、重启、删除容器
    docker stop nginx-serve
    docker restart nginx-serve
    docker rm -f nginx-serve
    
    # 清理所有终止的容器
    docker container prune
    
    # 进入容器
    docker exec -it nginx-server /bin/bash
    
    # 查看容器内部的日志
    docker logs -f nginx-server
    
    • 导入和导出容器
    # 导出容器,导出容器的快照文件
    docker export nginx-server > nginx-server.tar
    
    # 导入容器快照 - 从快照文件中导入镜像  mynginx 镜像名称,v1 镜像的 tag
    cat docker/nginx-server.tar | docker import - mynginx:v1
    

    安装 yapi

    hub.docker.com/r/jayfong/y…

    docker run --rm -d -p 40001:3000 jayfong/yapi:play
    # 默认的管理员账号:admin@docker.yapi,管理员密码:adm1n。
    

    安装 nginx 镜像

    www.runoob.com/docker/dock…

    常用 Docker 命令

    • 镜像操作
    # 使用镜像开启一个容器,并进入容器 -it 交互式终端操作
    docker run -it nginx /bin/bash 
    # 使用镜像开启一个容器, 后台运行  
    # 参数说明:--name nginx-test 容器名字  -p 端口映射  -d nginx 后台运行镜像名字
    docker run --name nginx-test -p 8080:80 -d nginx
    # 镜像删除
    docker rmi nginx:test
    
    • 容器操作
    # 在容器中执行命令
    docker exec -it nginx-test /bin/bash 
    # 启动停止
    docker start bb0d52be2f81
    docker stop bb0d52be2f81
    # 删除
    docker rm bb0d52be2f81
    
    # 清理所有终止的容器
    docker container prune
    

    容器部署 Vue.js 项目

    • cn.vuejs.org/v2/cookbook…

    Dockerfile

    • docs.docker.com/engine/refe…
    • 创建 Docker 镜像
    • Docker 镜像的配置文件

    Docker 简介及使用

    • Dockerfile
    # build stage
    FROM node:lts-alpine as build-stage
    WORKDIR /app
    COPY package*.json ./
    RUN npm install --registry=https://registry.npm.taobao.org 
    COPY . .
    RUN npm run build
    
    # production stage
    FROM nginx:stable-alpine as production-stage
    COPY --from=build-stage /app/dist /usr/share/nginx/html
    EXPOSE 80
    CMD ["nginx", "-g", "daemon off;"]
    
    • 使用 Dockerfile
    docker build --rm -t deploy-web:v1.0 .
    # 编译过程中如果遇到 npm install 的时候无法解析 npm 的地址,可以使用宿主机的 network
    docker network ls
    docker build --network host --rm -t deploy-web:v1.0 .
    # 开启容器
    docker run -itd --name web -p 88:80 deploy-web:v1.0
    
    • 在浏览器中测试

    Docker Hub

    • 私有仓库 Harbor
    • 公共仓库 hub.docker.com/
      • 首先登陆到 Docker Hub
    docker login
    # 从容器创建一个新的镜像
    docker commit a6a685eb4ba1 goddlts/web:v1.1
    # 镜像上传到 hub
    docker push goddlts/web
    

    映射配置目录和网站根目录

    • 映射配置目录和网站根目录
    # 复制之前容器中的 nginx 配置文件,把容器中的配置目录nginx拷贝到当前目录下
    docker cp web:/etc/nginx .
    
    docker run -itd \
      --name web-web \
      --volume /home/mypro:/usr/share/nginx/html \
      --volume /home/nginx:/etc/nginx \
      -p 89:80 \
      deploy-web:v1.0
    
    # 更改权限
    chmod -R 777 .
    

    Gitlab

    安装

    • about.gitlab.com/install/
    • docs.gitlab.com/omnibus/doc…
    • [https://hub.docker.com/r/gitlab/gitlab-ce
    docker run --detach \
    	--hostname 192.168.137.129 \
      --publish 13880:80 --publish 13822:22 \
      --name gitlab \
      --restart always \
      -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab \
      gitlab/gitlab-ce:latest
    
    docker run --detach \
      --hostname lfz.com \
      --publish 13880:80 --publish 13822:22 \
      --name gitlab \
      --restart always \
      -v /backup/gitlab/config:/etc/gitlab -v /backup/gitlab/logs:/var/log/gitlab -v /backup/gitlab/data:/var/opt/gitlab \
      gitlab/gitlab-ce:latest
    
    # 防火墙允许端口
    firewall-cmd --add-port=13880/tcp --permanent
    firewall-cmd --reload
    
    docker logs -f gitlab
    
    • 通过浏览器访问,修改中文界面

      • http://192.168.137.129:13880/
      • 点击右上角头像 - Settings - Preferences - Localization - Language - Save Changes - 刷新浏览器
    • 修改 gitlab 显示的端口

    vi /home/gitlab/config/gitlab.rb
    
    external_url 'http://192.168.137.129:13880'
    nginx['listen_port'] = 80
    gitlab_rails['gitlab_shell_ssh_port'] = 13822
    
    docker restart gitlab
    

    关闭防火墙(解决容器内无法解析DNS)

    • 关闭容器防火墙
    • 重启 docker
    # 关闭防火墙
    systemctl stop firewalld
    # 开机禁用
    systemctl disable firewalld
    # 开机启用
    systemctl enable firewalld
    # 重启 docker
    systemctl restart docker
    

    Jenkins

    • www.jenkins.io/zh/doc/
    # 下载镜像
    docker pull jenkins/jenkins
    # 创建容器 1
    docker run -itd --name jenkins --net host --restart always -p 8080:8080 -p 50000:50000 jenkins/jenkins
    
    
    docker run -itd --name jenkins --restart always -p 8080:8080 -p 50000:50000 jenkins/jenkins
    
    
    # 查看 jenkins 默认管理员的密码
    docker logs -f jenkins
    
    # 36f11bfeab664931b463a2047fb3e395
    
    # 开启端口 8080
    firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd --reload
    # 关闭防火墙
    systemctl stop firewalld
    
    • 重新创建 Jenkins
    # 拷贝 Jenkins 的数据到 宿主机
    docker cp jenkins:/var/jenkins_home /home/
    
    # 创建容器 2
    docker run -itd \
    	--name jenkins \
      --user jenkins \
      --net host \
      --restart always \
      -p 8080:8080 -p 50000:50000 \
      -v /home/jenkins_home:/var/jenkins_home \
      -v /usr/bin/docker:/usr/bin/docker \
      -v /var/run/docker.sock:/var/run/docker.sock \
      jenkins/jenkins
      
      
    
    # 宿主机
    cd /home/jenkins_home
    chmod -R 777 .
    chmod -R 777 /usr/bin/docker
    chmod -R 777 /var/run/docker.sock
    

    Jenkins 插件

    • plugins.jenkins.io/
    • Jenkins 插件加速
      • mirrors.tuna.tsinghua.edu.cn/
    • Jenkins 配置加速地址
      • Manage Jenkins --> Manage Plugins --> Advanced --> Update Site
      • mirrors.tuna.tsinghua.edu.cn/jenkins/upd…
    • 安装常用插件
      • Localization: Chinese (Simplified)
      • Git client
      • GitLab
      • Gitlab Authentication
      • Publish Over SSH
      • GitHub
      • Build Timeout
    • 权限管理插件
      • PAM Authentication
      • Role-based Authorization Strategy
      • LDAP

    持续集成配置

    Jenkins

    • Jenkins 中配置 Gitlab 的权限
      • 系统管理 -> 全局安全配置

    Docker 简介及使用

    • Gitlab 中创建应用之后填写

    Docker 简介及使用

    • 设置好之后,先应用再保存!!!!!!血的教训

    Gitlab

    • 配置 Jenkins 回调地址
      • 查看回调地址如何写:plugins.jenkins.io/gitlab-oaut…
      • 管理面板 -> Applications -> New Application
      • http://192.168.137.128:8080/securityRealm/finishLogin 

    Docker 简介及使用 Docker 简介及使用

    • 允许外发请求

      • 管理面板 -> Settings -> Network -> Outbound requests ->
        • Allow requests to the local network from web hooks and services
    • Gitlab 新建仓库,把本地仓库推送过来

    • Jenkins 中新建任务

      • 配置 git 地址,和凭证
      • 构建触发器,当 push 当 gitlab 执行脚本
        • GitLab webhook URL: http://192.168.137.128:8080/project/mypro
        • 高级中生成 Secret token
          • 8ecbbcb6dad150467cc48906940052f4
        • 构建中设置要执行的脚本
    # 判断是否存在 myprocon 容器
    docker ps | grep myprocon &> /dev/null
    if [ $? -eq 0 ]
    then
    	docker rm -f myprocon
    fi
    
    docker build -t mypro:v1.0 .
    docker run -itd --name myprocon -p 89:80 mypro:v1.0
    
    • Gitlab 的想要应用这个任务的仓库中
      • 仓库的 Settings -> Webhooks
        • 配置 Jenkins 中的 webhook URL
        • 配置 Jenkins 中的 token
        • 去掉 SSL 验证
        • 点击添加 add webhook
        • 最下面添加的 webhook 中可以点击 Test 触发 push

    Docker compose

    • 官方:docs.gitlab.com/omnibus/doc…
    web:
      image: 'gitlab/gitlab-ce:latest'
      restart: always
      hostname: 'gitlab.example.com'
      environment:
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'https://gitlab.example.com'
          # Add any other gitlab.rb configuration here, each on its own line
      ports:
        - '80:80'
        - '443:443'
        - '22:22'
      volumes:
        - '/srv/gitlab/config:/etc/gitlab'
        - '/srv/gitlab/logs:/var/log/gitlab'
        - '/srv/gitlab/data:/var/opt/gitlab'
    
    • github:github.com/sameersbn/d…

    • docker-compose 方便快速运行多个容器

    • 使用一个命令,从 YML 配置文件创建并启动所有容器

    安装

    • 获取 Docker compose 的最新版本,文档中会有安装说明
      • github.com/docker/comp…
    # 下载最新的稳定版本
    curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    
    # 授予 docker-compose 可执行
    chmod +x /usr/local/bin/docker-compose
    
    # 测试安装是否成功
    docker-compose --version
    
    # 开启容器
    docker-compose up -d
    

    起源地下载网 » Docker 简介及使用

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元