docker 及 docker-compose 的快速安裝和簡單使用


本篇將使用 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

相關文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM