资讯专栏INFORMATION COLUMN

用Dockers搭建本地开发环境

gself / 1274人阅读

摘要:本地开发环境是影响工作效率最重要的因素还有一个是,以后有时间会专门写这个一般来说有以下几种方案可以选择原生安装这个是最原始也是最麻烦的,比如搞,要自己装搞不好还得装个。

本地开发环境是影响工作效率最重要的因素(还有一个是IDE,以后有时间会专门写这个)

一般来说有以下几种方案可以选择

原生安装 这个是最原始也是最麻烦的,比如搞PHP,要自己装nginx+php+mysql+redis 搞不好还得装个node、composer、memcached。这个搞法基本上熟练也得一天出去了。Mac还好,Windows就要无尽的google了。

虚拟机 这个有两种方案,我都尝试过,一种是用VM,安个centos,这种方法和原生安装差不多,也比较折腾,另外VM虚拟机占用系统资源太大,每次开机都比较慢。另一种就是用vargrant,这个方法的好处是比较轻,开机快。但是终究是虚拟机,最大的问题就是目录共享问题,造成无法正常安装node,总之各种坑

Docker 最终选择了Docker的方案。Docker基本上是集合了上面的所有优点了,他自身最大的好处就是想用的时候拉起来,不想用的时候干掉,数据和容器是分开的。另外镜像都是官方的,稳定,靠谱。缺点也是有的,就是底层其实还是用的linux,所以在windows上跑不大稳定。

我目前用的方案是

centos7 官方镜像 里面安装了 nginx php node

mysql 官方镜像

redis 官方镜像

这样一共需要运行三个容器,数据都-v 到本地磁盘,容器干掉了数据也不丢失。

常用命令 镜像

搜索镜像

$ docker search xxx

如果出现 connection refused 可以试试重启docker

下载镜像

$ docker pull xxx

删除镜像

$ docker rmi xxx

本地容器保存快照 生成镜像压缩文件

$ docker export -o dev-latest.tar 7e4b0

导入镜像

$

保存镜像

$ docker save -o redis-latest.tar 9813

容器导入 是将当前容器 变成一个新的镜像
镜像导入 是复制的过程

save 保存镜像所有的信息-包含历史
export 只导出当前的信息

容器

查看当前运行的容器

$ docker ps
$ docker ps -a

$ docker stats

$ docker top

查看当前docker版本

$ docker info

运行容器

$ docker run -d [-p 主机端口:容器端口] --name [容器名自定义] [-v 主机/目录:容器/目录] [镜像名]

例如

centos

$ docker run -d -p 80:80 --name dev -v D:/docker/dev/www:/home/www centos

redis
$ docker run -d -p 6379:6379 --name dev-redis -v D:/docker/redis/data:/data redis

mysql

$ docker run --name dev-mysql -v D:/docker/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=111111 -d mysql

停止 开启 重启

$ docker stop
$ docker start
$ docker restart

删除容器

$ docker rm

如果有自己的仓库可以

$ docker login -u 用户名 -p 密码 仓库地址

进入容器

$ docker exec -it [容器名] /bin/bash

如果碰到开机报错:

Docker command did not complete within the allowed timeout. Output:

可能是windows 防火墙问题

在防火墙里放开下面这俩exe
C:Program FilesDockerDockerDocker for Windows.exe
C:Program FilesDockerDockerDockerCli.exe

PS 如果发现容器里面挂载的目录不见了
但是执行 docker inspect 发现这个配置其实是有的

那么 可能是挂载的主机磁盘没有写权限 改完后重启试试

容器间通信

默认可以用内网IP通信 网段是 172.17.0.1...

可以通过下面的命令查看容器IP

$ docker inspect --format="{{.NetworkSettings.IPAddress}}" CONTAINER_ID

这里注意 容器的IP是根据启动顺序来的,不是一直固定的,所以启动的时候最好有一定顺序,避免老去改配置的麻烦

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27046.html

相关文章

  • Docker 入门及安装[Docker 系列-1]

    摘要:核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树网络用户与挂载文件系统,而核心的提供资源隔离,包括存储器与网络。因此更为轻量快速和易于管理。 docker 如日中天,这不是单纯的炒概念,docker 确确实实解决了开发与运维的痛点,因此在企业开发中得到了非常广泛的使用,本文对于 docker 的这些基本知识点再做一些简单回顾。 什么是 docker 根据 wikip...

    Lin_R 评论0 收藏0
  • 软件测试需要学什么?50W+的测试工程师需要掌握哪些技能?

    摘要:协议学习常见请求方法学习和学习接口的基本概念接口文档认识接口测试用例编写接口测试工具使用软件测试自动化进阶性能测试性能测试的技术要求很高,不仅仅要对性能测试的指标测试分类测试设计有很深刻的理解。 ...

    wushuiyong 评论0 收藏0
  • 使Docker统一团队的开发环境

    摘要:开场白作为一个技术团队的,你是如何保证成员的开发环境达到公司的标准,或者是你定制的最低要求的如果你的回答是差不多就行了,有问题再说,那么,你已经在给自己挖坑了。好的,成员们开始构建你定制的开发环境了。 开场白 作为一个技术团队的Leader,你是如何保证成员的开发环境达到公司的标准,或者是你定制的最低要求的?如果你的回答是:差不多就行了,有问题再说,那么,你已经在给自己挖坑了。 同事A...

    alin 评论0 收藏0
  • 蛮吉学 Docker

    摘要:蛮吉为什么这么做集中管理,使用方便,安装更方便,不用到各各目录上去找配置文件啊,启动文件之类的。蛮吉如果我想修改的配置怎么办可以使用进入容器里面找到并修改,命令退出容器。 What is Docker? docker 是一个可以放东西的容器,那东西是什么?可以是redis、nginx、mysql。总之你能在系统上安装的都可以在dokcer里面安装。 蛮吉:为什么这么做? 集中管理,使用...

    1fe1se 评论0 收藏0
  • Spring Boot 应 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)

    摘要:应用化极简教程陈光剑基于的企业级应用开发最佳实践前面的章节中,我们都是在环境中开发运行测试应用程序。关键字是分布式应用微服务容器虚拟化。通常,在企业项目实践中,会实现一套应用部署发布的自动化运维平台工具。 Spring Boot 应用 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)—— 基于 Gradle + Kotlin的企业级应用开发最佳实践 前面的章节中,...

    Donne 评论0 收藏0

发表评论

0条评论

gself

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<