Docker拉取centos镜像并部署web应用
此博客參考how2j.com和https://www.fecmall.com/topic/592博客,并進(jìn)行整理
1.首先我們要去docker倉(cāng)庫(kù)中拉取一個(gè)centos系統(tǒng)作為我們鏡像的系統(tǒng),此處拉取的倉(cāng)庫(kù)推薦為centos7.9.2009版本。防止出現(xiàn)在鏡像中執(zhí)行systemctl命令時(shí)出現(xiàn)Failed to get D-Bus connection: Operation not permitted沒(méi)有操作權(quán)限的問(wèn)題
docker pull centos:7.9.20092.將拉取下的centos:7.9.2009鏡像啟動(dòng),將其作為一個(gè)容器
docker run -dit --privileged -p 2222:22 -p80:80 -p3307:3306 -p8080:8080 -p30000-30010:30000-30010 --name centos7web 鏡像名稱:版本號(hào) /usr/sbin/init其中的命令解釋為:
docker run 表示運(yùn)行一個(gè)鏡像
-dit 是 -d -i -t 的縮寫(xiě)。 -d ,表示 detach,即在后臺(tái)運(yùn)行。 -i 表示提供交互接口,這樣才可以通過(guò) docker 和 跑起來(lái)的操作系統(tǒng)交互。 -t 表示提供一個(gè) tty (偽終端),與 -i 配合就可以通過(guò) ssh 工具連接到 這個(gè)容器里面去了
–privileged 啟動(dòng)容器的時(shí)候,把權(quán)限帶進(jìn)去。
-p 2222:22 表示在CentOS 上開(kāi)放2222端口。 第二個(gè)22 表示在容器里開(kāi)放22端口。 這樣當(dāng)訪問(wèn)CentOS 的2222端口的時(shí)候,就會(huì)間接地訪問(wèn)到容器里了(此處非常重要,通過(guò)這種方式可以自己任意定義端口映射到容器中)
-p 3307:3306 表示訪問(wèn)3307端口時(shí),映射到容器mysql的3306端口,使用navicat等數(shù)據(jù)庫(kù)連接工具訪問(wèn)端口使用
–name centos7web 為要運(yùn)行的容器起名字,centos7web可以自己定義
3.通過(guò)xshell連接docker容器
啟動(dòng)docker,進(jìn)入docker容器,如果是守護(hù)態(tài)容器,可以通過(guò)下面的方式進(jìn)入:
先查看當(dāng)前運(yùn)行的容器狀態(tài),獲取當(dāng)前運(yùn)行容器的CONTAINER ID
docker ps -a進(jìn)入容器
docker exec -it 運(yùn)行容器的CONTAINER ID /bin/bash使用passwd密碼來(lái)修改密碼(如提示沒(méi)有這個(gè)命令行使用yum install passwd安裝)
passwdxxx密碼xxx確認(rèn)密碼安裝Openssh(docker 容器中執(zhí)行)
yum -y install openssh-server yum -y install openssh-clients修改SSH配置文件以下選項(xiàng),去掉#注釋,將四個(gè)選項(xiàng)啟用:
vi /etc/ssh/sshd_configRSAAuthentication yes #啟用 RSA 認(rèn)證 PubkeyAuthentication yes #啟用公鑰私鑰配對(duì)認(rèn)證方式 AuthorizedKeysFile .ssh/authorized_keys #公鑰文件路徑(和上面生成的文件同) PermitRootLogin yes #root能使用ssh登錄重啟ssh服務(wù),并設(shè)置開(kāi)機(jī)啟動(dòng):
yum install initscripts -y service sshd restart退出容器并保存更改
使用exit命令或者ctrl+C來(lái)退出當(dāng)前運(yùn)行的容器:此時(shí)使用xshell連接docker容器
ip: 為宿主主機(jī)的ip,而不是docker容器的ip 端口號(hào):2222 用戶名: root 密碼: 上面password部分設(shè)置的密碼4.在docker容器中安裝JDK(注意區(qū)分宿主機(jī)和docker容器)
使用yum方式安裝JDK
yum -y install java-1.8.0-openjdk.x86_64查看JDK是否安裝成功
java -version5.在docker容器中安裝Tomcat
yum上沒(méi)有tomcat的源,所以使用如下方式下載解壓
防止提示wget無(wú)法使用,下載命令器: yum install wget -ycd /tmp wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.92/bin/apache-tomcat-7.0.92.tar.gz tar xzf apache-tomcat-7.0.92.tar.gz mv apache-tomcat-7.0.92 /usr/local/tomcat7如果yum解壓方式失敗,此處提供how2j網(wǎng)站的tomcat8的下載地址:
https://how2j.cn/frontdownload?bean.id=2036
通過(guò)xftp方式傳輸解壓Tomcat,解壓出的文件放在 usr/local 下
啟動(dòng)服務(wù)
cd /usr/local/tomcat解壓文件/bin/ ./startup.sh查看8080端口是否開(kāi)放
yum install net-tools -y netstat -anp|grep 8080設(shè)置Tomcat服務(wù)器自啟動(dòng)
6.在docker容器中安裝Mysql
yum上mysql的資源有問(wèn)題,所以不能僅僅只用yum安裝。在使用yum之前還需要用其他命令獲取mysql社區(qū)版
cd /tmp wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm通過(guò)yum進(jìn)行安裝Mysql
yum install mysql mysql-server mysql-devel -y啟動(dòng)mysql服務(wù)器(此處如果使用的centos7版本不是centos7.9.2009版本,則會(huì)一直提示Failed to get D-Bus connection: Operation not permitted沒(méi)有操作權(quán)限,網(wǎng)上教程使用特權(quán)模式運(yùn)行,測(cè)試還是不行)
systemctl start mysql.service驗(yàn)證3306端口是否開(kāi)啟
netstat -anp|grep 3306設(shè)置Mysql密碼
mysqladmin -u root password admin提示:Warning: Using a password on the command line interface can be insecure.代表命令執(zhí)行成功,但是密碼是顯示的不安全。登陸驗(yàn)證
mysql -uroot -padmin show databases;設(shè)置Mysql自啟動(dòng)
systemctl enable mysqld.service關(guān)閉Mysql自啟動(dòng)
systemctl disable mysqld.service7.使用Navicat數(shù)據(jù)庫(kù)連接工具連接docker鏡像中的Mysql
使用宿主機(jī)ip+3307端口進(jìn)行訪問(wèn),如果出現(xiàn):
1130 - Host XXX is not allowed to connect to this MySQL server。解決方案:登陸root用戶: mysql -u root -puse mysql;所有ip都有權(quán)限訪問(wèn)(生產(chǎn)環(huán)境會(huì)有重大安全隱患,測(cè)試可用): update user set host = '%' where user ='root';以192.168.1開(kāi)頭的ip有權(quán)限訪問(wèn): update user set host = '192.168.18.%' where user ='root';執(zhí)行update語(yǔ)句時(shí)出現(xiàn)ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 錯(cuò)誤,說(shuō)明有多個(gè)ROOT用戶紀(jì)錄在USER表中了. 查看一下host是否已經(jīng)有了192.168.18.%這個(gè)值,有了就可以了. mysql> select host,user from user where user='root';使配置立即生效: flush privileges;8.將項(xiàng)目部署到Tomcat中訪問(wèn)
將Idea打包的war包部署在webapps中,通過(guò)宿主機(jī)ip+8080+war包名稱 方式進(jìn)行訪問(wèn)
9.將當(dāng)前運(yùn)行容器制作為鏡像
容器的生命周期
暫停:pause恢復(fù):unpause停止:stop開(kāi)始:start (docker在執(zhí)行start命令時(shí)需要等待一會(huì)才可以連接成功)將運(yùn)行容器暫停
docker ps -a docker stop 當(dāng)前運(yùn)行容器的contrainerId使用commit命令將容器制作為鏡像
docker commit 當(dāng)前運(yùn)行容器的contrainerId 生成的鏡像名稱10.將制作好的鏡像提交到倉(cāng)庫(kù)中
登陸docker倉(cāng)庫(kù)
docker login使用push命令提交當(dāng)前制作的鏡像到倉(cāng)庫(kù)中
docker imagesdocker tag 制作好的鏡像名 倉(cāng)庫(kù)名/生成的鏡像名:tag (tag默認(rèn)就是latest) docker push 倉(cāng)庫(kù)名/生成的鏡像名:TAG11.在倉(cāng)庫(kù)查看鏡像,并拉取制作的鏡像
https://hub.docker.com/
docker pull 倉(cāng)庫(kù)名/生成的鏡像名:TAG總結(jié):整理此博客主要為了記錄流程,也是再一次加深了對(duì)docker鏡像和容器的理解。希望能對(duì)剛?cè)腴T(mén)docker的朋友們有所幫助,省下來(lái)踩坑的時(shí)間咱們開(kāi)開(kāi)心心打兩把游戲不香嗎!
總結(jié)
以上是生活随笔為你收集整理的Docker拉取centos镜像并部署web应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 谷歌小恐龙作弊方法
- 下一篇: 结构力学回顾与展望:结构工程是人类文明的