Docker入門實踐

2021-10-24 22:36:17 字數 3323 閱讀 5736

二、常用命令

三、入門實踐

參考最近在做機器學習相關的專案,其中谷歌ai模型需要用docker來配置環境,這篇文章僅用來記錄在這次實踐中學習到的docker相關知識,不會對docker進行長篇大論的介紹,希望能讓大家對docker有乙個快速的入門。

首先我們來看看什麼是容器,貨櫃我們都知道,那麼容器是就是軟體領域的貨櫃,容器是軟體的乙個標準單元,可以將**和依賴打包在一起、能夠執行在多種作業系統和環境之上。而docker則是建立容器的工具,是應用容器引擎。

這樣說可能不夠直觀,接下來舉個例子。

比如公司買了一台新伺服器,系統是centos,你要想把專案部署到伺服器上,而且專案中使用到了mysql、redis、activemq、zookeeper等技術,要想專案能在伺服器上正常執行,必須在新的伺服器上搭建好mysql、redis、activemq、zookeeper服務環境。這樣的話,在環境搭建和配置上就要花費太多的時間了(因為需要配置很多的配置檔案、需要手動啟動服務等)。

又或者每次重灌一次系統或者換乙個機器,你就要把環境重灌一次,東西越多花費的時間越多、很麻煩、浪費時間和精力。

而使用docker的話,你只需要一條命令,你就可以在你的centos系統上執行你需要的軟體,比如mysql、tomcat、jdk、redis等。

詳見:docker是幹什麼用的

三者的概念如下:

映象(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有著比虛擬機器更少的抽象層,不需要實現硬體資源虛擬化,直接使用實際物理機的硬...