Docker 入門教程03 使用容器工作

2021-10-22 01:32:42 字數 2869 閱讀 5661

在上乙個教程01中,我們成功的載入了我們的第乙個容器,並且我們使用docker run命令載入了兩個容器(在02中),我們由此得到兩個結論

1:我們可以和容器進行顯示的互動

2: 容器可以以一種後台執行的方式存在

並且我們學到了好幾個docker相關的命令

docker ps 顯示容器列表

docker log 給我們制訂容器顯示標準輸出

docker stop 停止制訂容器

docker客戶端是非常簡單的,每乙個操作都是一條命令,每乙個命令都有多個引數可以進行傳遞

$ docker run -i -t ubuntu /bin/bash

我們看一下docker version 的返回值

這條命令不僅會顯示docker的版本,而且會顯示出go語言的版本

client version: 0.8.0

go version (client): go1.2

git commit (client): cc3a8c8

server version: 0.8.0

git commit (server): cc3a8c8

go version (server): go1.2

last stable version: 0.8.0

docker幫助

你可以通過如下命令來獲取docker自帶的幫助文件:

docker –help

如果你想獲取指定命令的幫助,可以通過如下方式獲取

$ docker attach –help

usage: docker attach [options] container

attach to a running container

–help=false print usage

–no-stdin=false do not attach stdin

–sig-proxy=true proxy all received signals to the process

在容器中執行乙個web應用

我們已經學習了一些docker客戶端應用的,我們需要繼續學習比較重要的東西了,載入更多的容器,到目前為止,我們所有run的容器基本都沒什麼用處,那麼下面我們開始建立乙個web的容器的例子

我們要執行的是乙個python的應用,我們通過docker run來開始

我們來逐一分析一下這個命令都幹了什麼

-d -p ,-d我們已經知道了,說明是要讓我們的容器後台執行,但是-p我們沒有使用過,-p的目的是告訴docker去在所需要的埠之間進行對映(容器和主機之間的對映),之後對映之後,我們才可以通過主機的埠進行訪問

(此處的 -l 意思是last最後啟動的容器)

這個時候我們注意到prots部分

0.0.0.0:32768->5000/tcp

這個就是-p的作用,此例子中,容器的埠5000對應了主機的32768埠,當然,我們可能不希望使用32768這個埠來作為對映,我們可以通過簡單的命令指定對應的埠:

至於為什麼不直接使用1:1的關係把容器裡的埠對映到本機,原因是如果你啟動了兩個 剛剛一摸一樣的容器,1:1的埠對映就行不通了….

好了,我們可以通過開啟瀏覽器來訪問32768(我直接curl了)

網路簡便用法

雖然我們可以通過docker ps來獲取埠的情況,但是感覺很複雜,我們可以通過一種簡單的方式進行:

docker port

在使用的時候我們需要指定id 或者name (容器的)

docker port determined_bell 5000

(這個地方的5000是容器裡邊開發的埠)

檢視web應用日誌

docker logs -f determined_bell

-f 的作用和tail -f 中的作用是一致的,實時,最後

通過日誌我們也可以看到我們的應用跑在5000埠上

檢視容器中的程序

校驗我們的web應用容器(inspecting)

我們可以通過乙個命令來返回json格式的資料

例如針對我們現在容器

當然如果你覺得輸出太多,也可以直接輸出想要的某一特定專案,例如:

docker inspect -f 『}』 determined_bell

172.17.0.5

停止容器

下面說說如何停止容器,很簡單

docker stop determined_bell

然後我們在使用docker ps -l 就沒有資料了。

啟動容器

我們如果想再啟動它怎麼啟動呢?

docker start determined_bell

docker ps -l (又回來了…但是繫結的埠可能會變哦)

(我們也可以使用restart命令來完成停止和啟動命令)

刪除容器

docker rm determined_bell

error response from daemon: cannot destroy container determined_bell: conflict, you cannot remove a running container. stop the container before attempting removal or use -f

error: failed to remove containers: [determined_bell]

擦,居然報錯,為什麼?因為上一步我們把docker啟動了又,刪除之前一定要先停止再刪除

docker stop determined_bell

docker rm determined_bell

刪除成功

Docker 入門教程

冗餘步驟多。虛擬機器需要完整的作業系統,一些系統級別的操作步驟,往往無法跳過,比如使用者登入。啟動很慢。啟動作業系統需要多久,啟動虛擬機器就需要多久。可能要等幾分鐘,應用程式才能真正執行。體積小。容器只要包含用到的元件即可,而虛擬機器包含整個作業系統,所以容器檔案比虛擬機器檔案要小很多。啟動快。啟動...

Docker入門教程

mongodb由c 語言編寫,是乙個基於分布式檔案儲存的開源資料庫系統,支援的資料結構為bson格式。我們開始用docker進行部署我們的mongodb。我們從docker的官網找到mongo對應的映象 於是我們進行拉取 我們讓我們的mongodb 跑起來 docker run d p 2017 2...

Docker 一 Docker入門教程

docker client docker 命令列工具,是使用者使用docker的主要方式,docker client與docker daemon通訊並將結果返回給使用者,docker client也可以通過socket或者restful api訪問遠端的docker daemon docker co...