docker目錄
/var/lib/docker目錄存放著Docker鏡像、容器以及容器的配置沦补。
所有的容器都保存在/var/lib/docker/containers目錄下誓斥。
查看Docker運行狀態(tài)
docker info
第一個docker入門
docker run -i -t ubuntu /bin/bash
-i stdin 標準的輸入
-t 偽tty終端
上面可能會出現: docker: error pulling image configuration這樣的錯誤,是因為網絡問題,解決辦法是使用國內的docker鏡像,這里使用daocloud的加速鏡像:
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://xxxxx.m.daocloud.io\"" | tee -a /etc/default/docker
原理:首先Docker會檢查本地是否存在ubuntu鏡像,如果本地還沒有該鏡像的話,那么Docker就會連接官方維護的Docker Hub Registry,查看Docker Hub中是否有該鏡像姆怪。
Docker一旦找到該鏡像为严,就會下載該鏡像并將其保存到本地宿主機中。 隨后黑低,Docker在文件系統(tǒng)內部用這個鏡像創(chuàng)建了一個新容器。
該容器擁有自己的網絡酌毡、IP地址投储,以及一個用來和宿主機進行通信的橋接網絡接口。最后阔馋,我們告訴Docker在新容器中要運行什么命令玛荞,本例中我們在容器中運行/bin/bash命令啟動了一個Bash shell .當容器創(chuàng)建完畢之后,Docker就會執(zhí)行容器中的/bin/bash命令呕寝,這時我們就可以看到容器內的shell了勋眯。
查看容器
docker ps -a 包含停止的和運行的
docker ps -l 最后一次的
docker ps 只有運行的
docker images 所有的鏡像
docker ps -n x 顯示最后x個容器
docker inspect container_name
docker inspect --format=’{{.State.Running}}’ container_name 返回指定內容
怎樣給容器起一個名字?
Docker會為我們創(chuàng)建的每一個容器自動生成一個隨機的名稱。如果想為容器指定一個名稱下梢,而不是使用自動生成的名稱客蹋,則可以用一name標志來實現.
比如:docker run --name ubuntu_container -i -t ubuntu /bin/bash
一個合法的容器名稱只能包含以下字符:小寫字母a-z、大寫字母A-Z孽江、數字0-9讶坯、下劃線、圓點岗屏、橫線(如果用正則表達式來表示這些符號辆琅,就是[a-zA-Z0-9_.-])
重啟容器的幾種方式?
docker start|restart container_name|container_id
停止容器
docker stop|kill container_name|container_id
創(chuàng)建長期運行的容器
守護式容器(daemonized container)沒有交互式會話,非常適合運行應用程序和服務这刷。
大多數時候我們都需要以守護式來運行我們的容器婉烟。
docker run --name ubuntu_daemon -d ubuntu /bin/sh -c "while true;do echo hello world;sleep 1;done"
-d 將容器放到后臺執(zhí)行
上面的命令是在后臺一直循環(huán)輸出hello world
獲得容器的日志
docker logs [-f] container_id|container_name
-f 可以實時監(jiān)控日志
docker logs一tail 10 container_name 獲取日志的最后10行
docker logs --tail 0 -f container_name 讀取最新的日志
docker logs --tail 0 -ft container_name 讀取最新的日志并添加時間戳
查看容器內運行的進程
docker top container_name
怎樣在容器內部運行進程呢?
在Docker 1.3+通過docker exec命令在容器內部額外啟動新進程。
在容器內運行的進程有兩種類型:后臺任務和交互式任務暇屋。
后臺任務在容器內運行且沒有交互需求似袁,而交互式任務則保持在前臺運行。
對于需要在容器內部打開shell的任務,交互式任務是很實用的昙衅。
docker exec -d ubuntu_daemon touch /etc/new_file
上面執(zhí)行后在后臺創(chuàng)建一個空的文件
docker exec -i -t ubuntu_daemon /bin/bash
上面執(zhí)行后,打開shell
docker的自動重啟?
docker run --restart=always|on-failure:5 --name ubuntu_daemon
-d ubuntu bin/sh -c "while true; do echo hello world; sleep 1;done"
--restart 檢查容器的退出代碼,確定是否重啟,默認是不重啟的
always 一直自動重啟,無論退出代碼是什么.
on-failure:5 容器退出代碼為非0時,重啟5次,其中:5可以不要.
刪除停止的容器
docker rm container_id 刪除指定的容器
docker rm `docker ps -a -q` 刪除所有的容器(反引號)