1. 程式人生 > 其它 >PHP 底層的執行機制與原理

PHP 底層的執行機制與原理

docker操作:

檢視docker執行狀態:

systemctl status docker

啟動docker:

systemctl start docker

關閉docker:

systemctl stop docker

重啟docker:

systemctl restart docker

開機自啟動docker:

systemctl enable docker

一般安裝的docker下載映象都是從國外的網站去下載,所以最好更換一下映象源,換成國內的映象倉庫,見下面的docker安裝。

 

映象的操作:

查詢映象:

docker search 映象名

拉取映象:

docker pull 映象名:版本  // 如果沒有寫版本號,預設拉取的是最新版本的映象

檢視本地的映象:

docker images

刪除映象:

docker rmi 映象名/映象id

查詢所有的映象id:

docker iamges -q

批量刪除映象:

docker rmi `docker images -q`

 


 

容器的操作:

要區分:run是建立容器(根據映象檔案建立新的容器),start是啟動容器(啟動一個已經建立的容器)

建立容器及引數說明:

docker run
​
-i: 表示執行容器
-t: 表示容器啟動後會進入容器(互動式)
-name: 為建立的容器命名
-d: 建立一個守護式容器在後臺執行 -P(大寫): 預設的對映埠 -p(小寫): 指定對映埠,前者是宿主機埠,後者是容器內的對映埠(前大後小)。可以使用多個-p做多個埠對映 -v: 指定目錄對映關係(前者是宿主機目錄,後者是對映到宿主機上的目錄),可以使用多個-v做多個目錄或檔案對映。注意:最好做目錄對映,在宿主機上做修改,然後共享到容器上

建立互動式容器(並進入容器控制檯):

docker run -it 映象名 /bin/bash
​
退出容器:
exit

檢視正在執行的容器:

docker ps

檢視所有的容器(執行或關閉):

docker ps -a 

檢視所有的容器id:

docker ps -a -q

刪除容器:

docker rm 容器名/容器id

批量刪除容器:

docker rm `docker ps -a -q`

啟動容器:

docker start 容器id/容器名

關閉容器:

docker stop 容器id/容器名    // 執行慢
​
docker kill 容器id/容器名    // 執行快

進入正在執行的容器:

docker exec -it 容器名/容器id /bin/bash

 


 

 

安裝docker:

1 解除安裝系統之前的docker 
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
​
2  設定儲存庫
sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
3  安裝DOCKER引擎
sudo yum install docker-ce docker-ce-cli containerd.io
​
4  啟動Docker.
sudo systemctl start docker
​
5 配置映象加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://chqac97z.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
​
更多映象加速地址:
科大映象:https://docker.mirrors.ustc.edu.cn/
網易:https://hub-mirror.c.163.com/
阿里雲:https://<你的ID>.mirror.aliyuncs.com
七牛雲加速器:https://reg-mirror.qiniu.com

docker安裝mysql:

注意:最好指定容器掛載的目錄,很多教程都沒有

sudo docker pull mysql:5.7
​
# --name指定容器名字 -v目錄掛載 -p指定埠對映  -e設定mysql引數 -d後臺執行
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=你的密碼 \
-d mysql:5.7

修改mysql的字符集:

因為有目錄對映,所以我們可以直接在映象外執行
vi /mydata/mysql/conf/my.conf 
​
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

 

注意:使用navicat進行遠端連線時,需要在雲伺服器裡面進行安全組的設定,開放3306埠。

 


docker安裝redis:

# 在虛擬機器中
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
​
docker pull redis
​
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
​
# 直接進去redis客戶端。
docker exec -it redis redis-cli

預設是不持久化的。在配置檔案中輸入appendonly yes,就可以aof持久化了,修改完docker restart redis。

vim /mydata/redis/conf/redis.conf
# 插入下面內容
# aof
appendonly yes
​
#
protected-mode no
​
#password
requirepass 你的密碼
​
docker restart redis

設定redis容器在docker啟動的時候啟動

docker update redis --restart=always

mysql同理

其它應用安裝可參考: https://www.runoob.com/docker/docker-tutorial.html

 
   

遇到的問題:

重啟伺服器

docker ps -a 
提示:cannot connect to the docker daemon at unix ///var/run/docker.sock. Is the docker daemon running? 

原因:

docker 容器掛了

解決方法:

dockerd // 重新執行

 


 

 docker高階應用(待解鎖):

Docker Dockerfile

定製映象

Docker Compose

Compose 是用於定義和執行多容器 Docker 應用程式的工具。通過 Compose,您可以使用 YML 檔案來配置應用程式需要的所有服務。然後,使用一個命令,就可以從 YML 檔案配置中建立並啟動所有服務。

Docker Machine

Docker Machine 是一種可以讓您在虛擬主機上安裝 Docker 的工具,並可以使用 docker-machine 命令來管理主機。

Swarm叢集管理

Docker Swarm 是 Docker 的叢集管理工具。它將 Docker 主機池轉變為單個虛擬 Docker 主機。 Docker Swarm 提供了標準的 Docker API,所有任何已經與 Docker 守護程式通訊的工具都可以使用 Swarm 輕鬆地擴充套件到多個主機。