日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker实战(精简版本)

發布時間:2024/9/27 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker实战(精简版本) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Docker 簡介:

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。

什么是Docker?

Docker特點:

  • (1)上手快
  • (2)職責的邏輯分類
  • (3)快速高效的開發生命周期
  • (4)鼓勵使用面向服務的架構

Docker組件:

Docker客戶端和服務器

Docker是一個客戶端-服務器(C/S)架構程序。Docker客戶端只需要向Docker服務器或者守護進程發出請求,服務器或者守護進程將完成所有工作并返回結果。Docker提供了一個命令行工具Docker以及一整套RESTful API。你可以在同一臺宿主機上運行Docker守護進程和客戶端,也可以從本地的Docker客戶端連接到運行在另一臺宿主機上的遠程Docker守護進程。

二、Docker安裝與啟動

在VMware Workstation中安裝CentOS7

使用ip addr命令查看本地IP:

ip addr

使用yum命令在線安裝Docker:

yum install docker

安裝后查看Docker版本:

docker -v

啟動與停止Docker

前提:docker是一個C/S架構,操作docker必須先啟動docker 服務端
systemctl命令是系統服務管理器指令,它是 service 和 chkconfig 兩個命令組合。

  • 啟動docker:
systemctl start docker
  • 停止docker:
systemctl stop docker
  • 重啟docker:
systemctl restart docker
  • 查看docker狀態:
systemctl status docker
  • 開機啟動:
systemctl enable docker

三、 Docker鏡像操作

列出docker下的所有鏡像:

docker images

  • REPOSITORY:鏡像所在的倉庫名稱
  • TAG:鏡像標簽
  • IMAGE ID:鏡像ID
  • CREATED:鏡像的創建日期(不是獲取該鏡像的日期)
  • SIZE:鏡像大小
  • 這些鏡像都是存儲在Docker宿主機的/var/lib/docker目錄下

    搜索鏡像:
docker search 鏡像名稱

  • NAME:倉庫名稱
  • DESCRIPTION:鏡像描述
  • STARS:用戶評價,反應一個鏡像的受歡迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自動構建,表示該鏡像由Docker Hub自動構建流程創建的

使用命令拉取鏡像:

docker pull centos:7

查看所有鏡像:

docker images

添加ustc的鏡像
ustc是老牌的linux鏡像服務提供者了,還在遙遠的ubuntu 5.04版本的時候就在用。ustc的docker鏡像加速器速度很快。ustc docker mirror的優勢之一就是不需要注冊,是真正的公共服務。

https://lug.ustc.edu.cn/wiki/mirrors/help/docker

步驟:

  • (1)編輯該文件:vi /etc/docker/daemon.json //
    如果該文件不存在就手動創建;說明:在centos7.x下,通過vi。
  • (2)在該文件中輸入如下內容:
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }

(3)注意:一定要重啟docker服務,如果重啟docker后無法加速,可以重新啟動OS
然后通過docker pull命令下載鏡像:速度杠杠的。

  • 刪除指定鏡像
docker rmi $IMAGE_ID

查看zookeeper鏡像是否已經刪除:

刪除所有鏡像

docker rmi `docker images -q`

操作原理:先查詢出所有鏡像ID ,在進行刪除

列出所有鏡像ID

docker images -q

四、 Docker容器操作

查看容器

查看正在運行容器:

docker ps

查看所有的容器(啟動過的歷史容器):

docker ps -a

查看最后一次運行的容器:

docker ps –l

查看停止的容器:

docker ps -f status=exited

創建與啟動容器

創建容器常用的參數說明:

創建容器命令:

docker run
  • -i:表示運行容器

  • -t:表示容器啟動后會進入其命令行。加入這兩個參數后,容器創建就能登錄進去。即分配一個偽終端。

  • –name :為創建的容器命名。

  • -v:表示目錄映射關系(前者是宿主機目錄,后者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。

  • -d:在run后面加上-d參數,則會創建一個守護式容器在后臺運行(這樣創建容器后不會自動登錄容器,如果只加-i -t兩個參數,創建后就會自動進去容器)。

  • -p:表示端口映射,前者是宿主機端口,后者是容器內的映射端口。可以使用多個-p做多個端口映射

交互式容器

原理:創建容器并進入容器,退出容器,服務停止。
創建一個交互式容器并取名為mycentos

docker run -it --name=mycentos centos:7 /bin/bash

注:–name=mycentos指的是容器名稱 centos:7 鏡像名稱 執行命令完成后,就已經進入centos7容器了,和宿主機centos7一樣,只不過一個是宿主機,另一個是容器而已。
復制會話,這時我們通過ps命令查看,發現可以看到啟動的容器,狀態為啟動狀態
執行命令:docker ps

使用exit命令 退出當前容器

然后用ps -a 命令查看發現該容器也隨之停止:

守護式容器

前提:創建容器,不進行容器,后臺啟動,只要不關閉容器,容器就一直處于啟動狀態。
創建一個守護式容器:如果對于一個需要長期運行的容器來說,我們可以創建一個守護式容器。命令如下(容器名稱不能重復):

docker run -di --name=mycentos1 centos:7


查看容器是否啟動:

登錄守護式容器方式:

docker exec -it container_name (或者 container_id) /bin/bash

(exit退出時,容器不會停止)

退出容器:

查看狀態:

從圖中可以看出,exit退出容器,mycentos1容器,還是可以正常處于啟動狀態。

停止與啟動容器

停止正在運行的容器:

docker stop $CONTAINER_NAME/ID


執行命令容器停止后,查看容器啟動狀態:

啟動已運行過的容器:

docker start $CONTAINER_NAME/ID

前提:先查看那些容器啟動過

查看啟動過的容器:

docker ps -a


在執行啟動以前啟動過的容器命令:

docker start mycentos1

文件拷貝

前提:容器服務必須啟動才可以進行文件拷貝

如果我們需要將文件拷貝到容器內可以使用cp命令

docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄

案例演示:
在宿主機上創建/testfile文件:
執行命令:

echo 123 > testfile


把宿主機testfile文件復制到mycentos1 /usr/loca目錄下:
執行命令:

docker cp testfile mycentos1:/usr/local


登錄容器查看文件在/usr/lcoal目錄下面是否存在:
登錄mycentos1容器:


也可以將文件從容器內拷貝出來
docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄
案例演示:
先把宿主機上的testfile文件刪除,在從mycentos1容器中將mycentos1 /usr/lcoal 目錄下面的testfile文件復制到宿主機上。
第一步:刪除宿主機上的testfile文件:

第二步:將mycentos1容器中將mycentos1 /usr/lcoal 目錄下面的testfile文件復制到宿主機上。
執行命令:

docker cp mycentos1:/usr/local/testfile newTestfile docker cp mycentos1:/usr/local/test2 /usr

格式:docker cp 容器名:目錄下的文件/目錄 文件名/目錄名

注:后臺的文件名如果不一致,代表重命名

目錄掛載

我們可以在創建容器的時候,將宿主機的目錄與容器內的目錄進行映射,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器。
創建容器 添加-v參數 后邊為 宿主機目錄:容器目錄

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7

格式1:docker run -di -v 宿主機目錄:容器目錄 –name=新的容器名 鏡像名稱:tag
格式2:docker run -di –name=新的容器名 -v 宿主機目錄:容器目錄 鏡像名稱:tag
案例演示01:
1、在宿主機/usr/local/myhtml創建目錄:

2、創建一個新的容器與宿主機進行目錄掛在,也就是目錄共享,改變宿主機掛在目錄下的文件,容器中的文件隨之改變。
執行命令:

docker run -di --name=mycentos2 -v /usr/local/myhtml/:/usr/local/nh centos:7

格式:docker run -di --name=新的容器名 -v 宿主機目錄:容器目錄 鏡像名稱:tag

查看剛啟動的容器:

登錄容器,查看在/usr/lcoal容器目錄下面是否存在nh目錄:

在宿主機的/usr/local/myhtml目錄下,添加index.html文件:

登錄容器,查看在,mycentos2容器的/usr/local/nh/目錄下面是否存在index.html

案例演示02(重點):
上傳cas文件夾到宿主機掛載目錄/usr/local/myhtml下面,登錄容器,查看文件?

先查看運行的容器,登錄容器,查看:

注:如果你共享的是多級的目錄,可能會出現權限不足的提示。
解決方案:這是因為CentOS7中的安全模塊selinux把權限禁掉了,我們需要添加參數 --privileged=true 來解決掛載的目錄沒有權限的問題

docker run -di --name=mycentos3 -v /usr/local/myhtml/:/usr/local/mh --privileged=true centos:7


查看容器是否啟動:

登錄容器,查看文件是否有權限:

可以正常查看文件!!!

4.6查看容器IP地址
我們可以通過以下命令查看容器運行的各種數據

docker inspect mycentos2


注:此命令需要在宿主機上執行,容器內部無效。

也可以直接執行下面的命令直接輸出IP地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2


4.7刪除容器
刪除指定的容器:

docker rm $CONTAINER_ID/NAME


注意,只能刪除停止的容器
效果圖:

刪除所有容器:

docker rm `docker ps -a -q`

五、部署應用

5.1 MySQL部署
5.1.1拉取MySQL鏡像

docker pull mysql


查看鏡像

5.1.2創建MySQL容器

docker run -di –name=pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql


-p 代表端口映射,格式為 宿主機映射端口:容器運行端口
-e 代表添加環境變量 MYSQL_ROOT_PASSWORD是root用戶的登陸密碼
5.1.3進入MySQL容器,登陸MySQL
進入mysql容器

docker exec -it pinyougou_mysql /bin/bash


在容器中,登陸mysql

mysql -u root -p


在容器中,退出mysql,然后從容器中退出到宿主機:

查看,正在運行的容器:

5.1.4遠程登陸MySQL
(1)我們在我們本機的電腦上去連接虛擬機Centos中的Docker容器,這里192.168.45.13是虛擬機操作系統的IP

(2)在本地客戶端執行建庫腳本
執行“資源/建庫語句/pinyougoudb.sql”

(1)我們在我們本機的電腦上去連接虛擬機Centos中的Docker容器,這里192.168.45.142是虛擬機操作系統的IP

(2)在本地客戶端,創建數據庫病,執行建庫腳本
執行“資源/建庫語句/pinyougoudb.sql”





5.1.5查看容器IP地址
我們可以通過以下命令查看容器運行的各種數據
docker inspect pinyougou_mysql

運行效果如下:

我們可以看到我們的數據庫服務器的IP是172.17.0.3
5.2 tomcat部署
5.2.1拉取tomcat鏡像
docker pull tomcat:7-jre7
5.2.2創建tomcat容器
創建容器用于部署單點登錄系統(CAS) -p表示地址映射:
docker run -di --name=pinyougou_tomcat -v /usr/local/myhtml/:/usr/local/tomcat/webapps --privileged=true -p 9000:8080 tomcat:7-jre7

docker run -di --name=pinyougou_tomcat -v /usr/local/myhtml/:/usr/local/tomcat/webapps --privileged=true -p 9000:8080 tomcat:7-jre7

格式:
–privileged=true :權限賦予
9000:8080:端口映射
7-jre7 指:tag

查看tomcat容器啟動狀態:docker ps

瀏覽器驗證:
http://192.168.45.142:9000/cas/login

5.2.3部署web應用
(1)修改cas系統的配置文件,修改數據庫連接的url

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"p:driverClass="com.mysql.jdbc.Driver"p:jdbcUrl="jdbc:mysql://172.17.0.3:3306/pinyougoudb?characterEncoding=utf8"p:user="root"p:password="root" />

測試:地址欄輸入:http://192.168.45.142:9000/cas/login
tomcat和mysql聯通:


5.3 Nginx部署
5.3.1拉取Nginx鏡像
docker pull nginx
5.3.2創建Nginx容器
docker run -di --name=pinyougou_nginx -p 80:80 nginx/bin/bash


5.3.3測試Nginx
瀏覽器地址欄輸入: http://192.168.45.142

5.3.4配置反向代
官方的nginx鏡像,nginx配置文件nginx.conf 在/etc/nginx/目錄下。
在容器內編輯配置文件不方便,我們可以先將配置文件從容器內拷貝到宿主機,編輯修改后再拷貝回去。
(1)從容器拷貝配置文件到宿主機

docker cp pinyougou_nginx:/etc/nginx/nginx.conf nginx.conf

查看容器中是否有這個文件:


(2)編輯nginx.conf,添加反向代理配置
前提:查看tomcat端口:

upstream tomcat-cas {server 172.17.0.4:8080;}server {listen 80;server_name passport.pinyougou.com;location / {proxy_pass http://tomcat-cas;index index.html index.htm;}}

(3)將修改后的配置文件拷貝到容器

docker cp nginx.conf pinyougou_nginx:/etc/nginx/nginx.conf


(4)重新啟動容器

docker restart pinyougou_nginx


(5)設置域名指向
192.168.45.142 passport.pinyougou.com
瀏覽器測試:http:// passport.pinyougou.com/cas/login

5.4 Redis部署
5.4.1拉取Redis鏡像

docker pull redis

5.4.2創建Redis容器

docker run -di --name=pinyougou_redis -p 6379:6379 redis

5.4.3客戶端測試
在你的本地電腦命令提示符下,用window版本redis測試

redis-cli -h 192.168.247.135

六、備份與遷移

6.1容器保存為鏡像
我們可以通過以下命令將容器保存為鏡像

docker commit pinyougou_nginx mynginx
  • pinyougou_nginx是容器名稱
  • mynginx是新的鏡像名稱

此鏡像的內容就是你當前容器的內容,接下來你可以用此鏡像再次運行新的容器
6.2鏡像備份

docker save -o mynginx.tar mynginx

-o 輸出到的文件
執行后,運行ls命令即可看到打成的tar包
6.3鏡像恢復與遷移
首先我們先刪除掉mynginx鏡像
然后執行此命令進行恢復

docker load -i mynginx.tar

-i 輸入的文件
執行后再次查看鏡像,可以看到鏡像已經恢復

總結

以上是生活随笔為你收集整理的Docker实战(精简版本)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。