1. 程式人生 > >Docker使用技巧及常用命令

Docker使用技巧及常用命令

span server 登錄用戶 serve java 本地 oot ps 命令 用戶

安裝docker

  • 檢查curl包是否安裝?

    which curl
  • 如果curl沒有安裝的話,則先更新apt源,並安裝curl,如下:

    apt-get updateapt-get install curlapt-get updatewget -qO- https://get.docker.com/ | sh
  • 設置當前用戶為docker用戶組,便於解決每次執行docker命令時都需要輸入密碼。

    # 添加一個新的docker用戶組groupadd docker# 添加當前用戶到docker用戶組裏,註意這裏的xxoo為ubuntu server登錄用戶名gpasswd -a xxoo docker# 重啟docker後臺監護進程service docker restart# 重啟之後,嘗試一下,是否生效docker version#若還未生效,則系統重啟,則生效reboot
  • 啟動docker服務,如下:

    service docker start

常見命令

  • 運行容器

        docker run hello-world
  • 顯示本地鏡像

       docker images
  • 獲取鏡像

       docker pull ubuntu:12.04
  • 創建一個容器,並讓其運行bash

          docker run -t -i ubuntu:12.04 /bin/sh

說明:-i:表示以“交互模式”運行容器 -t:表示容器啟動後會進入其命令行。

  • 利用DocFile來創建鏡像

         mkdir sinatracd sinatra/touch Dockerfilevim Dockerfiledocker build -t="ouruser/sinatra:v2" .
  • 運行容器

        docker start [stop| restart] xxx
  • 導出容器

           docker ps -adocker save -o ubuntu.tar.gz ubuntu:14.04 *(保存的是所有這個鏡像的版本記錄,包括一些歷史數據.)*docker export pid > ./ubuntu.tar.gz *(導出的是容器當前所用的鏡像內容)*
  • 導入容器

          docker load < /tmp/mynewimage.tar *(docker save 的逆操作)*cat ubuntu.tar | docker import - test/ubuntu:v1.0 *( export 的逆操作)*
  • 刪除容器

          docker stop xxxdocker rm xxx

說明:docker 的文件是放在 /var/lib/docker/containers/ 中的。

  • 保存鏡像

     docker commit xxx abc

說明:這裏保存成一個名叫 abc 的鏡像,鏡像名稱中只允許出現小寫字母和數字。

  • 刪除鏡像

      docker rmi abc
  • 獲取鏡像歷史

         docker history abcdocker images --tree *(查看所有鏡像的歷史過程)*

說明:只能對本地存在的 docker 鏡像執行這個命令。

  • 殺死一個或多個指定容器進程

         docker kill container

說明:-s “KILL” 自定義發送至容器的信號。

  • 查看一個正在運行容器進程

          docker top container

說明:也支持 ps 命令參數。

  • 暫停某一容器的所有進程

        docker pause container
  • 恢復某一容器的所有進程

           docker unpause container
  • 標記本地鏡像,將其歸入某一倉庫

             docker tag image name

說明:-f 覆蓋已有標記。

  • 獲取容器運行時的輸出日誌

         docker logs container
  • docker attach

      docker run -itd ubuntu:14.04 /bin/bashdocker attach 44fc0f0582d9

說明:docker attach可以attach到一個已經運行的容器的stdin,然後進行命令執行的動作。但是需要註意的是,如果從這個stdin中exit,會導致容器的停止。

  • docker exec

      docker exec -i name /bin/sh

只用-i時,由於沒有分配偽終端,看起來像pipe執行一樣。但是執行結果、命令 返回值都可以正確獲取。

      docker exec -it name /bin/sh

使用-it時,則和我們平常操作console界面類似。而且也不會像attach方式因為退出,導致整個容器退出。

        docker exec -t name /bin/sh

如果只使用-t參數,則可以看到一個console窗口,但是執行命令會發現由於沒有獲得stdin的輸出,無法看到命令執行情況。

       docker exec -d name /bin/sh a.sh

在後臺執行一個進程。可以看出,如果一個命令需要長時間進程,使用-d參數會很快返回。程序在後臺運行。

  • 分層級顯示一個鏡像或容器的信息

         docker inspect 465c60612e5c

常見容器安裝

  • mysql

       docker search mysql
docker pull mysql
docker run --name xmysql-db -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 -v /data/mysql_data/:/var/lib/mysql mysql
  • mongodb

      docker pull mongo
docker run --name xmongo-db -p 27018:27017 -v /data/my_mongo_data:/data/db -d mongo
  • jenkins

         docker pull jenkinschown 1000 /data/jenkins_data/
docker run --name xjenkins -d -p 9000:8080 -p 50000:50000 -v /data/jenkins_data:/var/jenkins_home -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --env JAVA_OPTS="-Xmx512m -XX:PermSize=256m -XX:MaxPermSize=1024m" -d jenkins
  • elasticsearch

      docker pull elasticsearch
docker run --name xelastic-search -d -p 9200:9200 -p 9300:9300 -v /data/esdata:/usr/share/elasticsearch/data elasticsearch
  • tomcat

        docker pull tomcat
docker run --name xtomcat -d -v /data/tomcat/webapps/:/usr/local/tomcat/webapps/ -p 8080:8080 -p 9001:9000 tomcat:8
  • dockerui

        docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui
  • webgoat

      docker pull webgoat/webgoat-7.1
docker run --name xwebgoat -d -p 8080:8080 webgoat/webgoat-7.1

Docker使用技巧及常用命令