機緣巧合與Docker結緣

前戲

本小白早上忽然對mongodb的可靠性再次產生深厚的興趣,
而後查詢到4.0已經支持副本集級別的事務了,
雖然不太明白,
但重要的是事務不向下兼容,
必須把兼容性提升到4.0php

到個人ubuntu上查一下html

mongo --version

結果是3.6.3
因而考慮升級一下mongodb
查到了資料,好比:
讓你的mongodb支持事務---升級到mongodb 4.0mysql

但,重點是這個連接:
在 Ubuntu Linux 上安裝最新版本的 MongoDBlinux

個人注意力所有被評論區的docker吞噬nginx

正菜

因而我找到了這篇文章:
這多是最爲詳細的Docker入門吐血總結git


從版權角度來講,這並非做者的原文。
但下方的來源連接已經不是原文,而是做者主站。
惋惜了,就看這個吧。
順便說一下,這個做者,是個21歲大萌弟,哈哈,好可愛。github

應用

Docker 資源彙總
MAC下docker搭建Nginx+PHP+MySQLsql

延伸

你們生產環境用 Docker 嗎?
除去評論區一堆惡搞的回覆外,真實狀況很明顯了:mongodb

如今在生產環境用的是很廣泛的,一般互聯網公司都在用。
彈性資源佔用是很大優點,須要持續集成快速迭代的項目一般都容器化部署。
在線業務所有 docker 化
不只僅是 docker,還用 k8s。。。
生產環境還得靠 k8s
再用 docker swarm

而後搜了兩篇關於k8s的文章:
十分鐘帶你理解Kubernetes核心概念【乾貨滿滿,推薦!】
乾貨滿滿!10分鐘看懂Docker和K8S【其實很水】docker

學習規劃

速成是不可能的,
想一口吃個胖子,會被噎死…
因此我仍是慢慢來,先在mac上搞一個,試着玩。
熟練以後,把ubuntu上的mongodb升級了。
而後有時間再搞k8s

還有一個分支,是mac上使用docker
因爲歷史緣由,mac上的docker貌似演化了不少次,現在我安裝的是:
Docker version 19.03.1, build 74b1e89
有這麼一個帖子,算做一個引子,未來無聊了能夠研究一下mac的docker:
Mac 下如何僅安裝 docker CLI 而不安裝整套 Docker
Docker Version Manager

實戰

在b站看了視頻,連接我時間放上來
放一張神圖,命令都在神圖裏:

圖片來源: https://b23.tv/av58402749,我作了命令的標註

進階:
其實容器之間都是屬因而一個網段的:172.17.0.2/16
也就是說,咱們啓動一個nginx容器,而後再啓動一個alpine,curl 172.17.0.2就能訪問到nginx的主頁。

若是以爲記ip很麻煩,還能夠用--link來映射

$ docker run -d -p80:80 --name mynginx nginx        //起名爲mynging
$ docker run -dit --link mynginx:mynginx alpine        //--link第一個mynginx是剛纔容器名稱,第二個mynginx是內部的域名。它會出如今alpine的`/etc/hosts`中

這樣在alpine中,curl mynginx便可訪問了。

插播一條本臺剛剛收到的消息:
發現了一些極小的linux:alpine,而且:

目前 Docker 官方已開始推薦使用 Alpine 替代以前的 Ubuntu 作爲基礎鏡像環境。這樣會帶來多個好處。包括鏡像下載速度加快,鏡像安全性提升,主機之間的切換更方便,佔用更少磁盤空間等。

Docker之操做系統Alpine

這裏有一些命令,記錄一下,略有不一樣

$ docker run -dit --name myalp alpine    //若是隻寫-d,則啓動不了
$ docker exec -it myalp sh    //alpine很小,因此只有sh,連bash都沒有
# apk add curl //使用apk add來安裝經常使用軟件

消息插播結束,繼續正文

但,若是咱們搭建lnmp環境呢?這樣一個一個--link有點慢啊
因而請出今天的主角:docker-compose
首先,咱們作一些準備文件:

$ tree
.
├── conf
│   └── nginx.conf
├── docker-compose.yml
└── html
    ├── index.html
    ├── index.php
    └── mysql.php

nginx.conf:
nginx.conf參考:https://blog.csdn.net/weixin_...

worker_processes  1;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;

    sendfile on;

    keepalive_timeout 65;

    server {
        listen 80;
        server_name localhost;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }

        error_page    500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        location ~ \.php$ {
            fastcgi_pass    php:9000;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
            include         fastcgi_params;
        }
    }
}

docker-compose.yml:

version: "3"
services:
  nginx:
    image: nginx:alpine
    ports:
    - 80:80
    volumes:
    - /root/html:/usr/share/nginx/html
    - /root/conf/nginx.conf:/etc/nginx/nginx.conf
  php:
    image: devilbox/php-fpm:5.2-work-0.89    //php-fpm是在hub.docker.com中搜索的,選擇的第二個。
    volumes:
    - /root/html:/var/www/html
  mysql:
    image: mysql:5.6
    environment:
    - MYSQL_ROOT_PASSWORD=123456

所有文件建立好了,就能夠啓動啦:

docker-compose up -d    //這樣就能夠運行剛纔的配置文件

更多關於docker-compose的介紹:
Docker快速入門——Docker-Compose

【實戰】參考資料:
https://b23.tv/av58402749
https://b23.tv/av61131351
相關文章
相關標籤/搜索