webplus / blog

前端开发日志
63 stars 6 forks source link

前端开发Docker快速入门(一) #50

Open webplus opened 4 years ago

webplus commented 4 years ago

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

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 centos7node10date +%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 中文指南