#Docker:鏡像與容器
###下載 Docker Toolbox
[https://www.docker.com/products/docker-toolbox](https://www.docker.com/products/docker-toolbox)
###下面這個網站有一些別人做好的鏡像
[https://hub.docker.com/explore/](https://hub.docker.com/explore/)
###Docker常用命令
```
// 搜索鏡像
docker search centos
// 查看在本地已有的鏡像
docker images
// 下載鏡像
docker pull centos
// 查看本地已安裝的機器
docker-machine ls
// 刪除一臺機器
docker-machine rm default
// 創建容器 (系統會給這個容器分配一個默認的名字)
docker run centos /bin/echo 'hello'
// 查看正在運行的容器
docker ps
// 查看所有容器
docker ps --all
// 可以基于一個鏡像創建多個容器
docker run centos ls
// 查看所有容器(簡寫)
docker ps -a
// 刪除容器
docker rm 4507ade88ba8
// 也可以在創建容器的時候給容器取一個名字
docker run --name greeting centos /bin/echo 'hello'
// 查看最近一次創建的容器
docker ps --all --latest
// 停止容器
docker stop greeting
// 重啟容器
docker restart greeting
// 啟動容器
docker start greeting
// 查看容器日志
docker logs greeting
// 創建一個帶互動的容器
docker run --interactive --tty centos /bin/bash
// 登錄到default主機
docker-machine ssh default
// 創建服務需要的鏡像并啟動服務
docker-compose up -d --build
```
###在后臺運行的容器
```
// 創建一個在后臺運行的容器
docker run --detach centos ping www.baidu.com
// 新打開一個終端
docker logs --follow 869f4f342b0189665329a5ea3479af415dde21fc90da4211687bbefa178d8c3c
// 切換到原來的終端
docker stop 869f4f342b0189665329a5ea3479af415dde21fc90da4211687bbefa178d8c3c
// 再切換到新打開的終端就會發現日志已經停止打印
```
###手工創建鏡像
```
// 先創建一個容器
docker run -i -t centos bash
// 再添加一個nodejs的安裝源
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
// 再用yum去安裝一下nodejs
yum install nodejs -y
// 用nodejs在終端輸出hello
node -e "console.log('hello')"
// 下面我們可以基于這個容器創建一個鏡像,其實就是去提交一下對這個容器的修改就行了
// 先復制一個這個容器的主機名,因為它是這個容器的ID號,輸入exit退出一下
// 提交修改 -m 指定提交日志(中間不能有空格) -a 指定作者
docker commit -m '安裝nodejs' -a 'zhulinjie' 79944f6655f7 nodejs-demo:latest
// 基于這個鏡像去創建一個容器
docker run nodejs-demo node -e "console.log('hello')"
// 刪除手工創建的鏡像,需要先刪除基于這個鏡像創建的容器
docker ps -a -l
docker rm 8cb93622ed06
docker rmi nodejs-demo
```
###Dockerfile創建鏡像
```
cd Desktop
mkdir nodejs-demo
cd nodejs-demo
vi Dockerfile
```
```
FROM centos
MAINTAINER zhulinjie <zhulinjie@126.com>
RUN curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
RUN yum install nodejs -y
```
```
docker build --tag nodejs-demo:latest .
docker images
```