Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從 Apache2.0 協議開源。php
Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux(Windows,MacOS) 機器上,也能夠實現虛擬化。html
容器是徹底使用沙箱機制,相互之間不會有任何接口,更重要的是容器性能開銷極低。mysql
docker pull nginx:latest docker pull php:5.6-fpm docker pull php:5.6-cli docker pull mysql:5.6.46 docker pull phpmyadmin/phpmyadmin
使用命令 docker images
查看本地鏡像:nginx
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest c7460dfcab50 5 hours ago 126MB phpmyadmin/phpmyadmin latest fcf3beee74b9 47 hours ago 458MB mysql 5.6.46 f7ba8643e01a 12 days ago 302MB php 5.6-fpm 3458979c7744 11 months ago 344MB php 5.6-cli 36c3c974e6ee 11 months ago 344MB
善用
https://www.runoob.com/docker/docker-search-command.htmldocker search
命令來查看可用版本。web
能夠執行命令 docker container ls
(或docker ps)或者 docker container ls -all
(或docker ps -a),來查看已啓動的容器或者全部容器。sql
docker run --name xu-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.6.46
docker run --name xu-phpmyadmin -d --link xu-mysql:db -p 8081:80 phpmyadmin/phpmyadmin # 訪問http://127.0.0.1:8081/,使用root/123456帳號信息登陸管理mysql
docker run --name xu-php-fpm5.6 -v ~/code/docker/nginx/www:/www -d php:5.6-fpm
下面Nginx + PHP:docker
docker run --name xu-nginx -p 8080:80 -d -v ~/code/docker/nginx/www:/usr/share/nginx/html -v ~/code/docker/nginx/conf/conf.d/:/etc/nginx/conf.d --link xu-php-fpm5.6:php nginx
參考:數據庫
https://www.runoob.com/docker/docker-install-php.html
https://hub.docker.com/_/php
當把web程序代碼放入 ~/code/docker/nginx/www
後,在瀏覽器打開http://127.0.0.1:8080/
,提示:vim
您的服務器環境不支持gd擴展,將沒法使用驗證碼!瀏覽器
容器的中止、刪除,以下:
docker stop 027c0f432aae # 此外對應的容器id
docker rm 027c0f432aae
查看mysql容器的ip地址,鏈接數據庫時用得上:
docker inspect --format='{{.NetworkSettings.IPAddress}}' xu-mysql
若是以前啓用了 gd
,須要先在 php.ini
文件中註釋掉 extension=gd.so
並重啓容器。
進入php容器:
docker exec -it <容器ID或容器名稱> /bin/bash
可把軟件源修改成國內某鏡像站源,例如容器軟件源 /etc/apt/sources.list
修改成網易鏡像站源,以stretch
爲例:
# 先作備份: mv /etc/apt/sources.list /etc/apt/sources.list.bak # 再建立編輯 /etc/apt/sources.list deb http://mirrors.163.com/debian/ stretch main contrib non-free contrib deb http://mirrors.163.com/debian/ stretch-updates main contrib non-free contrib deb http://mirrors.163.com/debian/ stretch-backports main contrib non-free contrib
編輯器推薦安裝 vim
,默認沒有安裝,請先執行 apt-get update
,再安裝 apt-get install vim
,可是每每矛盾的是,我若是可以快速更新並安裝的話,就用不着換源了,因此使用最基本的命令「echo
」:
# 依次執行: echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >/etc/apt/sources.list echo "deb http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >>/etc/apt/sources.list echo "deb-src http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list
# 更新軟件源 apt update # 安裝各類庫 apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev # 解壓源碼 docker-php-source extract # 進入gd源碼文件夾 cd /usr/src/php/ext/gd # 準備編譯 docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2 # 編譯安裝 docker-php-ext-install gd # 檢查擴展是否安裝成功 php -m | grep gd # 退出php容器終端 exit # 重啓php容器 ……
若是網站圖形驗證碼還顯示不出來,報錯以下:
Fatal error: Call to undefined function core\extend\code\imagettftext()
按照如下步驟進行:
docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include 從新編譯: docker-php-ext-install gd
若是報錯:
configure: error: freetype-config not found.
運行: apt install libfreetype6-dev
,而後再繼續運行上面的命令。
gd庫中有了freetype,則驗證碼顯示正常了。
同理,若是提示沒有mysqli擴展,執行 docker-php-ext-install mysqli
命令再重啓php容器便可。
此命令在PHP容器中建立一個/usr/src/php的目錄,裏面放了一些自帶的文件而已。咱們就把它看成一個從互聯網中下載下來的PHP擴展源碼的存放目錄便可。事實上,全部PHP擴展源碼擴展存放的路徑: /usr/src/php/ext 裏面。
格式:
docker-php-source extract | delete
參數說明:
* extract : 建立並初始化 /usr/src/php目錄
* delete : 刪除 /usr/src/php目錄
這個命令是用來啓動 PHP擴展 的。咱們使用pecl安裝PHP擴展的時候,默認是沒有啓動這個擴展的,若是想要使用這個擴展必需要在php.ini這個配置文件中去配置一下才能使用這個PHP擴展。而 docker-php-ext-enable 這個命令則是自動給咱們來啓動PHP擴展的,不須要你去php.ini這個配置文件中去配置。
這個命令是用來安裝並啓動PHP擴展的。
命令格式:
docker-php-ext-install 「源碼包目錄名」
注意點: