centos7安裝docker並安裝jdk和tomcat(常用命令)


 阿里專屬的鏡像加速

在宿主機器編輯文件:vi /etc/docker/daemon.json

阿里專屬的鏡像加速地址,類似於“https://91cntlkt.mirror.aliyuncs.com”。

請在該配置文件中加入(沒有該文件的話,請先建一個):

 

{

  "registry-mirrors": ["https://91cntlkt.mirror.aliyuncs.com"]

}

 

最后,需要重啟docker服務

之后再使用pull命令拉取鏡像,這時候是從ustc獲取鏡像,而且速度杠杠的

安裝docker步驟:

1.先安裝centos7

2.安裝docker:yum install docker

3安裝docker對應的centos鏡像:docker pull centos

4安裝tomcat:docker pull tomcat

5指定容器和主機的映射端口:docker run -p 8081:8080 tomcat:7(docker run -d -p 8081:8080 docker.io/tomcat斷開命令后后還可以訪問tomcat)

6重啟容器:docker restart myrunoob

刪除鏡像:

docker rmi -f id

 

 1、環境,CentOS7 Minimal 64位,Docker必須要64位的系統
2、通過yum命令直接安裝,yum install docker
3、啟動Docker,並將其設置為開機啟動
(1)啟動,systemctl start docker.service
(2)開機啟動,systemctl enable docker.service
(3)幫助,docker --help
(4)概要信息,docker info
(5)鏡像查看,docker images
(6)容器查看,即進程查看,docker ps -a
4、安裝鏡像,可以到https://registry.hub.docker.com/search?q=library查看官方的鏡像。鏡像,基於當前系統、Docker,制作的文件集合,即可以是操作系統、程序,如centos鏡像、ubuntu鏡像、mysql鏡像、Nginx鏡像
5、安裝程序鏡像,以Nginx為例,
(1)下載鏡像,docker pull nginx:1.9
(2)啟動容器,docker run -d -p 8080:80 nginx:1.9,把容器內的nginx的80端口,映射到當前服務器的8080端口,當前服務器的ip是192.168.0.191,瀏覽器輸入http://192.168.0.191:8080/,就可以看到nginx已啟動,
(3)再啟動多一個容器,docker run -d -p 8081:80 nginx:1.9,瀏覽器輸入http://192.168.0.191:8081/,就可以看到另外一個nginx已啟動
(4)到這里就能體現出Docker部署應用和傳統部署應用的區別了,傳統部署的話,需要人工拷貝多一份nginx,再配置端口,而Docker部署的話,在已制作好的鏡像基礎上,一條命令就可以部署一個新的應用
6、安裝系統鏡像,以centos7為例,因為鏡像運行的時候,會用當前系統的各種資源,所以鏡像只有60M大小,
(1)下載鏡像,docker pull centos:7
(2)啟動容器,docker run -i -t centos:7 /bin/bash,這樣就可以進入到centos7鏡像系統
7、完成。

1、從容器里面拷文件到宿主機?

     答:在宿主機里面執行以下命令

             Docker cp 容器名:要拷貝的文件在容器里面的路徑       要拷貝到宿主機的相應路徑

 

     示例: 假設容器名為testtomcat,要從容器里面拷貝的文件路為:/usr/local/tomcat/webapps/test/js/test.js,                     現在要將test.js從容器里面拷到宿主機的/opt路徑下面,那么命令應該怎么寫呢?

     答案:在宿主機上面執行命令

                 docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt

2、從宿主機拷文件到容器里面

      答:在宿主機里面執行如下命令

              docker cp 要拷貝的文件路徑 容器名:要拷貝到容器里面對應的路徑

       示例:假設容器名為testtomcat,現在要將宿主機/opt/test.js文件拷貝到容器里面                                                               的/usr/local/tomcat/webapps/test/js路徑下面,那么命令該怎么寫呢?

       答案:在宿主機上面執行如下命令

                   docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js

3、在這里在記錄一個問題,怎么看容器名稱?

      執行命令:docker ps,出現如圖所示,其中NAMES就是容器名了。

 

 

 

Docker更多資料請到https://dashboard.daocloud.io學習

  軟件環境:jdk、tomcat、docker、centos、虛擬機

  

首先,您要准備一個 CentOS 的操作系統,虛擬機也行。總之,可以通過 Linux 客戶端工具訪問到 CentOS 操作系統就行。

需要說明的是,Ubuntu 或其它 Linux 操作系統也能玩 Docker,只不過本文選擇了以 CentOS 為例,僅此而已。

CentOS 具體要求如下:

  1. 必須是 64 位操作系統
  2. 建議內核在 3.8 以上

通過以下命令查看您的 CentOS 內核:

uname -r

如果執行以上命令后,輸出的內核版本號低於 3.8,請參考下面的方法來來升級您的 Linux 內核。

對於 CentOS 6.5 而言,內核版本默認是 2.6。首先,可通過以下命令安裝最新內核:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
yum -y --enablerepo=elrepo-kernel install kernel-lt

隨后,編輯以下配置文件:

vi /etc/grub.conf

default=1修改為default=0

最后,通過reboot命令重啟操作系統。

重啟后如果不出意外的話,再次查看內核,您的 CentOS 內核將會顯示為 3.10。

如果到這里,您和我們所期望的結果是一致的。恭喜您!下面我們就一起來安裝 Docker 了。

安裝 Docker

只需通過以下命令即可安裝 Docker 軟件:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install docker-io

可使用以下命令,查看 Docker 是否安裝成功:

docker version

若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啟動 Docker 服務:

service docker start

一旦 Docker 服務啟動完畢,我們下面就可以開始使用 Docker 了。

做法

就像曾經安裝軟件一樣,我們首先需要有一張刻錄了該軟件的光盤,如果您使用的是虛擬光驅,那么就需要運行一種名為“鏡像”的文件,通過它來安裝軟件。在 Docker 的世界里,也有一個名為“鏡像”的東西,已經安裝我們所需的操作系統,我們一般成為“Docker 鏡像”,本文簡稱“鏡像”。

那么問題來了,我們從哪里下載鏡像呢?

Docker 官網 確實已經提供了所有的鏡像下載地址,可惜在國內卻是無法訪問的。幸好國內好心人提供了一個 Docker 中文網,在該網站上可以下載我們所需的 Docker 鏡像。

下載鏡像

我們不妨還是以 CentOS 為例,通過以下步驟,下載一個 CentOS 的鏡像。

首先,訪問 Docker 中文網,在首頁中搜索名為“centos”的鏡像,在搜索的結果中,有一個“官方鏡像”,它就是我們所需的。

然后,進入 CentOS 官方鏡像頁面,在“Pull this repository”輸入框中,有一段命令,把它復制下來,在自己的命令行上運行該命令,隨后將立即下載該鏡像。

最后,使用以下命令查看本地所有的鏡像:

docker images

當下載完成后,您應該會看到:

REPOSITORY                TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.cn/docker/centos   centos6             25c5298b1a36        7 weeks ago         215.8 MB

如果看到以上輸出,說明您可以使用“docker.cn/docker/centos”這個鏡像了,或將其稱為倉庫(Repository),該鏡像有一個名為“centos6”的標簽(Tag),此外還有一個名為“25c5298b1a36 ”的鏡像 ID(可能您所看到的鏡像 ID 與此處的不一致,那是正常現象,因為這個數字是隨機生成的)。此外,我們可以看到該鏡像只有 215.8 MB,非常小巧,而不像虛擬機的鏡像文件那樣龐大。

現在鏡像已經有了,我們下面就需要使用該鏡像,來啟動容器。

啟動容器

容器是在鏡像的基礎上來運行的,一旦容器啟動了,我們就可以登錄到容器中,安裝自己所需的軟件或應用程序。既然鏡像已經下載到本地,那么如何才能啟動容器呢?

只需使用以下命令即可啟動容器:

docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash

這條命令比較長,我們稍微分解一下,其實包含以下三個部分:

docker run <相關參數> <鏡像 ID> <初始命令>

其中,相關參數包括:

  • -i:表示以“交互模式”運行容器
  • -t:表示容器啟動后會進入其命令行
  • -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

假設我們的所有安裝程序都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。

需要說明的是,不一定要使用“鏡像 ID”,也可以使用“倉庫名:標簽名”,例如:docker.cn/docker/centos:centos6。

初始命令表示一旦容器啟動,需要運行的命令,此時使用“/bin/bash”,表示什么也不做,只需進入命令行即可。

安裝相關軟件

為了搭建 Java Web 運行環境,我們需要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。我們不妨選擇/opt/目錄作為安裝目錄,首先需要通過cd /opt/命令進入該目錄。

安裝 JDK(從宿主機拷文件到容器里面docker cp jdk-7u55-linux-i586.tar.gz high_saha:/opt)

首先,解壓 JDK 程序包:

<1 docker cp jdk-7u55-linux-i586.tar.gz high_saha:/opt
<2 tar -zxf jdk-7u4-linux-x64.tar.gz 

然后,重命名 JDK 目錄:

mv jdk1.7.0_67/ jdk/

安裝 Tomcat

首先,解壓 Tomcat 程序包:

<1 wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.tar.gz
<2 tar -zxf apache-tomcat-7.0.52.tar.gz

然后,重命名 Tomcat 目錄:

mv apache-tomcat-7.0.55/ tomcat/

設置環境變量

首先,編輯.bashrc文件

vi ~/.bashrc

然后,在該文件末尾添加如下配置:

export JAVA_HOME=/opt/jdk
export PATH=$PATH:$JAVA_HOME/bin

最后,需要使用source命令,讓環境變量生效:

source ~/.bashrc

安裝jdk后用java -version測試出現“bash: ./java: /lib/ld-linux.so.2: bad ELF interpreter: 沒有那個文件或目錄”的問題“,於是到網上搜了下,用sudo yum install glibc.i686命令安裝好glibc之后問題就解決了。

編寫運行腳本

我們需要編寫一個運行腳本,當啟動容器時,運行該腳本,啟動 Tomcat,具體過程如下:

首先,創建運行腳本:

vi /root/run.sh

然后,編輯腳本內容如下:

#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run

注意:這里必須先加載環境變量,然后使用 Tomcat 的運行腳本來啟動 Tomcat 服務。

最后,為運行腳本添加執行權限:

chmod u+x /root/run.sh

退出容器

當以上步驟全部完成后,可使用exit命令,退出容器。

隨后,可使用如下命令查看正在運行的容器:

docker ps

此時,您應該看不到任何正在運行的程序,因為剛才已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令查看所有容器:

docker ps -a

輸出如下內容:

CONTAINER ID        IMAGE                             COMMAND             CREATED             STATUS                      PORTS               NAMES
57c312bbaad1        docker.cn/docker/centos:centos6   "/bin/bash"         27 minutes ago      Exited (0) 19 seconds ago                       naughty_goldstine

記住以上CONTAINER ID(容器 ID),隨后我們將通過該容器,創建一個可運行 Java Web 的鏡像。

創建 Java Web 鏡像

使用以下命令,根據某個“容器 ID”來創建一個新的“鏡像”:

docker commit 57c312bbaad1 huangyong/javaweb:0.1

該容器的 ID 是“57c312bbaad1”,所創建的鏡像名是“huangyong/javaweb:0.1”,隨后可使用鏡像來啟動 Java Web 容器。

啟動 Java Web 容器

有必要首先使用docker images命令,查看當前所有的鏡像:

REPOSITORY                TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
huangyong/javaweb         0.1                 fc826a4706af        38 seconds ago      562.8 MB
docker.cn/docker/centos   centos6             25c5298b1a36        7 weeks ago         215.8 MB

可見,此時已經看到了最新創建的鏡像“huangyong/javaweb:0.1”,其鏡像 ID 是“fc826a4706af”。正如上面所描述的那樣,我們可以通過“鏡像名”或“鏡像 ID”來啟動容器,與上次啟動容器不同的是,我們現在不再進入容器的命令行,而是直接啟動容器內部的 Tomcat 服務。此時,需要使用以下命令:

docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh

稍作解釋:

  • -d:表示以“守護模式”執行/root/run.sh腳本,此時 Tomcat 控制台不會出現在輸出終端上。
  • -p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射為宿主機的 58080 端口,這樣就向外界暴露了 58080 端口,可通過 Docker 網橋來訪問容器內部的 8080 端口了。
  • --name:表示容器名稱,用一個有意義的名稱命名即可。

關於 Docker 網橋的內容,需要補充說明一下。實際上 Docker 在宿主機與容器之間,搭建了一座網絡通信的橋梁,我們可通過宿主機 IP 地址與端口號來映射容器內部的 IP 地址與端口號,

在一系列參數后面的是“鏡像名”或“鏡像 ID”,怎么方便就怎么來。最后是“初始命令”,它是上面編寫的運行腳本,里面封裝了加載環境變量並啟動 Tomcat 服務的命令。

當運行以上命令后,會立即輸出一長串“容器 ID”,我們可通過docker ps命令來查看當前正在運行的容器。

CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                     NAMES
82f47923f926        huangyong/javaweb:0.1   "/root/run.sh"      4 seconds ago       Up 3 seconds        0.0.0.0:58080->8080/tcp   javaweb

品嘗

在瀏覽器中,輸入以下地址,即可訪問 Tomcat 首頁:

http://192.168.65.132:58080/

注意:這里使用的是宿主機的 IP 地址,與對外暴露的端口號 58080,它映射容器內部的端口號 8080。

使用docker exec進入Docker容器

除了上面幾種做法之外,docker在1.3.X版本之后還提供了一個新的命令exec用於進入容器,這種方式相對更簡單一些,下面我們來看一下該命令的使用:

 

 

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. $ sudo docker exec --help  

 

接下來我們使用該命令進入一個已經在運行的容器

 

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. $ sudo docker ps  
  2. $ sudo docker exec -it 775c7c9ee1e1 /bin/bash  

 

在使用docker容器時,有時候里邊沒有安裝vim,敲vim命令時提示說:vim: command not found,這個時候就需要安裝vim,可是當你敲apt-get install vim命令時,提示:

        Reading package lists... Done
        Building dependency tree       
        Reading state information... Done
        E: Unable to locate package vim

        這時候需要敲:apt-get update,這個命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,這樣才能獲取到最新的軟件包。

        等更新完畢以后再敲命令:apt-get install vim命令即可。

 

Docker的鏡像和容器的區別

一、Docker鏡像

要理解Docker鏡像和Docker容器之間的區別,確實不容易。

假設Linux內核是第0層,那么無論怎么運行Docker,它都是運行於內核層之上的。這個Docker鏡像,是一個只讀的鏡像,位於第1層,它不能被修改或不能保存狀態。

一個Docker鏡像可以構建於另一個Docker鏡像之上,這種層疊關系可以是多層的。第1層的鏡像層我們稱之為基礎鏡像(Base Image),其他層的鏡像(除了最頂層)我們稱之為父層鏡像(Parent Image)。這些鏡像繼承了他們的父層鏡像的所有屬性和設置,並在Dockerfile中添加了自己的配置。

Docker鏡像通過鏡像ID進行識別。鏡像ID是一個64字符的十六進制的字符串。但是當我們運行鏡像時,通常我們不會使用鏡像ID來引用鏡像,而是使用鏡像名來引用。要列出本地所有有效的鏡像,可以使用命令

# docker images

鏡像可以發布為不同的版本,這種機制我們稱之為標簽(Tag)。 
這里寫圖片描述

如上圖所示,neo4j鏡像有兩個版本:lastest版本和2.1.5版本。

可以使用pull命令加上指定的標簽:

# docker pull ubuntu:14.04
# docker pull ubuntu:12.04

二、Docker容器

Docker容器可以使用命令創建:

# docker run imagename

它會在所有的鏡像層之上增加一個可寫層。這個可寫層有運行在CPU上的進程,而且有兩個不同的狀態:運行態(Running)和退出態(Exited)。這就是Docker容器。當我們使用docker run啟動容器,Docker容器就進入運行態,當我們停止Docker容器時,它就進入退出態。

當我們有一個正在運行的Docker容器時,從運行態到停止態,我們對它所做的一切變更都會永久地寫到容器的文件系統中。要切記,對容器的變更是寫入到容器的文件系統的,而不是寫入到Docker鏡像中的。

我們可以用同一個鏡像啟動多個Docker容器,這些容器啟動后都是活動的,彼此還是相互隔離的。我們對其中一個容器所做的變更只會局限於那個容器本身。

如果對容器的底層鏡像進行修改,那么當前正在運行的容器是不受影響的,不會發生自動更新現象。

如果想更新容器到其鏡像的新版本,那么必須當心,確保我們是以正確的方式構建了數據結構,否則我們可能會導致損失容器中所有數據的后果。

64字符的十六進制的字符串來定義容器ID,它是容器的唯一標識符。容器之間的交互是依靠容器ID識別的,由於容器ID的字符太長,我們通常只需鍵入容器ID的前4個字符即可。當然,我們還可以使用容器名,但顯然用4字符的容器ID更為簡便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM