zoukankan      html  css  js  c++  java
  • 前端开发Docker快速入门(一)

    先梳理下前端的几个应用场景

    1、为团队制定统一开发环境,新人入职或系统重装后能快速搭建起开发环境。

    比如前端开发通常要安装pythone、nodejs以及node-sass、webpack等,能通过Dockerfile维护管理镜像给到团队成员使用。

    研究深度学习领域的同学比较清楚,搭建环境需要安装配置各类工具,如Tensorflow、Keras、Anaconda、PyTorch、Flask、Jupyter,可以利用Docker快速搭建、管理和部署。

    2、实验性项目或者技术研究时需要安装各种依赖和工具,公司内部电脑标装后权限较低无法安装和下载。

    3、前后端项目大复杂时,项目依赖nodejs模块较多且对平台依赖较强时,比如sharp.js、node-sass等需要编译安装,同时还需要使用mysql、redis等在开发部署时都较麻烦。

    在开发时要启动多个服务及端口,可使用docker-compose编排好服务就能一键启动。如有新人加入直接使用相应的镜像就能快速进行开发,使用Docker将非常方便。

    一、MacOS Docker 安装

    1、使用 Homebrew 来安装 Docker

    $ brew cask install docker

    2、手动下载 Docker for Mac.dmg安装

    如同 macOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将鲸鱼图标拖拽到 Application 文件夹即可。

    下载地址: https://download.docker.com/mac/stable/Docker.dmg

    二进制包  

    https://mirrors.aliyun.com/docker-ce/mac/static/stable/x86_64/

    https://download.docker.com/mac/static/stable/x86_64/

    解压后

    ln -s /otp/docker19.0/docker /usr/local/bin/docker  # 全局运行docker

    $ sudo docker -d &   # 启动docker

    $ killall docker   # 关闭docker

    3、安装完成后,运行下面的命令,验证是否安装成功

    $ docker version
    # 或者
    $ docker info

    Mac命令行启动docker服务
    launchctl 查看 docker server
    launchctl list | grep docker
    关闭和启动它
    launchctl stop com.docker.docker.15648 && launchctl start com.docker.docker.15648

    二、Mac下的配置修改
    vi ~/.docker/daemon.json
    {

    "debug": true,
    "experimental": true,
    "registry-mirrors": ["https://u6krpdpq.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com"],
    "insecure-registries": ["192.168.1.2:5000"]
    }

    三、常用命令

    1、查询本地容器和镜像

    docker ps -a    # 显示所有的容器
    docker image ls    # 列出本地镜像

    docker search alplin  # 搜索alplin相关镜像

    2、获取镜像

    docker pull [imagename]:[tag]    # 拉取镜像

    docker pull alpine:latest

    docker pull centos:centos7.7.1908

    docker pull hub.c.163.com/library/alpine:latest  # 从国内163源站拉取镜像

    3、创建容器

    docker create --name  alpine:latest 

    docker run --name centos7 -itd centos:centos7.7.1908 /bin/bash  # 创建并运行容器

    docker run --name myalpine -itd alpine:latest /bin/sh

    docker run --name centos72 -itd -v `pwd`:/bankapp/app -w /bankapp/app -p 8000:8000 --privileged=true centos7:nodejs10 /bin/bash

    4、创建容器
    docker create --name alpine:latest

    5、删除容器
    docker rm containerID

    docker image rm IMAGEID  # 删除本地镜像

    6、启动容器
    docker start containerID

    7、进入容器
    docker attach containerID

    8、停止容器运行
    docker stop  containerID

    9、从现有容器导出导入新的镜像
    docker commit -a "webplus" -m "centos7 nodejs_10.18.0 " containerID centos:centos7_node10       # 提交容器的修改
    docker export -o centos7_node10_`date +%Y%m%d`.tar containerID               # 导出新的镜像.tar
    docker import ./centos_nodejs-20200402.tar centos:centos7_nodejs               # 导入存档镜像

    10、从现在镜像保存和导入镜像

    docker save -o my_ubuntu_v3.tar centos:centos7_nodejs  # 将指定镜像保存成 tar 归档文件可进行分发

    docker load -ip my_ubuntu_v3.tar   # 导入使用 docker save 命令导出的镜像

    四、本地搭建私库

    1、拉取registry镜像

    docker pull registry

    2.创建宿主机储存目录【/opt/data/registry】:

    mkdir -p /opt/data/registry

    docker create -d -p 5000:5000 -v /opt/data/registry:/tmp/registry --privileged=true --restart=always --name registry

    3、也可直接拉取镜像并新建容器, -p端口映射,-v本地库目录映射
    docker run -d -p 5000:5000 -v /Users/apple/aaa/docker:/tmp/registry registry
    docker run -d -p 5000:5000 -v /Users/apple/aaa/docker/registry:/tmp/registry --privileged=true --restart=always --name hub.c.163.com/library/registry:latest registry:latest

    4、配置https权限支持,修改完需要重启,有时候可能重启失败,可能是因docker检查192.168.1.128:5000是否能访问:

    Mac vi ~/.docker/daemon.json

    {

    "insecure-registries":["192.168.1.128:5000"]

    }

    5、push到私有仓库 

    docker tag centos:centos7_nodejs 192.168.1.128:5000/centos7_nodejs:v1   # 修改镜像的tag

    docker push 192.168.1.128:5000/nodejs10:1.0.0  # 推送镜像到本地仓库

    参考文档:

    阮一峰Docker 入门教程 

    Docker 中文指南

  • 相关阅读:
    vue之父子组件间通信实例讲解(props、$ref、$emit)
    jsp的内置对象
    一道关于类加载顺序的面试题
    web.xml中的load-on-startup
    静态代理、JDK动态代理和CGLib动态代理之前的区别
    有关于tomcat启动时,利用listener来执行某个方法
    有关于注解
    java 代码块,静态代码块,构造器等的执行顺序
    java容器的理解(collection)
    PHP常用的缓存技术汇总
  • 原文地址:https://www.cnblogs.com/terrylin/p/12643013.html
Copyright © 2011-2022 走看看