Docker由淺入深

鏡像和容器

爲了更好地說明 image 和 container的關係,我們可以類比爲面向對象:

docker 面向對象
容器 對象
鏡像

類實例化爲對象相當於鏡像產生容器,一個類可以實例化爲多個對象,一個鏡像也可以產生多個容器


安裝docker

我是在linux機器上安裝的docker,直接用命令 yum install docker 即可完成安裝,然後用 systemctl start docker 啓動docker容器,同理我們要停止docker,只需要把start改成stop,即可,啓動之後,我們可以看到docker的版本 docker -v,每次我們關閉linux機器,docker就會自動關閉,但是我們可以設置開機啓動 systemctl enable docker

下面介紹一下docker的常用操作:

docker serach:用來查找docker鏡像,默認會在 docker hub來尋找鏡像,下面我測試一下mysql鏡像:
在這裏插入圖片描述

怎麼用這個鏡像?

首先pull下來: docker pull 鏡像名:標籤 會默認幫我們下載最新的鏡像,下面演示一下mysql的下載 docker pull mysql:

這裏有個小問題,docker pull mysql 一直沒成功,好像是下載速度太慢了,這裏我們用aliyun的加速,首先在這裏 阿里雲加速配置加速賬號,它會給你個加速地址 ,我們只需要在 /etc/docker/daemon.json 下面填寫好,填寫成下面這個樣子:然後重啓docker服務,就能下載了。

#  這是 daemon.json的樣子,這裏大家用自己的地址
{
  "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]   
}

在這裏插入圖片描述
下載完後,我們可以直接docker images 就能看到下載的鏡像,如果我們要下載其他版本的mysql,那就需要我們指定標籤了 。

怎麼看有哪些標籤 ?

這就需要去官網找了,直接搜索你想要的鏡像,然後選擇標籤一欄:
在這裏插入圖片描述
直接按照畫圈的地方的命令下載就完事了

如果你要卸載鏡像 直接 docker rmi 鏡像id,鏡像id 就是那個:
在這裏插入圖片描述


容器操作的步驟 (以tomcat爲例)

  1. 搜索鏡像 docker search tomcat(這裏如果你要指定版本,還是需要去docker hub 裏面去找標籤)
  2. pull 鏡像 (根據上一步的鏡像名:標籤)選擇合適的鏡像 docker pull tomcat,默認最新
  3. 運行容器:
docker run --name mytomcat -d tomcat:latest    
// mytomcat是自己起的名字,-d 表示後臺運行 tomcat:latest是自己的容器名
docker ps   // 查看docker中正在運行的容器

docker stop 容器id   // 停止正在運行的容器
docker start 容器id  // 開啓容器
docker ps -a    // 查看所有的容器,包括運行的和停止的
docker rm 容器id  // 刪除容器 刪除完後 docker ps -a 就不顯示了 ,
//   這是刪除容器而非鏡像,我們刪除完後還是可以重新啓動容器的 docker run --name....

下面是容器的端口映射
docker run -d -p 8888:8080 tomcat  // 主機:容器端口  也就是容器的8080端口可以通過主機8888訪問

這裏我沒有關閉防火牆也可以在主機訪問到tomcat頁面,如果你不能訪問,可以關閉防火牆試試,訪問方式爲 虛擬機ip:8888,比如我的 http://192.168.119.128:8888/
防火牆查看狀態 service firewalld status
關閉防火牆 service firewalld status

最後,查看容器的日誌: docker logs 容器id 更多的命令,查看docker官方文檔。


下面來了解一下究竟怎麼用一個docker鏡像

我們還是以mysql爲例:

我們設置mysql不能像tomcat 一樣直接映射一個端口,我們還要爲其設置數據庫的登錄密碼,這個怎麼設置?

對於這類問題,最好的解決辦法就是查看官方文檔:
在這裏插入圖片描述
我們之前說了,你要查看tag,點擊第三個欄,如果你想了解它的一些用法,那就好好閱讀第一欄,裏面給了個很好的例子:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

我們如何指定登錄密碼,裏面很清楚了 -e MYSQL_ROOT_PASSWORD=my-secret-pw 只需要傳入-e 參數即可,所以最後我們應該這樣:

docker run -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql

在這裏插入圖片描述
我們可以用數據庫軟件在本地連接數據庫了。


交互式進入容器操作

上面我們都是直接 -d 以後臺的方式啓動容器,但是當我們想要進入容器中,比如 ubuntu容器中,該怎麼做呢?

下面給出了命令 :docker exec -it 容器id bash ,That’s OK,但是,首先我們要啓動容器。

下面是構建自己的容器,也就是 docker build 命令的使用,我們在本機新建一系列文件夾 /usr/local/docker/tomcat ,並且新建一個dockerfile 文件,文件內容如下:

from tomcat    # 這段話需要指定容器
RUN rm -rf /usr/local/tomcat/webapps/ROOT/*
RUN echo "hello docker" > /usr/local/tomcat/webapps/ROOT/index.html

我們在新的容器中移除 /ROOT/ 下面所有的文件,並重寫index文件。我們重建鏡像並命名爲mytom:
docker build -t mytom . 最後那個點表示當前的文件夾下面的dockerfile。這個過程相當於我們把tomcat先克隆下來,再進行重新改造成我們自己的鏡像,再打包發佈。
在這裏插入圖片描述
上面那個none是個虛懸鏡像,之前發佈的時候,修改過一次,這次屬於第二次發佈,所以出現了虛懸鏡像,就是上面那個名字爲none的。要想清理所有的虛懸鏡像,就要先停掉並移除該虛懸鏡像對應的所有容器,再執行docker image prune 。完畢後,我們重啓mtom鏡像,docker run -d -p 8080:8080 mytom,然後在瀏覽器訪問,就能看到我剛寫的index頁面。


docker的掛載

我們在本地的Tomcat文件下新建一個ROOT/index.html文件,隨便在index中寫入一句話,我們然後把這個文件掛載到Tomcat容器中,下面是操作命令:

docker run -p 8080:8080 --name tomcat -d -v /usr/local/docker/tomcat/ROOT/:/usr/local/tomcat/webapps/ROOT tomcat

參數 -v 後面的內容是你本地主機下的路勁,而 :後面的路徑是容器中Tomcat的路徑。這就給掛載上去了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章