用Dockers搭建本地開發環境

本地開發環境是影響工做效率最重要的因素(還有一個是IDE,之後有時間會專門寫這個)php

通常來講有如下幾種方案能夠選擇node

  • 原生安裝 這個是最原始也是最麻煩的,好比搞PHP,要本身裝nginx+php+mysql+redis 搞很差還得裝個node、composer、memcached。這個搞法基本上熟練也得一天出去了。Mac還好,Windows就要無盡的google了。
  • 虛擬機 這個有兩種方案,我都嘗試過,一種是用VM,安個centos,這種方法和原生安裝差很少,也比較折騰,另外VM虛擬機佔用系統資源太大,每次開機都比較慢。另外一種就是用vargrant,這個方法的好處是比較輕,開機快。可是終究是虛擬機,最大的問題就是目錄共享問題,形成沒法正常安裝node,總之各類坑
  • Docker 最終選擇了Docker的方案。Docker基本上是集合了上面的全部優勢了,他自身最大的好處就是想用的時候拉起來,不想用的時候幹掉,數據和容器是分開的。另外鏡像都是官方的,穩定,靠譜。缺點也是有的,就是底層其實仍是用的linux,因此在windows上跑不大穩定。

我目前用的方案是mysql

centos7 官方鏡像 裏面安裝了 nginx php nodelinux

mysql 官方鏡像nginx

redis 官方鏡像redis

這樣一共須要運行三個容器,數據都-v 到本地磁盤,容器幹掉了數據也不丟失。sql

經常使用命令

鏡像

搜索鏡像docker

$ docker search xxxwindows

若是出現 connection refused 能夠試試重啓dockercentos

下載鏡像

$ 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 Files\Docker\Docker\Docker for Windows.exe
C:\Program Files\Docker\Docker\DockerCli.exe

PS 若是發現容器裏面掛載的目錄不見了
可是執行 docker inspect 發現這個配置實際上是有的

那麼 多是掛載的主機磁盤沒有寫權限 改完後重啓試試

容器間通訊

默承認以用內網IP通訊 網段是 172.17.0.1...

能夠經過下面的命令查看容器IP

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

這裏注意 容器的IP是根據啓動順序來的,不是一直固定的,因此啓動的時候最好有必定順序,避免老去改配置的麻煩

相關文章
相關標籤/搜索