docker run -p 80:80 -v $PWD/www:/usr/share/nginx/html nginx
參數說明:
1.docker run nginx
: 感覺鏡像(images)生成本地的容器
2.-p 80:80
: 容器的80端口和本地的80端口的映射
3.-v
:將本地的,當前文件夾下的www文件夾映射容器路徑為/usr/share/nginx/html
的文件夾下
[注:]Docker的安裝
-d參數
- 以守護進程的方式創建容器,即不會占用當前的進程.
在創建完畢后退出了,將執行權限重新返回給cmd
容器(container)相關操作
- 查看容器
docker ps
- 停止容器
docker stop [CONTAINER ID](前4位)
- 查看所有容器(包含停止的):
docker ps -a
- 刪除容器:
docker rm [CONTAINER ID](前4位)
使用Dockerfile生成鏡像并使用
-
寫好項目.
-
寫Dockerfile [注: 從后面的源碼中,拷下來直接用]
- nginx
- node
- pm2
-
構建鏡像:
docker build -t mar_pm2 .
(注意有個".")
-
查看剛才構建的鏡像:
docker images
5. 根據鏡像生成容器:
docker run -p 3000:3000 185c
2個app started
的原因是,在process.yml
中配置了啟動2個子進程
Dockerfile說明
- Dockerfile
FROM keymetrics/pm2:latest-alpine
ADD . /usr/src/app
WORKDIR /usr/src/app
RUN npm config set registry https://registry.npm.taobao.org/ && npm i
EXPOSE 3000
CMD ["pm2-runtime", "start", "process.yml"]
- 第1行:
FROM keymetrics/pm2:latest-alpine
, 指定pm2版本的鏡像 - 第2行:
ADD . /usr/src/app
, 移動當前目錄下面的文件(在此用 . 表示)到app目錄下 - 第3行:
WORKDIR /usr/src/app
, 進入到app目錄下面,類似cd - 第4行: 指定使用源
https://registry.npm.taobao.org
,并且安裝依賴,相當于在本地文件下根據package.json
使用npm install
下載項目的依賴 - 第五行: 將文件暴露到3000端口
- 第六行: 相當于命令行執行
pm2-runtime start process.yml
使用docker-compose.yml
- 在pm2目錄下,新建 docker-compose.yml,
touch docker-compose.yml
- 使用
vi docker-compose.yml
進入編輯如下內容:
[注: i進入編輯模式, ESC退出編輯模式, shift+:然后 wq enter 保存退出]
- 使用
docker-compose up -d --force-recreate --build
構建容器
- 使用
docker-compose down
關閉由docker-compose up 啟動的容器
使用docker-compose.yml一次生成多個鏡像
- 編寫 docker-compose.yml如下:
version: '3.1'
services:mongo:image: mongorestart: alwaysports:- 27017:27017mongo-express:image: mongo-expressrestart: alwaysports:- 8081:8081
- 后面步驟和上面的一樣…不綴述