Docker中安裝各種環(huán)境

Docker安裝請參考:【Linux下安裝Docker CE

正式開始前,我們需要簡單了解Docker容器的常用操作命令:

Docker啟動容器的方式兩種

  • 以交互式啟動容器:docker run -it --name 容器名稱 鏡像 /bin/bash 以這種方式啟動Docker容器,會在容器啟動后進入容器內(nèi),可以對容器進行操作。
  • 以守護進程方式啟動容器:docker run -d --name 容器名稱 鏡像 以這種方式啟動Docker容器,在容器啟動后不會進入容器內(nèi)。后續(xù)如果需要對容器進行操作,可以執(zhí)行命令:docker exec -it 容器名稱(容器ID) /bin/bash

Docker啟動容器的一些啟動參數(shù)

  • --name 容器名稱:設(shè)置容器的名稱(對已存在的容器,名稱需唯一)
  • --restart=always:設(shè)置容器自啟動(默認為非自啟動,根據(jù)需要設(shè)置)
  • --link <name or id>:alias:將源容器的網(wǎng)絡(luò)并入當(dāng)前容器的網(wǎng)絡(luò),Docker會將源容器的host更新到當(dāng)前容器的/etc/hosts中,以此來獲取源容器的信息,并與之建立通信和傳遞數(shù)據(jù)。<name or id>是源容器的名稱或ID,alias是源容器在link下的別名。
  • -p xx:yy:端口映射,將宿主機的xx端口,映射到容器內(nèi)的yy端口
  • -e XXX=yy:設(shè)置容器內(nèi)的環(huán)境變量,將XXX環(huán)境變量設(shè)置為yy。例如啟動MySQL容器時使用-e MYSQL_ROOT_PASSWORD=123 將MySQL的root用戶密碼初始化為123。
  • -v xxx:yyy:zz:將容器內(nèi)的yyy目錄掛載到宿主機的xxx目錄(Docker不推薦掛載文件),:zz是掛載路徑的權(quán)限,可以不設(shè)置,默認為:rw(讀寫模式),可以設(shè)置為:ro(只讀模式)。例如啟動Nginx容器時使用-v ~/nginx/www:/usr/share/nginx/html:ro 將容器內(nèi)的/usr/share/nginx/html目錄掛載到宿主機的~/nginx/www目錄,即/root/nginx/www目錄,并且設(shè)置掛載路徑權(quán)限為只讀模式。

Docker容器啟動、停止、重啟

  • Docker容器啟動:docker start 容器名稱(容器ID)
  • Docker容器停止:docker stop 容器名稱(容器ID)
  • Docker容器重啟:docker restart 容器名稱(容器ID)

查看Docker容器

  • 查看全部容器:docker ps -a
  • 查看正在運行的容器:docker ps

宿主機與Docker容器的文件傳輸
docker cp 源路徑 目標路徑 將源路徑的文件或目錄復(fù)制到目標路徑中

刪除Docker容器
docker rm 容器名稱(容器ID) 在刪除容器之前,需要停止容器。

刪除Docker鏡像
docker rmi 容器名稱:標簽(容器ID)

一、Docker中安裝MySQL

1. 拉取MySQL鏡像
以MySQL5.7.25為例
docker pull mysql:5.7.25
以MySQL8.0.33為例
docker pull mysql:8.0.33
2. 此時可以查看已有的鏡像
docker images
3. 啟動MySQL容器
以MySQL5.7.25為例
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.25
以MySQL8.0.33為例
docker run -d --restart=always --privileged=true --name mysql8 -v /data/mysql/conf:/etc/mysql -v /data/mysql/data:/var/lib/mysql -v /data/mysql/log:/var/log -v /data/mysql/mysql-files:/var/lib/mysql-files -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.33

  • -v /data/mysql/conf:/etc/mysql:將MySQL配置文件掛載到宿主機的/data/mysql/conf目錄
  • -v /data/mysql/data:/var/lib/mysql:將MySQL數(shù)據(jù)文件掛載到宿主機的/data/mysql/data目錄
  • -v /data/mysql/log:/var/log:將MySQL日志文件掛在到宿主機的/data/mysql/log目錄
  • -v /data/mysql/mysql-files:/var/lib/mysql-files:MySQL8掛載文件時需要掛載此目錄
  • --privileged=true:解決報錯cannot access '/docker-entrypoint-initdb.d/': Operation not permitted的權(quán)限問題
  • -p 3306:3306:將宿主機的3306端口映射到容器內(nèi)的3306端口
  • --name mysql:設(shè)置容器名稱為mysql
  • -e MYSQL_ROOT_PASSWORD=123456:初始化root用戶的密碼為123456

4. 查看容器
docker psdocker ps -a

二、Docker中安裝Tomcat并部署Web項目

1. 拉取Tomcat鏡像,此處以Tomcat8.5.40為例
docker pull tomcat:8.5.40
2. 啟動Tomcat容器
docker run -d -p 8080:8080 --name tomcat tomcat:8.5.40
3. 部署Web應(yīng)用
(1)將war包上傳到宿主機中;
(2)通過docker cp命令將宿主機的war包上傳到容器中tomcat的webapps目錄下;
(3)tomcat會自動熱部署,直接訪問Web應(yīng)用的路徑即可。
例如:docker cp xxx.war tomcat:/usr/local/tomcat/webapps 將xxx.war包上傳到名稱為tomcat的容器中的/usr/local/tomcat/webapps路徑下。

三、Docker中安裝Nginx + PHP

安裝PHP

1. 拉取PHP鏡像,此處以PHP7.1-fpm為例
docker pull php:7.1-fpm
2. 啟動PHP容器
docker run -d --name php-fpm -v /root/docker/nginx/www:/var/www/html php:7.1-fpm

  • -v /root/docker/nginx/www:/var/www/html:將容器內(nèi)的/var/www/html目錄掛載到宿主機的/root/docker/nginx/www目錄,掛載路徑的權(quán)限使用默認的:rx(讀寫模式)。

3. 創(chuàng)建/root/docker/nginx/conf/conf.d目錄
mkdir /root/docker/nginx/conf/conf.d
4. 在/root/docker/nginx/conf/conf.d目錄下添加default.conf文件,在該文件中添加以下內(nèi)容

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;
    }
}

說明:

  • php:9000 表示 php-fpm 服務(wù)的訪問路徑
  • /var/www/html 是 php-fpm 中 php 文件的存儲路徑,經(jīng) Docker 目錄掛載,變成了宿主機的路徑 /root/docker/nginx/www

安裝Nginx

1. 拉取Nginx鏡像,此處以Nginx1.14.2為例
docker pull nginx:1.14.2
2. 啟動Nginx容器

  • 如果不需要關(guān)聯(lián)PHP,執(zhí)行以下命令即可
docker run -d -p 80:80 --name nginx \
-v /root/docker/nginx/www:/usr/share/nginx/html \
-v /root/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx:1.14.2
  • 如果需要關(guān)聯(lián)PHP,執(zhí)行以下命令即可
docker run -d -p 80:80 --name nginx \
-v /root/docker/nginx/www:/usr/share/nginx/html \
-v /root/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
--link php-fpm:php nginx:1.14.2
  • --link php-fpm:php 把 php-fpm 的網(wǎng)絡(luò)并入 nginx,Docker會自動修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,讓 nginx 通過 php:9000 訪問 php-fpm。

3. 最后的配置
將nginx.conf配置文件放入/root/docker/nginx/conf目錄下,在/root/docker/nginx/www目錄下放入想要訪問的文件即可。例如放入兩個文件index.html和index.php,在index.html中輸入任意內(nèi)容,在index.php中輸入以下內(nèi)容:

<?php
echo phpinfo();
?>

最后就可以直接通過相應(yīng)的路徑進行訪問。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容