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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【云原生】-Docker容器技术小结

發布時間:2024/1/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【云原生】-Docker容器技术小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

📢📢📢📣📣📣
哈嘍!大家好,我是【IT邦德】,江湖人稱jeames007,10年DBA工作經驗
一位上進心十足的【大數據領域博主】!😜😜😜
中國DBA聯盟(ACDU)成員,目前從事DBA及程序編程
擅長主流數據Oracle、MySQL、PG 運維開發,備份恢復,安裝遷移,性能優化、故障應急處理等。
? 如果有對【數據庫】感興趣的【小可愛】,歡迎關注【IT邦德】💞💞💞
??????感謝各位大可愛小可愛!??????

文章目錄

  • 前言
    • ?? 1.什么是Docker?
    • ?? 2.安裝Docker
      • ? 2.1 安裝依賴包
      • ? 2.2 啟動 Docker
      • ? 2.3 修改Docker存儲位置
    • ?? 3.Docker常用命令
      • ? 3.1 創建容器
      • ? 3.2 進入容器
      • ? 3.3 其他
    • ?? 4.Docker卸載
    • ?? 5.Docker日常運維
      • ? 5.1 如何上傳鏡像到容器
      • ? 5.2 docker 創建容器時指定容器ip
      • ? 5.3 docker容器啟動后添加端口映射

前言

以下為本人當年初學Docker時做的筆記,一直在更新中,囊括了基本的知識點,有時還翻出來查查, 是不是干貨,就看親們了。

?? 1.什么是Docker?

可以簡單認為,容器是一個超級輕量級的虛擬機(主機),容器和容器之間的進程是相互隔離的。

Docker 利用容器(Container)獨立運行的一個或一組應用。
容器是用鏡像創建的運行實例。
它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)
和運行在其中的應用程序。容器的定義和鏡像幾乎一模一樣,
也是一堆層的統一視角,
唯一區別在于容器的最上面那一層是可讀可寫的。

倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
最大的公開倉庫是 Docker Hub:https://hub.docker.com,存放了數量龐大的鏡像供用戶下載。
國內的公開倉庫包括阿里云 、網易云等

Docker 運行在 CentOS 7 上,要求系統為64位、系統內核版本為 3.10 以上。
Docker 運行在 CentOS-6.5 或更高的版本的 CentOS 上,
要求系統為64位、系統內核版本為 2.6.32-431 或者更高版本CentOS 7 的內核一般都是3.10的,
而CentOS 6.X 的內核一般都是2.6,
在2.6的內核下,Docker運行會比較卡,所以一般會選擇升級到3.10版本。

?? 2.安裝Docker

? 2.1 安裝依賴包

yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo
[root@centos7 ~] yum -y install docker-ce docker-ce-cli containerd.io

? 2.2 啟動 Docker

[root@centos7 ~]# systemctl enable docker
[root@centos7 ~]# systemctl start docker
[root@centos7 ~]# systemctl status docker

? 2.3 修改Docker存儲位置

默認情況下 Docker的存放位置為:/var/lib/docker
可以通過命令查看具體位置:docker info | grep “Docker Root Dir”
首先停掉 Docker 服務:
systemctl stop docker
然后移動整個/var/lib/docker 目錄到目的路徑
mkdir -p /root/data
mv /var/lib/docker /root/data/docker
ln -s /root/data/docker /var/lib/docker --快捷方式

?? 3.Docker常用命令

📢📢📢 國內鏡像:https://hub.daocloud.io/

📢📢📢 官方鏡像 https://hub.docker.com

? 3.1 創建容器

#從網絡拉取鏡像 docker pull centos:7.8.2003 # 創建一個容器,包括了 CentOS 7.8 運行的一些基礎環境 #docker images --鏡像 REPOSITORY TAG IMAGE ID CREATED SIZE daocloud.io/library/centos 8.2.2004 831691599b88 7 months ago 215MB centos 7.8.2003 afb6fca791e0 8 months ago 203MBdocker run -d --name centos7.8 -h centos7.8 \ -p 220:22 -p 3387:3389 \ --privileged=true \ centos:7.8.2003 /usr/sbin/init#我想擁有一個 linux 8.2 的環境 docker run -d --name centos8.2 -h centos8.2 \ -p 230:22 -p 3386:3389 \ --privileged=true \ daocloud.io/library/centos:8.2.2004 init

? 3.2 進入容器

docker exec -it centos7.8 bash docker exec -it centos8.2 bash cat /etc/redhat-release --查看系統版本#制作鏡像 docker commit centos7.8 centos7.8_test:1.0 --名稱+版本號

? 3.3 其他

docker ps --查詢容器 docker rm -f ***** --刪除容器(可以刪除多個) docker rmi mysql:1.0 --刪除鏡像 docker images --鏡像 docker images | grep centos --查詢鏡像 鏡像可以導入,也可以導入,用于生產環境 docker cp ***** centos7.8:/ --把宿主機的文件拷貝到docker容器中 docker stop centos7.8 --停止容器 systemctl restart docker --重啟所有的docker docker search ubuntu --查詢是否有鏡像 docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" --格式化查詢 docker network connect *** MHA-MES-Master1-ip131 --添加指定的網卡 docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt --拷貝容器的內容到宿主機 docker ps | grep -i mh --過濾查詢 如果創建時未指定 --restart=always ,可通過update 命令:docker update --restart=always centos7.8sudo docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) sudo docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) docker container update --restart=always 容器名字查看所有容器內ip docker inspect --format='{{.NetworkSettings.IPAddress}}' $(docker ps -a -q)

?? 4.Docker卸載

查看已安裝的docker
yum list installed | grep docker
運行之后顯示如下:
[root@docker ~]# yum list installed | grep docker
containerd.io.x86_64 1.4.3-3.1.el7 @docker-ce-stable
docker-ce.x86_64 3:20.10.2-3.el7 @docker-ce-stable
docker-ce-cli.x86_64 1:20.10.2-3.el7 @docker-ce-stable
docker-ce-rootless-extras.x86_64 20.10.2-3.el7 @docker-ce-stable
依次刪除:
yum -y remove docker-ce.x86_64
yum -y remove docker-ce-cli.x86_64
yum -y remove containerd.io.x86_64
接著刪除docker儲存的文件、鏡像、容器…,該文件存放在 /var/lib/docker 目錄下:
rm -rf /var/lib/docker

?? 5.Docker日常運維

? 5.1 如何上傳鏡像到容器

–停止容器
[root@jeames ~]# docker stop jemora11203
–從容器創建一個新的鏡像
docker commit jemora11203 jemora11g:11203
[root@jeames ~]# docker images
–用鏡像制作tag
docker tag jemora11g:11203 techerwang/oracle:ora11g11203
–上傳至官網
docker push techerwang/oracle:ora11g11203

? 5.2 docker 創建容器時指定容器ip

Docker創建容器時默認采用bridge網絡,自行分配ip,不允許自己指定。
在實際部署中,我們需要指定容器ip,不允許其自行分配ip,尤其是搭建集群時,固定ip是必須的。
我們可以創建自己的bridge網絡 : mynet,創建容器的時候指定網絡為mynet并指定ip即可
[root@docker ~]# docker network ls – 查看網絡模式
[root@docker ~]# docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 mynet – 創建一個新的bridge網絡
[root@docker ~]# docker network inspect mynet --查看網絡信息
創建容器并指定容器ip
[root@docker ~]# docker run -d --name mysqlhost02 -h mysqlhost02
-p 223:22 -p 3407:3306
–network=mynet --ip 172.18.12.1
–privileged=true
centos:7.6.1810 /usr/sbin/init

? 5.3 docker容器啟動后添加端口映射

#查看NAT表中的PREROUTING鏈
[root@centos7 ~]# iptables -t nat --list-rules PREROUTING
-P PREROUTING ACCEPT
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
iptables -t nat -A DOCKER -p tcp --dport 3316 -j DNAT --to-destination 172.17.0.3:3306
從上面可以看出,iptables將滿足條件的數據都轉發到了DOCKER鏈上去了。
#查看NAT表中的DOCKER鏈
iptables -t nat --list-rules DOCKER
另外一個方法
docker容器被創建后會在服務器上保存一個文件夾,
配置文件也放在此處,解決方法就是找到映射段都得配置文件修改就行了。
修改之前先停掉docker
$ systemcel stop docker
在 /var/lib/docker/containers/[容器ID]/下找到hostconfig.json
找到映射IP的位置,復制一個已映射的IP,修改為自己需要的就好(888是我新增的)
“PortBindings”: {
“888/tcp”: [
{
“HostIp”: “”,
“HostPort”: “888”
}
],
“21/tcp”: [
{
“HostIp”: “”,
“HostPort”: “21”
}
]
}
相同的目錄下找到config.v2.json,修改2處
“ExposedPorts”: {
“888/tcp”: {},
“21/tcp”: {}
}
“Ports”: {
“888/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “888”
}
],
“21/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “21”
}
]
}
修改完之后啟動docker
$ systemctl start docker
執行成功之后啟動容器然后查看容器運行狀態就可以看到新增加的端口在映射關系里已存在。
同理也可以去除端口映射。

總結

以上是生活随笔為你收集整理的【云原生】-Docker容器技术小结的全部內容,希望文章能夠幫你解決所遇到的問題。

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