目錄
0、引言
docker經驗整理,技術一定要實踐,總結,’難者不會,會者不難‘。
話不多說,搞起 :
1,安裝及卸載
2,拉取鏡像,創建容器
3,容器搭建 centos7 + apache + php7.4
4,服務器使用 nginx 代理到各個容器
1、安裝及卸載
1.1 安裝
使用 Docker 倉庫進行安裝
設置倉庫
安裝所需的軟件包。yum-utils 提供了 yum-config-manager ,並且 device mapper 存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用以下命令來設置穩定的倉庫
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安裝 Docker Engine-Community
安裝最新版本的 Docker Engine-Community 和 containerd
yum install -y docker-ce docker-ce-cli containerd.io
啓動
systemctl enable docker //開機啓動
systemctl start docker //啓動
systemctl stop docker //停止
systemctl restart docker //重啓
1.2 卸載
卸載主要使用三個命令
- 查詢安裝過的包
yum list installed | grep docker
- 刪除安裝的軟件包
yum -y remove docker-ce.x86_64 docker-ce-cli.x86_64
- 刪除鏡像/容器等
rm -rf /var/lib/docker
我的執行結果 :
2、拉取鏡像,創建容器
2.1 拉取鏡像
- 搜索鏡像:docker search 鏡像名稱
docker search centos
- 拉取鏡像:docker pull 鏡像名稱:標籤
//不加tag,會拉取最新 tag:latest
docker pull centos
等價於
docker pull centos:latest
- 刪除鏡像:docker rmi 鏡像名稱:標籤
docker rmi centos:latest
- 怎麼拉取指定版本?
如果需要指定版本可以前往 https://hub.docker.com 搜索對應鏡像的所有tag,選擇下載
比如:搜索 centos 點擊想要的鏡像來源, 點擊Tags,列舉出所有的版本,複製下載命令
可能出現問題
a. Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
b. 鏡像拉取慢(docker pull)
解決方法
修改鏡像源
//1.編輯文件 /etc/docker/daemon.json 有則修改,沒有則創建
vi /etc/docker/daemon.json
//2.將以下代碼加入到文件中,我使用的是阿里源
{
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}
//3.保存
:wq
//4.重啓docker
systemctl restart docker
2.2 創建容器
- 查看鏡像
docker images
- 創建容器
docker run -d --name phpdev1 \
-v /mnt/www/test.jocker.com:/var/www/html \
-p 0.0.0.0:90:90/tcp \
--privileged \
centos:7.7.1908 \
/usr/sbin/init
這裏的創建命令主要針對 centos ,其他容器會有所調整
- 查看容器
docker ps //運行中的容器
docker ps -a //所有容器
- 容器操作相關命令
docker start 容器id 容器id ... //啓動一個或多個已經被停止的容器
docker stop 容器id 容器id ... //停止一個或多個運行中的容器
docker restart 容器id //重啓容器
docker rm 容器id //刪除已經被停止的容器
我的執行結果 :
3、容器搭建 centos7 + apache + php7.4
centos7 我們已經拉取下來並且創建好容器了,下面就是進入容器,搭建環境
- 進入容器
docker exec -it 容器id /bin/bash
docker exec -it 81f3cbd1c65e /bin/bash //我的操作記錄
- yum 安裝相應擴
//1. apache
yum -y install httpd //yum安裝
vi /etc/httpd/conf/httpd.conf //修改Listen 端口爲創建容器時指定的端口90
systemctl enable httpd //開機啓動
systemctl start httpd //運行apache
//2. php7.4
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --enable remi-php74
yum -y install php php-cli
yum -y install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
4、服務器使用 nginx 代理到各個容器
- 創建多個容器
因爲這個容器的環境已經配置好了,可以將這個容器commit爲鏡像保存,做爲一個基礎的環境鏡像。可以通過這個鏡像直接生成新的容器。
添加新的容器,只需要修改httpd.conf 的 Listen ,容器綁定的端口即可。
docker commit 容器id 鏡像名稱:版本 //通過容器 創造 鏡像
docker commit 81f3cbd1c65e basedev:v1 //我的操作
- 修改服務器上nginx配置文件,添加server,大概如下
vim /etc/nginx/nginx.conf
//添加新的 server
server {
listen 91;
server_name test1.joker.com;
location / {
proxy_pass http://localhost:91;
}
}
server {
listen 92;
server_name test2.joker.com;
location / {
proxy_pass http://localhost:92;
}
}
5、總結
本次主要記錄總結了下,自己搭建docker環境,遇到的問題,實際業務中的架構會比這更復雜,會有很多變化,負載,K8s等,但是核心基礎不會改變。
文章中有些詳細的命令,和參數沒做講解,因爲都有對應的官方文檔,官方文檔很重要,一定要仔細閱讀。