Docker容器入門指北
VSole2022-05-11 06:43:31
Docker 是一種基于 Linux 的容器化技術,類似于輕量的虛擬機。它采用 C/S 架構,使用Go語言開發。Docker 分為 2 個版本:社區版(Community Edition, CE)和企業版(Enterprise Edition, EE),社區版免費,企業版是收費的。
針對 macOS 10.10.3 和 Windows 10,Docker 還推出了Docker Desktop,Docker Desktop又分為 2 個渠道(channel),穩定渠道(Stable)和搶先渠道(Edge),需要注意的是,Docker Desktop對系統是有要求的,例如,針對 Win10 的Docker for Windows因為要用到Hyper-V虛擬機,所以要求系統是 64 位專業版或企業版并開啟Hyper-V功能。
安裝Docker
本人使用Centos 8測試安裝
> yum install docker-ce -y
啟動 Docker
> systemctl start docker
關閉 Docker
> systemctl stop docker
重啟Docker
> systemctl restart docker
使用Docker
1. 修改當前用戶組
Docker命令默認需要root權限,也就是說每個指令需要sudo前綴,非常的麻煩。解決這個麻煩的方法是將當前用戶加到docker用戶組,具體方法是:> groupadd docker
> usermod -aG docker ${USER}
之后要應用新的組,需要重新登陸服務器或者輸入下面內容:
> su - ${USER}
這里需要你的登陸密碼。之后,你可以通過下面方法來確認當前用戶加入到了docker組:> id -nG
確認當前用戶已經加入到docker組.2. Docker基本命令
Docker命令的基本語法組成為:
> docker [option] [command] [arguments]
輸入docker回車可以列出所有的docker子命令,使用:> docker docker-subcommand --help
可以獲取子命令的幫助,使用docker info可以獲取系統信息。3. 使用Docker鏡像工作
Docker容器從Docker鏡像中工作,它默認從Docker hub拉取這些需要的鏡像。運行Docker容器的大多數應用和linux的發行版所需要的鏡像image都能在Docker hub找到。為了檢查你是否能從Docker hub下載鏡像,使用下面指令:
> docker run hello-world
成功運行后會看到一些歡迎信息,’Hello from Docker!…balabala’。使用docker和search子命令,可以搜索鏡像,比如搜索Nginx鏡像使用:
> docker search nginx
可以看到Nginx鏡像的搜索結果,然后當你確定了你想用的鏡像的時候,使用pull子命令,例如:> docker pull nginx
當鏡像下載完成后,你可以使用下載好的鏡像和run子命令來運行一個容器,如果鏡像不存在,docker會先下載這個鏡像:> docker run nginx
要檢查當前有那些鏡像已經下載到了當前計算機上,使用:
> docker images
運行容器所使用的鏡像可以被修改從而生成新的鏡像,新的鏡像可以上傳或者說push到Docker hub上用來分享。
4. 運行Docker容器
之前的hello-world程序運行后就退出了,實際上,Docker容器還有更強大的功能,它們可以變得可交互,就像一臺虛擬機一樣,不過比虛擬機更加節省資源。使用下面的指令可以使用Nginx鏡像來運行容器,-i和-t選項可以賦予你以交互式shell形式進入容器的權限:
> docker run -it nginx
然后你的shell提示符會反映出你現在正在容器中,它的形式是這樣的:
root@d9b100f2f636:/#
5. 提交容器中的變化到Docker鏡像
當你啟用一個Docker鏡像的時候,你可以像在虛擬機中一樣創建,修改,刪除文件,這些改動只會被保存在容器中。你可以啟動或者停止它,但是一旦你使用docker rm命令摧毀它的時候,這些變化就會消失。那么如何將容器中的狀態保存為鏡像呢?> exit
將這些變化提交到新的Docker鏡像實例使用下面的命令:其中-m參數是記錄了本次提交的備注信息,而-a參數用來定義作者,container-id是需要提交的容器的id,repository通常是你的Docker hub的用戶名,除非你在Docker hub上創建了額外的倉庫。
> docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name
舉一個具體的例子:
> docker commit -m "added nginx" -a "rumenz test" 123456 rumenz/rumenz-nginx
注意:這里提交的鏡像只是保存在本地的鏡像當這個操作完成以后,使用docker images可以看到新的鏡像已經被添加了進去。下一次需要運行Nginx容器的時候,就可以使用這個新的鏡像了。除了這種方法,鏡像還可以通過DockerFile來創建。
6. 列出Docker容器
當使用docker一段時間后,你就會有很多active和inactive的容器,使用下面的指令來列出所有active的容器:
> docker ps
如果要觀察所有active和inactive的容器,則使用
> docker ps -a
如果要觀察最近創建的容器,使用:
> docker ps -l
停止一個正在運行的active狀態的容器使用命令:
> docker stop container-id
其中container-id可以通過docker ps命令來找到。
7.本地鏡像推到Docker倉庫
創建完的鏡像當然想要分享給朋友,一個方法是通過上傳或者說push到Docker Hub。要想push image首先需要在Docker hub注冊賬號。然后通過指令登陸Docker hub:
> docker login -u docker-registry-username
在根據提示輸入完密碼后,可以使用下面指令來push鏡像:
> docker push docker-registry-username/docker-image-name > docker push rumenz/rumenz-python3
然后等待push完成就可以在Docker hub上看見自己的image。
8. 使用Dockerfile
> docker build -t nginx:1.0 .
9. 容器與本地系統的關聯
> docker run --name nginx-test -p 8080:80 -d nginx
- --name nginx-test:容器名稱。
- -p 8080:80:端口進行映射,將本地 8080 端口映射到容器內部的 80 端口。
- -d nginx:設置容器在在后臺一直運行。
VSole
網絡安全專家