Docker使用技巧及常用命令
安裝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使用技巧及常用命令