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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

使用Docker虚拟化出一个Centos7操作系统(140、141机器上执行)

發(fā)布時(shí)間:2024/9/27 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Docker虚拟化出一个Centos7操作系统(140、141机器上执行) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.使用Docker虛擬化出一個(gè)Centos7操作系統(tǒng)(140、141機(jī)器上執(zhí)行)

Docker官網(wǎng):https://docs.docker.com/
Docker文檔:https://docs.docker.com/engine/reference/commandline/network_rm/

1.1 Docker安裝

1.1.1 支持的操作系統(tǒng)

Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit) 或更高的版本

1.1.2 前提條件

目前,CentOS 僅發(fā)行版本中的內(nèi)核支持 Docker。
Docker 運(yùn)行在 CentOS 7 上,要求系統(tǒng)為64位、系統(tǒng)內(nèi)核版本為 3.10 以上。
Docker 運(yùn)行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統(tǒng)為64位、系統(tǒng)內(nèi)核版本為 2.6.32-431 或者更高版本。

Docker要求CentOS系統(tǒng)的內(nèi)核版本高于3.10,查看CentOS版本是否支持Docker.
通過uname –r命令查看你當(dāng)前的內(nèi)核版本

[root@bigdata1 ~]# uname -r 3.10.0-693.el7.x86_64 上面的Linux內(nèi)核的版本大于3.10版本,可以進(jìn)行安裝。

1.1.3 使用yum安裝(CentOS7下)

安裝Docker
Docker軟件包和依賴包已經(jīng)包含在默認(rèn)的CentOS-Extras軟件源里,安裝命令如下:

[root@runoob ~]# yum -y install docker-io

測(cè)試運(yùn)行hello-world

[root@runoob ~]#docker run hello-world

由于本地沒有hello-world這個(gè)鏡像,所以會(huì)下載一個(gè)hello-world的鏡像,并在容器內(nèi)運(yùn)行。

1.1.4 使用腳本安裝Docker(Centos7下)

1.使用sudo或root權(quán)限登錄Centos.
2.確保yum包更新到最新

sudo yum update

3.執(zhí)行Docker安裝腳本

$ curl -fsSL https://get.docker.com/ | sh

執(zhí)行這個(gè)腳本會(huì)添加docker.repo源并安裝Docker.
4.啟動(dòng)Docker進(jìn)程。

$ sudo service docker start

5.驗(yàn)證docker是否安裝成功并在容器中執(zhí)行一個(gè)測(cè)試的鏡像。

$ sudo docker run hello-world docker ps

到此,docker在CentOS系統(tǒng)的安裝完成。

1.1.5 Docker卸載

[root@bigdata2 ~]# yum list installed | grep docker docker.x86_64 2:1.13.1-68.gitdded712.el7.centos @extras docker-client.x86_64 2:1.13.1-68.gitdded712.el7.centos @extras docker-common.x86_64 2:1.13.1-68.gitdded712.el7.centos @extras [root@bigdata2 ~]# sudo yum -y remove docker.x86_64 [root@bigdata2 ~]# sudo yum -y docker-client.x86_64 [root@bigdata2 ~]# sudo yum -y remove docker-common.x86_64

卸載docker生成的網(wǎng)卡:

#ifconfig docker0 down #brctl delbr docker0

docker0這個(gè)網(wǎng)橋是在啟動(dòng)Docker Daemon時(shí)創(chuàng)建的,因此,這種刪除方法并不能根本上刪除docker0,下次daemon啟動(dòng)(假設(shè)沒有指定-b參數(shù))時(shí),又會(huì)自動(dòng)創(chuàng)建docker0網(wǎng)橋。

1.1.6 使用Centos7.5.1804 docker鏡像虛擬一個(gè)操作系統(tǒng)

1.1.6.1 運(yùn)行一個(gè)centos7鏡像

以下是/centos/”>https://hub.docker.com//centos/給出的方式,以下不是最終運(yùn)行方式

docker run --rm -d -i -t centos:centos7.5.1804 /bin/bash

注意:要加上-d,如果不加,這個(gè)當(dāng)退出的時(shí)候,發(fā)現(xiàn)沒有docker鏡像了。

1.1.6.2 查看Linux下運(yùn)行了哪些docker鏡像

[root@bigdata1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46ba1c2535fc centos:centos7.5.1804 "/bin/bash" 6 seconds ago Up 5 seconds naughty_euler daaa23c63483 centos:centos7.5.1804 "/bin/bash" 2 minutes ago Up 2 minutes keen_golick fbb65c980d65 sshd:Dockerfile "/usr/sbin/sshd -D" About an hour ago Up About an hour 0.0.0.0:10022->22/tcp mycentos2 [root@bigdata1 ~]#

1.1.6.3 進(jìn)入運(yùn)行的Linux操作系統(tǒng)

第一步中使用的后臺(tái)靜默的方式運(yùn)行,通過docker attach 訪問該容器

[root@bigdata1 ~]# docker attach 46ba1c2535fc [root@46ba1c2535fc /]#

1.1.6.4 ifconfig的安裝

進(jìn)入Centos之后,發(fā)現(xiàn)沒有ifconfig,接下來配置ifconfig

yum search ifconfig yum install net-tools.x86_64

上面運(yùn)行完之后,可以執(zhí)行ifconfig進(jìn)行查看ip了

1.1.6.5 安裝wget

在很多時(shí)候,需要通過wget下載資源

[root@9b291665f9af /]# yum -y install wget

1.1.6.6 更新安裝vim,安裝vim增強(qiáng)包

[root@5ec004281336 /]#yum -y install vim-enhanced

1.1.6.7 修改docker容器虛擬出來的Linux系統(tǒng)的用戶名和密碼

passwd root

然后按照提示進(jìn)行密碼的修改,密碼改成123456

1.1.6.8 安裝sshd

[root@b5926410fe60 /]# yum install passwd openssl openssh-server -y

啟動(dòng)sshd(這步驟可以跳過):

# /usr/sbin/sshd -D

這時(shí)報(bào)以下錯(cuò)誤:

[root@ b5926410fe60 /]# /usr/sbin/sshd Could not load host key: /etc/ssh/ssh_host_rsa_key Could not load host key: /etc/ssh/ssh_host_ecdsa_key Could not load host key: /etc/ssh/ssh_host_ed25519_key

執(zhí)行以下命令解決:

[root@b5926410fe60 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' [root@b5926410fe60 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' [root@b5926410fe60 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''

然后,修改 /etc/ssh/sshd_config 配置信息:
為了讓服務(wù)能夠被遠(yuǎn)程工具連接,配置/etc/ssh/sshd_config中監(jiān)聽的端口和ip地址

vim /etc/ssh/sshd_config

Port 22 (這個(gè)可以不設(shè)置,默認(rèn)22端口)

PermitRootLogin yes PasswordAuthentication yes (這里發(fā)現(xiàn)有兩處,一處注釋了,一處沒有注釋,這里不改)

修改完后,重新啟動(dòng)sshd

[root@b5926410fe60 /]# /usr/sbin/sshd -D

1.1.6.9 將當(dāng)前容器保存為鏡像

要注意的是,要在宿主機(jī)器上另外開啟一個(gè)終端,然后在執(zhí)行下面的命令,或者使用以下命令:

#退出,但不停止容器 (筆者電腦上執(zhí)行,發(fā)現(xiàn)下面的命令不給力,建議另外開一個(gè)終端替代下面的快捷鍵) Ctrl+P+Q[root@bigdata2 ~]# docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5ec004281336 centos:centos7.5.1804 "/bin/bash" 12 minutes ago Up 12 minutes hopeful_hypatia

使用docker commit REPOSITORY

[root@bigdata2 ~]# docker commit 5ec004281336 tuzq/centos7-ssh sha256:bbb85bb5c0cdefb070162c9791cbec85942c4e25ac4714b19da060ecf91ab03e [root@bigdata2 ~]#

docker images查看是否有新的docker鏡像

[root@bigdata1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tuzq/centos7-ssh latest 953019243206 2 minutes ago 350 MB sshd Dockerfile 38f1fe25a171 2 hours ago 399 MB sshd dockerfile 38f1fe25a171 2 hours ago 399 MB docker.io/centos 7.5.1804 fdf13fa91c6e 8 days ago 200 MB [root@bigdata1 ~]#

1.1.6.10 在宿主機(jī)上基于新創(chuàng)建的鏡像啟動(dòng)新的容器

(退出的時(shí)候看下面的注意說明)
–先刪除之前的容器

[root@bigdata1 ~]# docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9b291665f9af centos:centos7.5.1804 "/bin/bash" 12 minutes ago Up 12 minutes wonderful_cori [root@bigdata1 ~]#hr:centos7 hr$ docker rm -f 9b291665f9af

–基于新鏡像運(yùn)行容器(下面的命令為測(cè)試命令,在創(chuàng)建好自己網(wǎng)絡(luò)之后(1.1.5.1章節(jié)),可以直接跳到下面的1.1.6章節(jié))

[root@bigdata1 ~]# docker run -d -p 10022:22 tuzq/centos7-ssh:latest /usr/sbin/sshd -D d8fda5ddf55b1876e70f9cd82de888402538ebcbcadac46f3f5044f2e02b302a [root@bigdata1 ~]# docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d8fda5ddf55b tuzq/centos7-ssh:latest "/usr/sbin/sshd -D" 6 seconds ago Up 5 seconds 0.0.0.0:10022->22/tcp eloquent_carson --查看映射端口是否成功 [root@bigdata1 ~]# docker port d8fda5ddf55b 22/tcp -> 0.0.0.0:10022 [root@bigdata1 ~]#

注意事項(xiàng):

#退出,但不停止容器 Ctrl+P+Q #回到Docker下面,停止容器 (容器ID即:CONTAINER ID) docker stop <容器ID> #提交當(dāng)前容器到鏡像 docker commit <容器ID> <NAME/VERSION> #啟動(dòng)新容器,并且進(jìn)行端口映射(剛才提交的鏡像id即:通過docker images看到的REPOSITORY: REPOSITORY 即:tuzq/centos7-ssh:latest) docker run -itd -p 10022:22 <剛才提交的鏡像ID> /bin/bash

1.1.6.11 使用XShell連接到容器

從宿主機(jī)是非Linux操作系統(tǒng),則需要通過docker-machine ip連接到容器
接下來就可以通過ssh進(jìn)行訪問了,訪問方式:
xxx.xxx.xxx.140

連接: port 為10022

用戶名:root
密碼:123456

即:

接下來的用戶名是:root,密碼:123456

1.1.7 使用固定ip的方式創(chuàng)建Docker容器

1.1.7.1 Docker默認(rèn)網(wǎng)絡(luò)

參考博文地址:https://www.jb51.net/article/118396.htm

Docker安裝后,默認(rèn)會(huì)創(chuàng)建下面三種網(wǎng)絡(luò)類型:

[root@bigdata1 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 35fbf8bcb831 bridge bridge local a5baf164f11f host host local 43eba2f0486e none null local [root@bigdata1 ~]#

啟動(dòng)Docker的時(shí)候,用—network參數(shù),可以指定網(wǎng)絡(luò)類型,如:

docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash

bridge:橋接網(wǎng)絡(luò)
默認(rèn)情況下啟動(dòng)Docker容器,都是使用bridge,Docker安裝時(shí)創(chuàng)建Docker容器重啟時(shí),會(huì)按照順序獲取對(duì)應(yīng)的IP地址,這個(gè)就導(dǎo)致重啟下,Docker的IP地址就變了。

none:無指定網(wǎng)絡(luò)
使用–network=none,docker容器就不分配局域網(wǎng)的IP

host:主機(jī)網(wǎng)絡(luò)
使用–network=host,此時(shí),Docker容器的網(wǎng)絡(luò)會(huì)附屬在主機(jī)上,兩者是互通的。

例如,在容器中運(yùn)行一個(gè)Web服務(wù),監(jiān)聽8080端口,則主機(jī)的8080端口就會(huì)自動(dòng)映射到容器中。

1.1.7.2 創(chuàng)建自定義網(wǎng)絡(luò)

步驟1:創(chuàng)建自定義網(wǎng)絡(luò)
創(chuàng)建自定義網(wǎng)絡(luò),并指定網(wǎng)段:192.168.200.0/24 (注意這里使用的200段,不能和宿主機(jī)器所在的網(wǎng)段相同)

[root@bigdata1 ~]# docker network create --subnet=192.168.200.0/24 dockernet 985d0b115bc9593943be74942330025fd75fbcb87ddad6a154bb584cc4ff5a69 [root@bigdata1 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 35fbf8bcb831 bridge bridge local 985d0b115bc9 dockernet bridge local a5baf164f11f host host local 43eba2f0486e none null local

刪除自定義網(wǎng)絡(luò)的方式:

[root@bigdata1 ~]# docker network dockernet

1.1.7.3 使用指定ip啟動(dòng)容器

docker run -itd --name dockerOS143 --net dockernet --ip 192.168.200.143 -p 10022:22 tuzq/centos7-ssh:latest /usr/sbin/sshd -D

啟動(dòng)完成之后,進(jìn)入容器中查看ip信息(下面的網(wǎng)絡(luò)的ip地址應(yīng)該是192.168.200.143,不是xxx.xxx.xxx.143,配置修改之后,圖沒修改)

1.1.8 為系統(tǒng)指定內(nèi)存和交換空間,并設(shè)置不被宿主機(jī)器殺死

關(guān)于虛擬容器的內(nèi)存參數(shù)設(shè)置參考:https://blog.csdn.net/csdn_duomaomao/article/details/78567859

上面的問題解決之后,發(fā)現(xiàn)就可以繼續(xù)執(zhí)行(140機(jī)器上執(zhí)行下面的命令,測(cè)試發(fā)現(xiàn)使用1G的運(yùn)行時(shí)很卡):

docker run -itd --name dockerOS143 --net dockernet --ip 192.168.200.143 -p 10022:22 -m 1G --memory-swap=1G --oom-kill-disable tuzq/centos7-ssh:latest /usr/sbin/sshd -D

進(jìn)入Linux系統(tǒng),然后查看內(nèi)存情況:

注意141機(jī)器上執(zhí)行下面的命令(測(cè)試發(fā)現(xiàn)使用1G的運(yùn)行時(shí)很卡):

docker run -itd --name dockerOS145 --net dockernet --ip 192.168.200.145 -p 10022:22 -m 1G --memory-swap=1G --oom-kill-disable tuzq/centos7-ssh:latest /usr/sbin/sshd -D

使用xshell 工具訪問:



進(jìn)入虛擬出的Linux服務(wù)器上之后,效果如下:

另外,也可以

1.1.9 常見錯(cuò)誤

1.1.9.1 錯(cuò)誤一

如果在運(yùn)行過程發(fā)現(xiàn)類似如下問題:

/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/dockerOS143" is already in use by container 987e1127d5ef543f459807a4b33f84144bcfec9bca97d218f98af870ade3ca47. You have to remove (or rename) that container to be able to reuse that name.. See '/usr/bin/docker-current run --help'. [root@bigdata1 ~]#

解決辦法是:

docker rm (鏡像ID)

查看鏡像ID的方式如下:

[root@bigdata1 ~]# docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 987e1127d5ef herong/centos7-ssh:latest "/usr/sbin/sshd -D" 38 minutes ago Exited (0) 14 minutes ago dockerOS143 [root@bigdata1 ~]# l

即執(zhí)行:

[root@bigdata1 ~]# docker rm 987e1127d5ef 987e1127d5ef

再次執(zhí)行以下命令,若發(fā)現(xiàn)還有未關(guān)閉的鏡像,再次刪除相關(guān)鏡像:

[root@bigdata1 ~]# docker ps –all

1.1.9.2 錯(cuò)誤二

如果出現(xiàn)類似:

[root@bigdata2 ~]# docker run -itd --name dockerOS --net dockernet --ip 192.168.200.145 -p 10022:22 tuzq/centos7-ssh:latest /usr/sbin/sshd -D 43f876ec1f3f67478d4a7757c2e996111f9987b8566b7f597aab00aaede3ed7a /usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint dockerOS (a449051624b7701e619e3c3cb996e3c84190df984dce09cc7a4a119d6a43d775): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 10022 -j DNAT --to-destination xxx.xxx.xxx.145:22 ! -i br-3989d73e540e: iptables: No chain/target/match by that name.

解決辦法:

pkill docker iptables -t nat -F ifconfig docker0 down brctl delbr docker0 docker -d service docker restart

1.1.10 關(guān)于刪除本地docker鏡像

https://blog.csdn.net/hubanbei2010/article/details/58135234

1.1.11 141示例容器最終啟動(dòng)方式

在141容器機(jī)器上的145容器中,最后安裝了nginx,imply。

這個(gè)容器重新被打成了鏡像:

其中cfc4762785b1為145容器這個(gè)容器的id docker commit cfc4762785b1 foo/live

最終啟動(dòng):

docker run -itd --name dockerOS --net dockernet --ip 192.168.200.145 -p 29095:9095 -p 20080:80 -p 23306:3306 -p 10022:22 foo/live:latest /usr/sbin/sshd -D

說明:上面的29095、20080、23306、10022都是宿主機(jī)器xxx.xxx.xxx.141上的端口號(hào),分別映射到192.168.200.145上的9055、80、3306、22端口。

頁面訪問效果:

注意:訪問的時(shí)候使用宿主機(jī)器的ip:宿主端口號(hào)

總結(jié)

以上是生活随笔為你收集整理的使用Docker虚拟化出一个Centos7操作系统(140、141机器上执行)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。