docker 命令整理

docker 命令整理


安裝Docker:

ubuntu安裝:curl -s https://get.docker.io/ubuntu/ | sudo sh 

鏡像管理

docker p_w_picpaths:列出本地所有鏡像

docker search <IMAGE_ID/NAME>:查找p_w_picpath

docker pull <IMAGE_ID>:下載p_w_picpath

docker push <IMAGE_ID>:上傳p_w_picpath

docker rmi <IMAGE_ID>:刪除p_w_picpath


容器管理

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

-d:以守護進程方式運行(後臺)

-P:默認匹配docker容器的5000端口號到宿主機的49153 to 65535端口

-p <HOT_PORT>:<CONTAINER_PORT>:指定端口號

- -name: 指定容器的名稱

- -rm:退出時刪除容器



docker stop <CONTAINER_ID>:停止container

docker start <CONTAINER_ID>:重新啓動container

docker ps - Lists containers.

-l:顯示最後啓動的容器

-a:同時顯示停止的容器,默認只顯示啓動狀態


docker attach <CONTAINER_ID> 連接到啓動的容器

docker logs <CONTAINER_ID>  : 輸出容器日誌

-f:實時輸出

docker cp <CONTAINER_ID>:path hostpath:複製容器內的文件到宿主機目錄上

docker rm <CONTAINER_ID>:刪除container

docker rm `docker ps -a -q`:刪除所有容器

docker kill `docker ps -q`

docker rmi `docker p_w_picpaths -q -a`

docker wait <CONTAINER_ID>:阻塞對容器的其他調用方法,直到容器停止後退出


docker top <CONTAINER_ID>:查看容器中運行的進程

docker diff <CONTAINER_ID>:查看容器中的變化

docker inspect <CONTAINER_ID>:查看容器詳細信息(輸出爲Json)

-f:查找特定信息,如docker inspect -f '` `.`NetworkSettings`.`IPAddress `'

      docker commit -m "comment" -a "author" <CONTAINER_ID>  ouruser/p_w_picpathname:tag


      docker extc -it <CONTAINER> <COMMAND>:在容器裏執行命令,並輸出結果



網絡管理

docker run -P:隨機分配端口號

docker run -p 5000:5000:綁定特定端口號(主機的所有網絡接口的5000端口均綁定容器的5000端口)

docker run -p 127.0.0.1:5000:5000:綁定主機的特定接口的端口號

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py:綁定udp端口號

docker port <CONTAINER_ID> 5000:查看容器的5000端口對應本地機器的IP和端口號

使用Docker Linking連接容器:

Docker爲源容器和接收容器創建一個安全的通道,容器之間不需要暴露端口,接收的容器可以訪問源容器的數據

docker run -d -P --name <CONTAINER_NAME> --link <CONTAINER_NAME_TO_LINK>:<ALIAS>  


數據管理

Data Volumes:volume是在一個或多個容器裏指定的特殊目錄

數據卷可以在容器間共享和重複使用

可以直接修改容器卷的數據

容器卷裏的數據不會被包含到鏡像中

容器卷保持到沒有容器再使用它

可以在容器啓動的時候添加-v參數指定容器卷,也可以在Dockerfile裏用VOLUMN命令添加

docker run -d -P --name web -v /webapp training/webapp python app.py


也可以將容器卷掛載到宿主機目錄或宿主機的文件上,<容器目錄或文件>的內容會被替換爲<宿主機目錄或文件>的內容,默認容器對這個目錄有可讀寫權限

docker run -d -P --name web -v <宿主機目錄>:<容器目錄> training/webapp python app.py


可以通過指定ro,將權限改爲只讀

docker run -d -P --name web -v <宿主機目錄>:<容器目錄>:ro training/webapp python app.py


在一個容器創建容器卷後,其他容器便可以通過--volumes-from共享這個容器卷數據,如下:

docker run -d -v /dbdata --name db1 training/postgres echo Data-only container for postgres


首先啓動了一個容器,併爲這個容器增加一個數據卷/dbdata,然後啓動另一個容器,共享這個數據卷

docker run -d --volumes-from db1 --name db2 training/postgres


此時db2使用了db1的容器卷,當容器db1被刪除時,容器卷也不會被刪除,只有所有容器不再使用此容器卷時,纔會被刪除

docker rm -v:刪除容器卷


除了共享數據外,容器卷另一個作用是用來備份、恢復和遷移數據

docker run --volumes-from db1 -v /home/backup:/backup ubuntu tar cvf /backup/backup.tar /dbdata


啓動一個容器數據卷使用db1容器的數據卷,同時新建立一個數據卷指向宿主機目錄/home/backup,將/dbdata目錄的數據壓縮爲/backup/backup.tar

docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

docker run --volumes-from dbdata2 -v /home/backup:/backup busybox tar xvf /backup/backup.tar

啓動一個容器,同時把backup.tar的內容解壓到容器的backup


倉庫管理

docker login:登錄





保存對容器的修改(commit) 

當你對某一個容器做了修改之後(通過在容器中運行某一個命令),可以把對容器的修改保存下來,這樣下次可以從保存後的最新狀態運行該容器。

?

1

2

# 保存對容器的修改; -a, --author="" Author; -m, --message="" Commit message

$docker commit ID new_p_w_picpath_name


# 列出一個容器裏面被改變的文件或者目錄,list列表會顯示出三種事件,A 增加的,D 刪除的,C 被改變的

$docker diff Name/ID

 

# 顯示一個運行的容器裏面的進程信息

$docker top Name/ID

 

# 從容器裏面拷貝文件/目錄到本地一個路徑

$docker cp Name:/container_path to_path

$docker cp ID:/container_path to_path

 

# 重啓一個正在運行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10

$docker restart Name/ID



保存和加載鏡像(save、load) 

當需要把一臺機器上的鏡像遷移到另一臺機器的時候,需要保存鏡像與加載鏡像。






# 保存鏡像到一個tar包; -o, --output="" Write to an file

$docker save p_w_picpath_name -o file_path

# 加載一個tar包格式的鏡像; -i, --input="" Read from a tar archive file

$docker load -i file_path

 

# 機器a

$docker save p_w_picpath_name > /home/save.tar

# 使用scp將save.tar拷到機器b上,然後:

$docker load < /home/save.tar

登錄registry server(login)

?

1

2

# 登陸registry server; -e, --email="" Email; -p, --password="" Password; -u, --username="" Username

$docker login



詳解修改docker時區及docker常用命令


docker cp /etc/localtime:【容器ID或者NAME】/etc/localtime


apk add tzdata 

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

echo "Asia/Shanghai" > /etc/timezone


ENV TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone



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