二、常用命令
三、入門實踐
參考最近在做機器學習相關的專案,其中谷歌ai模型需要用docker來配置環境,這篇文章僅用來記錄在這次實踐中學習到的docker相關知識,不會對docker進行長篇大論的介紹,希望能讓大家對docker有乙個快速的入門。
首先我們來看看什麼是容器,貨櫃我們都知道,那麼容器是就是軟體領域的貨櫃,容器是軟體的乙個標準單元,可以將**和依賴打包在一起、能夠執行在多種作業系統和環境之上。而docker則是建立容器的工具,是應用容器引擎。
這樣說可能不夠直觀,接下來舉個例子。
比如公司買了一台新伺服器,系統是centos,你要想把專案部署到伺服器上,而且專案中使用到了mysql、redis、activemq、zookeeper等技術,要想專案能在伺服器上正常執行,必須在新的伺服器上搭建好mysql、redis、activemq、zookeeper服務環境。這樣的話,在環境搭建和配置上就要花費太多的時間了(因為需要配置很多的配置檔案、需要手動啟動服務等)。詳見:docker是幹什麼用的又或者每次重灌一次系統或者換乙個機器,你就要把環境重灌一次,東西越多花費的時間越多、很麻煩、浪費時間和精力。
而使用docker的話,你只需要一條命令,你就可以在你的centos系統上執行你需要的軟體,比如mysql、tomcat、jdk、redis等。
三者的概念如下:
映象(image):相當於是乙個 root 檔案系統。比如官方映象 ubuntu:16.04 就包含了完整的一套 ubuntu16.04 最小系統的 root 檔案系統。
容器(container):映象和容器的關係,就像是物件導向程式設計中的類和例項一樣,映象是靜態的定義,容器是映象執行時的實體。
倉庫(repository):倉庫可看成乙個**控制中心,用來儲存映象。
三者的關係如下:
功能命令列
檢視本地映象
docker images
搜尋映象
docker search imagename
docker pull imagename
刪除映象
docker rmi imagename
功能命令列
備註檢視容器
docker ps(顯示正在執行的容器)
-a:顯示正在執行和停止執行的所有容器
啟動容器
docker run [options] image [command] [arg...]
例:docker run -it —name=test ubuntu /bin/bash
—name:命名
—rm:exit後刪除容器
-i:互動式操作(exit退出)
-t:終端
-d:後台執行(需要啟動該停止的容器docker start imagename)
-p:對映本機埠和容器埠(例:docker run -p 32768:80 nginx:alpine 訪問本機的32768埠即訪問容器的80埠nginx頁面)
-v:將宿主機目錄掛載到容器目錄下(例:docker run -it -v /test:/soft ubuntu /bin/bash 容器中的soft資料夾可以訪問主機test資料夾中的檔案)
停止容器
docker stop imagename
刪除容器
docker rm imagename
容器必須已停止
容器日誌
docker logs imagename
容器程序
docker top imagename
在執行的容器中執行命令
docker exec [options] container command [arg...]
相當於把run換成exec
功能命令列
檢視命令使用方法
docker command —help
獲取容器/映象的元資料
docker inspect [options] name/id [name/id…]
注:第二節的操作imagename和imageid均可
詳見:docker常用命令
安裝docker(詳見:菜鳥教程):
brew cask install docker
拉取映象:
docker pull $
檢視映象:docker images
執行容器(至此,谷歌模型所需環境已配置完成):
docker run --rm --name $
-p $
:8501
-v $
:/tmp/mounted_model/
0001
-t $
檢視容器:docker ps -a
停止容器:
docker stop $
刪除容器(用完後可以刪除容器):docker rm $
由於谷歌模型所需映象在外網上,故這裡需要拉取國外映象,具體方法如下:
開啟**:
設定docker**(新增http-proxy.conf檔案):
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
http-proxy.conf檔案內容如下:[service]
environment=
"all_proxy=socks5:"
檢視**配置:systemctl show --property=environment docker
顯示如下即配置成功:environment=
all_proxy
=socks5://
127.0
.0.1
:1089
重啟docker服務:systemctl daemon-reload
systemctl restart docker
至此配置完成,可拉取國外映象。
注:以上是linux為docker設定**,mac還可見為docker設定**
菜鳥教程
實踐部落格
Docker 入門實踐
docker兩個最重要的概念是映象和容器。重要。容器 container 映象 images 倉庫 repository 除此之外,鏈結和資料卷也很 docker背後的想法是建立軟體程式可移植的輕量容器,讓其可以在任何安裝了docker的機器上執行,而不用關心底層作業系統,就像野心勃勃的造船者們成功...
Docker入門實踐
docker是一門很成熟的容器技術,類似虛擬機器技術主要用做環境的隔離,方便環境的複製映象,虛擬機器是基於作業系統這一層的,而docker更加的輕量級,像是 應用 層級的。比如我需要乙個mysql環境 乙個nginx環境 乙個netcore執行環境等等。有兩個非常重要的概念要搞明白 映象images...
Docker入門及實踐
docker是軟體容器平台 倉庫是集中存放映象檔案的場所 倉庫註冊伺服器存放多個倉庫,倉庫又包含多個映象,每個映象有不同的標籤。倉庫分為公開倉庫和私有倉庫,例如docker hub docker為什麼比虛擬機器快 docer有著比虛擬機器更少的抽象層,不需要實現硬體資源虛擬化,直接使用實際物理機的硬...