1. 程式人生 > >docker【4】docker基本命令

docker【4】docker基本命令

    這篇部落格主要羅列了一些docker的基本命令和一些進階命令,以及一些命令的詳解:

  • 基本命令

1、先添加當前使用者到docker組(非root使用者)  使用者lin  

    不新增使用者的話,每次執行docker 都需要使用sudo,所以進行新增一下,方便操作;

  1. sudo gpasswd -a lin docker

2、檢視docker資訊 docker version | docker info

  1. [email protected]:~$ docker info

3、安裝映象 pull  

 ubuntu15.10為例,映象可以從docker hub 尋找,根據自己的需要進行映象系統和版本的安裝

  1. [email protected]:~$ docker pull ubuntu:15.10

4、檢視安裝映象  docker images

  1. [email protected]:~$ docker images

5、執行容器 docker run

所有的容器執行命令主要為 docker run。

  • 下面的命令輸出一個 hello docker ,然後終止容器。

  1. [email protected]:~$ docker run ubuntu:15.10 /bin/echo hello docker
  2. hello docker

這跟在本地執行 /bin/echo hello docker 幾乎感覺不出來任何區別


  • 下面的命令則啟動一個bash終端,允許使用者進行互動

  1. sudo docker run -t -i --name myubuntu ubuntu:15.10 /bin/bash

     -t 分配一個偽終端(pseudo-tty)並繫結到容器的標準輸入上,-i 則讓容器的標準輸入保持開啟,--name 給容器命名為myubuntu。

    退出的話使用exit 或者 ctrl+d,一旦退出,容器便停止;

    後臺執行的,可以重新進入容器

  1. docker exec -it [容器ID] /bin/bash

也可以使用

  1. [email protected]:~$ docker attach containId

bin/bash 是用命令模式進入

  • 使用-p提供容器介面 例如

  1. $ docker run -d -P training/webapp python app.py

-d 命令不多解釋(下面會有-d的說明),是告訴docker我們需要後臺執行,-p是告訴docker我們會影射一個內部的埠到外部 不加代表預設

也可以自己定義

  1. $ docker run -d -p 80:5000 training/webapp python app.py

5000是docker內部介面,80是影射到外部的介面,為什麼要這麼寫,是因為,若是兩個容器的python被啟動,都是5000埠,那麼外部就不知道該怎麼訪問,所以這裡影射需要影射一下外網訪問的埠。這樣你就可以在本地使用 localhost:80來訪問應用程式

檢視埠影射情況

  1. docker port containID 5000

6、後臺(background)執行 -d

    更多的時候,需要讓docker在後臺執行而不是直接把執行命令的結果輸出在當前宿主機下。此時可以通過新增-d 來實現;

  • 如果不是用-d引數

  1. docker run  ubuntu:15.10 /bin/sh -c "while true ;do echo hello docker ; sleep 2; done"

容器就會把輸入的結果(STDOUT)列印到宿主機上

  • 若是是用-d

  1. myjob=$(docker run -d ubuntu:15.10 /bin/sh -c "while true ;do echo hello docker ; sleep 2; done")

    此時容器會在後臺執行並不會把輸出的結果(STDOUT)列印到宿主機上面(輸出結果可以用docker logs 檢視)。

    這裡給這個job起了一個名字叫myjob,hello docker 將會兩秒執行一次,因為若是不自己命名,就會預設自動生成一個名字,往後的日誌將會很難查詢。

注: 容器是否會長久執行,是和docker run指定的命令有關,和 -d 引數無關。    

更多的引數 可以使用docker run --help 檢視

7、檢視日誌 docker logs[container ID or name]

  1. [email protected]:~$ docker logs $myjob
  2. hello docker

8、進入容器 attach

    在使用 -d 引數時,容器啟動後會進入後臺。 某些時候需要進入容器進行操作,有很多種方法,包括使用docker attach 命令或 nsenter  工具等。

  1. [email protected]:~$ docker attach myubuntu1 [email protected]:/#
  1. docker exec -it myubuntu1 /bin/bash

9、檢視正在執行的容器 docker ps

  1. [email protected]:~$ docker ps

10、檢視所有容器 docker ps -a

  1. [email protected]:~$ docker ps -a

使用如下命令檢視程式最近一次的執行情況

  1. $ docker ps -l

11、停止/啟動容器 docker stop/start[continer ID or name]

  1. [email protected]:~$ docker stop $myjob
  2. e34198448f878c1f1cff3d34f2707f137962fc622919c35a9059d11232629f7e
  1. [email protected]:~$ docker start $myjob
  2. e34198448f878c1f1cff3d34f2707f137962fc622919c35a9059d11232629f7e

使用restart命令,會先停止該容器再重新啟動

12、匯入匯出容器 export/import

  • export 這個命令用於將容器的系統檔案打成jar包匯出到本地,在本地就能看到從容器中打的while.tar;

  1. docker export 0bbea06cac56 >while.tar
  2. [email protected]:~$ ls
  3. Desktop    Downloads         Music     Public     Videos
  4. Documents  examples.desktop  Pictures  Templates  while.tar
  • import 可以匯入遠端檔案、本地檔案和目錄成為映象

    使用遠端的檔案命令式

  1. $ docker import http://example.com/example.tar

    本地檔案或者目錄的匯入需要使用 -引數 使用docker import --help檢視引數

  1. sudo cat while.tar  |docker import - ubuntu:15.10v1

    *注:使用者既可以使用 docker load 來匯入映象儲存檔案到本地映象庫,也可以使用 docker import 來匯入一個容器快照到本地映象庫。這兩者的區別在於容器快照檔案將丟棄所有的歷史記錄和元資料資訊(即僅儲存容器當時的快照狀態),而映象儲存檔案將儲存完整記錄,體積也要大。此外,從容器快照檔案匯入時可以重新指定標籤等元資料資訊。

13、從tar檔案中載入映象或者倉庫到stdin。 load

  1. $ docker load -i  example.tar

14、儲存映象為tar檔案併發送到stdout save

  1. $ docker save image

15、將容器的狀態提交為映象 comint

儲存後用docker images 檢視會多出這個映象

  1. [email protected]:~$ docker commit $myjob myjob1
  2. 764c656f5fc53db19194226cbb84b28bc0c53c9199367b19641fbf87aaa00090

16、刪除容器 rm

  1. [email protected]:~$ docker rm $myjob
  2. e34198448f878c1f1cff3d34f2707f137962fc622919c35a9059d11232629f7e
  3. [email protected]:~$ docker rm $(docker ps -a)

刪除所有的未執行的容器

  1. [email protected]:~$ docker rm $(docker ps -a -q)

*注意:這個命令其實會試圖刪除所有的包括還在執行中的容器,不過就像上面提過的 docker rm 預設並不會刪除執行中的容器。

17、刪除映象 rmi

  1. [email protected]:~$ docker rmi imageId

*注意:在刪除映象之前要先用 docker rm 刪掉依賴於這個映象的所有容器。

    docker images 可以列出本地所有的映象,其中很可能會包含有很多中間狀態的未打過標籤的映象,大量佔據著磁碟空間。清理所有未打過標籤的本地映象

刪除所有未打過標籤的本地映象

  1. $ sudo docker rmi $(docker images -q -f "dangling=true")

18、給映象打標籤

  1. $ docker tag imageId/name ouruser/sinatra:devel

以上這些基本命令差不多在普通的操作中已經夠用;

  • 進階命令:

1、構建映象 build命令

  1. $ docker build [option] path|url

還有一些docker提供的額外選項可以使用 docker build --help命令檢視

2、diff 對比命令

docker還提供了一個非常強大的命令 diff,他可以列出容器內發生變化的檔案和內容目錄。這些變化包括新增,刪除,修改。

  1. $ docker diff container

3、cp命令

從容器內複製檔案到指定的路徑上,cp

  1. $ docker cp container:path hostpath

把容器裡面的test拷貝到本地

  1. [email protected]:~$ docker cp 0bbea06cac56:/test /test

4、用login命令登入到docker registry伺服器

  1. $ docker login [option] [server]

登入自己主機的registry使用

  1. $ docker login localhost:8080

5、docker inpect 命令可以收集有關容器和映象的底層資訊。

這些資訊包括

  • 容器例項的IP地址

  • 埠繫結列表

  • 特定埠對映的搜尋

  • 收集配置的詳細資訊

  1. [email protected]:~$ docker inspect  0bbea06cac56

    [ {    "Id": "0bbea06cac562a7a7b5d8bee30ccfa1c2eba8b7153c2106d0ed610ea3e03cf2d",    "Created": "2015-12-15T06:26:05.624302049Z",    "Path": "/bin/sh",    "Args": [        "-c",        "while true ;do echo hello docker ; sleep 2; done"    ],    "State": {        "Status": "exited",        "Running": false,        "Paused": false,        "Restarting": false,        "OOMKilled": false  

    ......

顯示容器的詳細資訊;

6、停止容器主程序 kill

  1. $ docker kill [option] container

7、阻塞對指定容器的其他呼叫方法,直到容器停止後退出阻塞。 wait

  1. $ docker wait container

8、在registry中尋找自己需要的映象

  1. [email protected]:~$ docker search (image name)

9、檢視映象歷史版本

  1. [email protected]:~$ docker history (image name)

10、把映象推送到registry path 不能是根目錄必須是user/image 例如 lin/myjob1

  1. [email protected]:~$ docker push (path)

在這個之前你需要註冊,然後新建你的倉庫地址,才可以push;

相關推薦

docker4docker基本命令

    這篇部落格主要羅列了一些docker的基本命令和一些進階命令,以及一些命令的詳解: 基本命令 1、先添加當前使用者到docker組(非root使用者)  使用者lin       不新增使用者的話,每次執行docker 都需要使用sudo,所以進行新增一下

LinuxLinux基本命令

2.修改使用者組的名稱:groupmod -n (新組名) (原組名) 3.修改組編號:groupmod -g668 (組名) 4.建立組名為boss的使用者組,組編號為888: groupadd -g 888 boss 5.刪除使用者組:groupdel (組名) 6.使用者組裡新增使用者:useradd

linux 基本命令學習

基本命令  經常用的 在網上找了一個比較全面的 轉帖 [語法]: ls [-RadCxmlnogrtucpFbqisf1] [目錄或檔案......] [說明]: ls 命令列出指定目錄下的檔案,預設目錄為當前目錄 ./,預設輸出順序為縱向按字元順序排列。 -R 遞迴地

Kbengine遊戲引擎-4demo-kbengine_unity3d_demo 在容器docker上安裝測試

目錄文件 關於 linux cnblogs 關註 容器 註意 中文 nbsp git地址:https://github.com/kbengine/kbengine_unity3d_demo Demo中文地址:https://github.com/kbengine/kbeng

LinuxServicesSaaSDocker+kubernetes(4. 用ansible管理機器和軟件)

實現 service SDR https 輸出 公司 keygen /etc slave 1. 簡介 1.1. 公司環境使用的puppet,但是我更喜歡ansible,原因有二,第一,我是紅帽的忠粉:),第二,我對python比較熟悉 1.2. ansible官方網站:ht

實戰Docker入門實踐二:Docker服務基本操作 和 測試Hello World

lag hit 現在 mage spa 關系 .so recommend 不能 操作環境操作系統:CentOS7.2 內存:1GB CPU:2核Docker服務常用命令docker服務操作命令如下service docker start #啟動服務 service doc

Docker鏡像docker默認存放路徑

docker存放路徑 docker配置文件docker安裝後默認的存放路徑為/var/lib/docker,有時候默認情況下磁盤空間有限或規範要求,需要修改docker存放路徑。那麽請看如下:1、在ubuntu的主機中可以修改配置文件:/etc/default/docker$vi /etc/default/d

轉載Docker 經驗之談

com 適合 自動下載 roo static 包含 處理 library latest 本文來源:Ghostcloud原創 對於用戶來說,可能一開始在不了解的情況下會對容器報以拒絕的態度,但是在嘗到容器的甜頭、體驗到它的強大性能之後,相信大家最終是無法

docker之Dockerfile實踐

b2c size ebe rem 目錄 all 緩存 local title 上一篇介紹了Dockerfile中使用的指令,現在開始進行指令實踐 先查看下本地的鏡像,選一個作為base image: [root@docker ~]# docker images REPO

docker+jenkins+git持續部署實踐

ref workspace 重要 star ng- 匿名 web del 目錄 寫在前面 以前搭建spring-cloud的時候 看到別人代碼裏面總有Dockerfile,然後了解到docker容器的概念,玩了兩個星期玩不下去了,就放下了,無意間在網上看到一篇文章Docke

Docker篇之一Docker鏡像及容器

官方 bin 方便 load 停止 pac 例如 exec cpu使用率 一、Docker核心概念 1、鏡像(image) Docker的鏡像是創建容器的基礎,類似虛擬機的快照,可以理解為是一個面向Docker容器引擎的只讀模板,比如一個鏡像可以是一個完整的centos操

轉載Docker部署nginx並修改配置文件

scrip pan eve 部署 keepaliv proxy format gin 一模一樣 docker 部署個nginx docker run --name nginx-health-web-pc -d -p 6800:80 -v /usr/

Docker run 記憶體限制報錯

#docker run --memory 2G 報錯:WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without sw

ShellUbuntu 基本Shell命令

#!/bin/bash string_temp="xiao gong wei" string_temp_app="my name is ${string_temp}." ### test for string for Shell. echo ${string_temp_app} for dat

Docker 生產環境之安全性 - 適用於 Docker 的 Seccomp 安全配置檔案

安全計算模式(secure computing mode,seccomp)是 Linux 核心功能。可以使用它來限制容器內可用的操作。seccomp() 系統呼叫在呼叫程序的 seccomp 狀態下執行。可以使用此功能來限制你的應用程式的訪問許可權。 只有在使用&nb

若澤資料第二天linux基本命令

1.檢視當前路徑 pwd 2.家目錄 linux系統中分為普通使用者和超級使用者,超級使用者擁有所有的許可權,普通使用者擁有部分許可權。 超級管理員對應的家目錄是:/root ,而一般使用者的家目錄是在/home/下的 3.切換目錄 cd

Docker的容器建立以及基本命令

1. 使用docker run建立docker容器,(docker命令都是以docker開頭的)安裝完docker後,大多數情況下,本機上面一般沒有docker映象的,執行docker run的時候一般先檢視本地映象,如果本地沒有,則會自動去Docker Hub上下載映象。D

Errordocker中pwndbg報錯 Error disabling address space randomization: Operation not permitted

在docker中安裝pwndbg,除錯時遇到了如下報錯: warning: Error disabling address space randomization: Operation not permitted 解決辦法: docker建立container時加入--priv

整理docker-compose安裝操作

docker離線安裝 安裝docker-18.03.1-ce #解壓 [[email protected] ~]# tar xzvf docker-18.03.1-ce.tar #將

docker

什麼是docker Docker 是一個開源專案,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘專案。它基於 Google 公司推出的 Go 語言實現。 專案後來加入了 Linux 基金會,遵從了 Apache 2.0 協議,專案程式碼在 GitHub 上進行維護。 Docker 自