本篇將使用 DaoCloud 源在 Ubuntu 上簡單快速安裝 docker 及 docker-compose
並添加了通過 Dockerfile 及 docker-compose.yml 使用 nginx 的示例
本篇文章所用系統信息如下
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
docker 的安裝及使用
簡單介紹
docker 是一個開源的軟件部署解決方案
docker 也是輕量級的應用容器框架
docker 可以打包、發布、運行任何的應用
安裝
- 阿里雲
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- daocloud
curl -sSL https://get.daocloud.io/docker | sh
安裝后將會自動重啟
卸載
sudo apt-get remove docker docker-engine
rm -fr /var/lib/docker/
配置加速器
下面是我的配置,實際使用需要根據自己的賬號去查看自己的地址
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ced808ab.m.daocloud.io
sudo systemctl restart docker.service
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://dist7hw1.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
基礎命令
- 查看版本:
docker -v
//文章使用版本:Docker version 18.06.0-ce, build 0ffa825 - 查看鏡像:
docker images
- 查看容器:
docker ps
- 啟動 docker 服務:
sudo service docker start
- 停止 docker 服務:
sudo service docker stop
- 重啟 docker 服務:
sudo service docker restart
- 進入一個運行中的容器:
docker exec -it 容器Id /bin/bash
通過 Dockerfile 使用 nginx
通過下面的一個腳本可以簡單快速的創建一個鏡像並運行起來
大概看下應該就可以大概明白鏡像的基本使用了
echo '0.創建測試目錄及代碼'
mkdir dockerfiletest
cd dockerfiletest
mkdir dist
echo 'hello world'>./dist/index.html
echo '1.創建Dockerfile'
echo '
From daocloud.io/library/nginx:1.13.0-alpine
COPY dist/ /usr/share/nginx/html/
'>./Dockerfile
echo '2.構建鏡像'
docker build -t dockerfiletest .
echo '3.運行鏡像'
docker run -p 3344:80 dockerfiletest
下面分步拆解下
1.在項目目錄中添加 Dockerfile 文件
詳細請參考:https://hub.daocloud.io/repos/2b7310fb-1a50-48f2-9586-44622a2d1771
html 的簡單部署
From daocloud.io/library/nginx:1.13.0-alpine
# 將發布目錄的文件拷貝到鏡像中
COPY dist/ /usr/share/nginx/html/
若要使用自己的配置腳本,比如 vue 的配置,可以將自己的配置文件復制到容器中
From daocloud.io/library/nginx:1.13.0-alpine
# 刪除鏡像中 nginx 的默認配置
RUN rm /etc/nginx/conf.d/default.conf
# 復制 default.conf 到鏡像中
ADD default.conf /etc/nginx/conf.d/
# 將發布目錄的文件拷貝到鏡像中
COPY dist/ /usr/share/nginx/html/
nginx 中 vue history 模式的配置 如下,可參考
server {
listen 80;
location / {
root /usr/share/nginx/html/;
index index.html;
try_files $uri $uri/ /index.html;
}
}
若是將/usr/share/nginx/html/
和/etc/nginx/conf.d/
掛載到本地,這樣應該能夠靈活使用 docker 安裝的 nginx 了(未實踐過)
2.構建鏡像
構建參數說明參考:http://www.runoob.com/docker/docker-build-command.html
docker build -t docker-nginx-test .
3.運行鏡像
--name 服務名
-d 后台運行
-p 暴露端口:nginx 端口
docker-nginx-test 鏡像名/IMAGE ID
docker run --name dockertest -d -p 4455:80 docker-nginx-test
4.測試訪問
root@ubuntu:~# curl http://localhost:4455
hello world
現在,可以通過 IP+端口的形式在外網訪問站點了,但在實際使用肯定還需要綁定域名等一些操作
最簡單的是我認為是使用 nginx 去做代理
目前我們公司使用的 traefik ,最爽的莫過於 https 的支持,可以了解一下
docker-compose 的安裝及使用
簡單介紹
Docker Compose 是一個用來定義和運行復雜應用的 Docker 工具。
使用 Docker Compose 不再需要使用 shell 腳本來啟動容器。(通過 docker-compose.yml 配置)
安裝
可以通過修改 URL 中的版本,自定義您需要的版本。
- Github源
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- Daocloud鏡像
curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
卸載
sudo rm /usr/local/bin/docker-compose
基礎命令
需要在 docker-compose.yml 所在文件夾中執行命令
使用 docker-compose 部署項目的簡單步驟
- 停止現有 docker-compose 中的容器:
docker-compose down
- 重新拉取鏡像:
docker-compose pull
- 后台啟動 docker-compose 中的容器:
docker-compose up -d
通過 docker-compose.yml 部署應用
我將上面所創建的鏡像推送到了阿里雲,在此使用它
1.新建 docker-compose.yml 文件
通過以下配置,在運行后可以創建兩個站點(只為演示)
version: "3"
services:
web1:
image: registry.cn-hangzhou.aliyuncs.com/yimo_public/docker-nginx-test:latest
ports:
- "4466:80"
web2:
image: registry.cn-hangzhou.aliyuncs.com/yimo_public/docker-nginx-test:latest
ports:
- "4477:80"
此處只是簡單演示寫法,說明 docker-compose 的方便
2.構建完成,后台運行鏡像
docker-compose up -d
運行后就可以使用 ip+port 訪問這兩個站點了
3.鏡像更新重新部署
docker-compose down
docker-compose pull
docker-compose up -d
相關文章
- docker 文檔:https://docs.docker.com/get-started/
- docker-compose 文檔:https://docs.docker.com/compose/install/#uninstallation
- docker-compose 倉庫:https://github.com/docker/compose
- daocloud 源地址 :https://get.daocloud.io/#install-docker
- Docker 通過 Nginx 鏡像部署 Vue 項目:https://blog.csdn.net/jason_jeson/article/details/78200623
- DaoClould https://hub.daocloud.io/repos/2b7310fb-1a50-48f2-9586-44622a2d1771