五分鐘 docker 入門,工作這些命令就夠用了

現在很多公司項目部署都是採用K8S docker容器方式,出門面試被問的概率極大,如果被面試官問docker相關知識點直接懵逼,那麼基本就是被pass了,除非其他方面技術過硬。所以這種相對前沿的技術,就算達不到精通的程度,起碼還是要了解基礎理論和操作

一.安裝docker

Docker要求運行在Centos 7上,要求系統爲64位,系統內核版本3.10以上

  • uname -an 查看當前系統版本

  • yum -y install docker 下載安裝docker

  • service docker start 啓動docker服務

  • docker version 檢查docker是否安裝成功

當看到下圖的信息,就是表示本機docker已經安裝成功,很簡單
在這裏插入圖片描述

二.鏡像操作

創建容器要以鏡像爲基礎,所以先講下docker鏡像的操作

搜索鏡像

docker images ll 查看下本機的是否已經有了鏡像

目前機器裏還沒有鏡像,去Docker Hub下載(鏡像還可自定義,這裏就不細說了)

docker search java ,還能指定具體的版本進行下載,

例如:docker search Ubuntu:1.2.5.4,可以進行搜docker Hub 會列出很多鏡像

在這裏插入圖片描述

下載鏡像

docker pull docker.io/nginx 進行下載

下載到本地的鏡像要比docker Hub上搜索出來的要大,因爲下載過程中自動解壓了,在查看鏡像列表就有了剛纔下載的鏡像

列表包含了倉庫名,版本標籤,鏡像ID,創建時間以及所佔用的空間
在這裏插入圖片描述

刪除鏡像

刪除沒用的鏡像docker rmi 鏡像id

在這裏插入圖片描述

三.容器的操作

前邊我們已經下載好了Nginx的鏡像,接下來我們就創建一個只有Nginx應用的容器

docker run -i -t <IMAGE_ID> /bin/bash

-i:標準輸入給容器
-t:分配一個虛擬終端
/bin/bash:執行bash腳本

docker run -idt --name container_nginx -p 8080:80  docker.io/nginx

啓動一個使用鏡像docker.io/nginx,名字container_nginx的容器,-p 8080:80表示將容器的80端口映射到主機的8080端口,這樣我們只要訪問主機的8080端口就可以訪問到容器的服務了。

注意:name前面是兩個-, 端口前面有-pdocker.io/nginx是鏡像名,8080是主機的端口,80是Nginx應用的端口

主機上的一個端口只能映射一個容器端口,不可以多個容器端口對應一個主機端口(如果容器安裝的centos類的系統,那麼容器端口隨便設定,但如果容器內只是單純的應用,那麼容器端口要是應用自身的端口)

在這裏插入圖片描述

這樣我們就創建並啓動了一個容器!

exit 退出容器

docker ps 查看運行中的容器

docker ps -a 查看運行中和非運行中的所有容器

docker exec -it container_nginx /bin/bash 進入容器

如果容器還未啓動 執行docker start container_nginx

進入容器後啓動Nginx

whereis nginx 找Nginx的啓動目錄

[root@iz2zehzeir87zi8q99krk1z ~]# docker start container_nginx
container_nginx
[root@iz2zehzeir87zi8q99krk1z ~]# docker exec -it container_nginx /bin/bash
root@84683e425116:/# whereis  nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@84683e425116:/#  /usr/sbin/nginx 

此時在瀏覽器訪問 http://51.110.218.9:8080/ 就可以直接訪問容器內的Nginx
在這裏插入圖片描述

如果訪問不成功,可能是主機端口的防火牆開着,執行下邊的命令關閉

/ sbin / iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

由於我用的阿里雲服務器,所以需要在阿里雲把8080端口開放
在這裏插入圖片描述

刪除容器

容器刪除之前先將容器停止

docker stop container_nginx 或者是容器的id

docker rm -f container_nginx 容器刪除

docker start 與 docker run 的區別

docker start name 啓動一個已經創建的容器

docker run 創建並啓動一個容器

docker run 命令其實是 docker createdocker start 的命令組合,先執行docker create 創建一個容器 再接着docker start啓動

主機和容器文件相互複製

從主機複製到容器 sudo docker cp host_path containerID:container_path

從容器複製到主機 sudo docker cp containerID:container_path host_path

請注意,以上這兩個命令都是在主機中執行的,不能再容器中執行

docker cp container_nginx:/usr/local/xin.txt  /usr/local/software/   容器向主機複製文件

docker cp /usr/local/xinzhifu.txt  container_nginx:/usr/local/  主機向容器複製文件

這樣一個基礎的docker容器就創建完了 。。。。。。。。。。。。

反過來大家再看一看docker的容器與鏡像的區別 https://www.cnblogs.com/linjiaxin/p/7381421.html

那麼其實鏡像與容器的本質區別並不大,那麼鏡像可以生成容器 ,容器是否可以做成鏡像呢?

docket commit container_nginx  image_nginx:v1

在這裏插入圖片描述
container_nginx 容器名

image_nginx:v1 自己起一個鏡像的名字:版本號


這樣做有什麼好處呢?

例如:A、B兩臺機器都想安裝redis,A機器上創建容器並在容器中做好redis的一切配置,讓後將這個容器docker commit 成鏡像image_redis,B機器也想要安裝redis,直接用鏡像image_redis創建容器就行了,docker就是做這樣一勞永逸的事情。

而且傳統方式得在每臺機器上安裝配置redis非常麻煩

四.鏡像的導入與導出

鏡像壓縮打包 (主機上進行操作),有兩種方式 docker savedocker loaddocker export 與 docker import

docker save nginx | gzip > nginx_xin_image.tar.gz  將現有的鏡像壓縮打包

docker load -i nginx_xin_image.tar.gz  壓縮的鏡像解壓

docker images 進行查看

docker save 是直接將鏡像進行打包 docker save <鏡像名>或<鏡像id>

docker export container_nginx> nginx_image.tar  

cat nginx_image.tar | sudo docker import  - nginx_image:import

docker export 是直接將容器進行打包 docker export <容器名>或<容器id>

需要注意兩種方法配套的,切不可混用。雖然導入導出時沒問題,但是在創建容器時候會報錯

如果使用import導入save產生的文件,雖然導入不提示錯誤,但是啓動容器時會提示失敗,

會出現類似"docker: Error response from daemon: Container command not found or does not exist"的錯誤。

類似,使用load載入export產生的文件,也會出現問題。

先寫到這,文章略顯粗糙,希望對您有一點用,學無止境加油!


WeChat:關注公重號:【程序員內點事】,免費獲取2000G學習資料,內含精選面試題,SSM、Spring全家桶、微服務、MySQL、MyCat、集羣、分佈式、中間件、Linux、網絡、多線程,Jenkins、Nexus、Docker、ELK等等免費學習視頻,持續更新!

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