社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker攻略:打造一劳永逸的随身开发环境@.@

骆飞 • 5 年前 • 2109 次点击  
阅读 217

Docker攻略:打造一劳永逸的随身开发环境@.@

前言

每次换电脑安装各种开发包,electron打包,网络原因各种下载不到依赖,应用部署困难?那就看看这篇攻略,打造一劳永逸的随身开发环境吧

Docker安装

Docker基础

images

  • docekr pull [images] #拉取镜像
  • docekr imgaes #查看所有镜像
  • docker rmi [imageID] #删除指定镜像
  • docker rmi -f \$(docker images -aq) #!小技巧删除所有镜像

container

  • docekr ps #查看运行容器
    • -a 列出历史
    • -n 列出最近
    • -q 只显示编号
  • docker rm [containerID] #删除指定容器
  • docker rmi -f \$(docker ps -aq) #!小技巧删除所有容器
  • docker start id #启动容器
  • docker restart id #重启容器
  • docker stop id #停止当前运行的容器
  • docker kill id #强制停止当前运行容器

network

  • bridge:桥接 docker(默认)
  • none:不配置网络
  • host:主机模式 和宿主机共享网络
  • container:容器网络联通(用的少!局限性大)
  • 自定义网络 create
    • docker network create --driver bridge --subnet 192.168.3.0/16 --gateway 192.168.3.1 mynet
  • 查看网络列表
    • docker network ls
  • 删除网络
    • docker network rm ID

创建启动容器

  • docekr run [参数] imagesID #创建一个容器并启动

    • -it 使用交互方式运行没进入容器查看内容
    • -d 后台运行
    • --name="Name" 容器名称 区分容器
  • 端口映射:将容器服务端口映射到主机端口

    • -p [主机端口]:[容器端口]
    • -P 随机端口
  • 数据卷:主机与容器数据共享

    • -v [容器路径] 匿名挂载
    • -v [主机路径]:[容器路径] 具名挂载
  • 网络:选择网络模式

    • -net [name]
  • 实例:docker run -itd -p 9000:9000 --name demo -v /var/run/docker.sock:/var/run/docker.sock -v /Users/luofei/learn/docker_file/portainer/data:/data docker.io/portainer/portainer /bin/bash

查看容器的基本信息

docker inspect 容器id

查看容器日志

docker logs 容器id

从容器拷贝到本机

  • 'docker cp 本机路径 容器id:文件路径 //主机内容拷贝到容器'
  • 'docker cp 容器id:文件路径 本机路径 //容器拷贝内容到主机'

进入一个容器

  • docker exec -it [container] /bin/bash 在已运行的容器中执行命令,不创建和启动新的容器,退出shell不会导致容器停止运行
  • docker attach [container] 本机的输入直接输到容器中,容器的输出会直接显示在本机的屏幕上,如果退出容器的shell,容器会停止运行

退出容器

  • exit 直接退出
  • Ctrl + p + q 退出不停止

制作一个镜像

docker commit -m="提交的描述信息" -a="作者" 容器 id 目标镜像名:[TAG]

DockerFile

  • FROM:这个镜像的妈妈是谁(基础镜像)
  • MAINTAINER:这个镜像是谁写的(维护者的信息)
  • RUN:构建镜像需要运行的命令
  • ADD:步骤:copu 文件,会自动解压
  • WORKDIR:设置当前工作目录
  • VOLUME:设置券,挂载主机目录
  • EXPOSE: 暴露端口
  • CMD:指定这个容器启动的时候要运行的命令 只有最后一个会生效,可被替代
  • ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令
  • ONBUILD:当构建一个被继承 DockerFile 这个时候就会运行 ONBUILD 的命令,触发指令
  • COPY:类似 ADD 将我们的文件拷贝到镜像中
  • ENV:构建镜像的时候设置环境变量

发布镜像

Docker hub

  • docker login 登录
  • docker tag [imageID] [message]镜像标签
  • docker push [image]上传镜像

阿里云

  • 登录阿里云

  • 进入容器镜像服务

  • 创建命名空间

  • 创建镜像仓库

    $ sudo docker login --username=username registry.cn-hangzhou.aliyuncs.com
    $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/jackfly/jackfly:[镜像版本号]
    $ sudo docker push registry.cn-hangzhou.aliyuncs.com/jackfly/jackfly:[镜像版本号]
    复制代码

制作专属系统镜像

缺什么补什么,作为前端下面这些已经够用了。

  • 选择底包ubuntu16.04(看个人喜好)
  • net-tools
  • ssh服务 (通过shell工具连接docker容器内)
  • node:v12.18.1
  • npm:6.14.5
  • pm2:4.4.0
  • git:2.7.4
  • zsh:5.1.1
  • zsh_plugs:(git,zsh-autosuggestions, zsh-syntax-highlighting)
  • Nginx

dockerfile 实例

dockerfile 在github上需要的自己拿呀:github.com/JackFlyL/do…

生成镜像

docker build -f dockerfile -t [imageName] .
复制代码

注意!!!后面那个 "." 了没有一定要加上!

镜像使用

docker run -itd --name mywork -v /Users/jackfly/docker:/home/work -p 6555:22 -p 8080:80 mywork 
复制代码
  • 使用oh-my-zsh,这东西真是爱不释手啊。
docker exec -it mywork /bin/zsh
复制代码
  • shell连接docker容器 run的时候咱们映射了两个端口,22是ssh服务的端口,那么通过主机映射的6555就可以连接到docker内部了。默认密码是:root

连接成功!这就是你的专属服务器,想怎么造怎么造,比docker数据卷共享更自由。

关于应用部署

web网页

  • Nginx 代理,映射端口到主机,通过主机IP:映射端口访问
  • node.js 启动 pm2进程守护 映射端口到主机,通过主机IP:映射端口访问

Electron应用

打包生成APP 通过数据连通 共享数据到主机 直接使用

docker run -itd -v /home/data:/home/AlectronApps mywork
复制代码

总结

至此一个随身的开发环境就搞定了,即使你到任何系统任何电脑 只要支持docker 就可以拉取镜像还原自己的工作状态,而且容错率高,重装系统只需要重新run一下。你可以把自己的项目放入镜像中,不断完善不断的commit 更新镜像。 基础镜像的dockerfile放到了github,需要的同学自己取。镜像我也上传到了阿里云,不想折腾的懒人们也直接用哈!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/70903
 
2109 次点击