Docker基礎(chǔ)
hello world
docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
各個參數(shù)解析:
docker: Docker 的二進(jìn)制執(zhí)行文件。
run:與前面的 docker 組合來運(yùn)行一個容器。
ubuntu:15.10指定要運(yùn)行的鏡像,Docker首先從本地主機(jī)上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
/bin/echo "Hello world": 在啟動的容器里執(zhí)行的命令
運(yùn)行交互式的容器
docker run -i -t ubuntu:15.10 /bin/bash
root@dc0050c79503:/#
各個參數(shù)解析:
- -t:在新容器內(nèi)指定一個偽終端或終端。
- -i:允許你對容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互
啟動容器(后臺運(yùn)行)
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
在輸出中,我們沒有看到期望的"hello world",而是一串長字符
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
這個長字符串叫做容器ID,對每個容器來說都是唯一的,我們可以通過容器ID來查看對應(yīng)的容器發(fā)生了什么。
首先,我們需要確認(rèn)容器有在運(yùn)行,可以通過 docker ps 來查看
docker ps

返回結(jié)果:
CONTAINER ID:容器ID
NAMES:自動分配的容器名稱
在容器內(nèi)使用docker logs命令,查看容器內(nèi)的標(biāo)準(zhǔn)輸出
docker logs 2b1b7a428627 或者docker logs {names}
停止容器
docker stop id 或者 docker stop {names}
運(yùn)行一個web
docker pull traning/webapp #載入鏡像
docker run -d -P training/webapp python app.py
參數(shù)說明:
-d:讓容器在后臺運(yùn)行。
-P:將容器內(nèi)部使用的網(wǎng)絡(luò)端口映射到我們使用的主機(jī)上。
網(wǎng)絡(luò)端口的快捷方式
docker port id
查看端口映射(從哪個端口映射到宿主機(jī)的那個端口)
查看 WEB 應(yīng)用程序日志
docker logs -f idor名字
查看容器內(nèi)容的標(biāo)準(zhǔn)輸出,-f: 讓 docker logs 像使用 tail -f 一樣來輸出容器內(nèi)部的標(biāo)準(zhǔn)輸出。
查看WEB應(yīng)用程序容器的進(jìn)程
docker top idor名字
查看web應(yīng)用城西容器的進(jìn)程
檢查 WEB 應(yīng)用程序
docker inspect id or 名字
查看 Docker 的底層信息。它會返回一個 JSON 文件記錄著 Docker 容器的配置和狀態(tài)信息。
停止和重啟 web容器
docker stop id or 名字
docker start id or 名字
查看最后一次創(chuàng)建的容器
docker ps -l
正在運(yùn)行的容器,我們可以使用 docker restart 命令來重啟
移除WEB應(yīng)用容器
docker rm id or 名字
刪除容器容器必須是stop狀態(tài)
列出鏡像列表
docker images
返回結(jié)果說明:
REPOSITORY TAG IMAGE ID CREATED SIZE
REPOSITORY:表示鏡像的倉庫源
TAG:鏡像的標(biāo)簽
IMAGE ID:鏡像ID
CREATED:鏡像創(chuàng)建時間
SIZE:鏡像大小
如果你不指定一個鏡像的版本標(biāo)簽,例如你只使用 ubuntu,docker 將默認(rèn)使用 ubuntu:latest 鏡像。
查找鏡像
我們可以從 Docker Hub 網(wǎng)站來搜索鏡像,Docker Hub 網(wǎng)址為: https://hub.docker.com/
我們也可以使用 docker search 命令來搜索鏡像。比如我們需要一個httpd的鏡像來作為我們的web服務(wù)。我們可以通過 docker search 命令搜索 httpd 來尋找適合我們的鏡像。
docker search httpd
NAME:鏡像倉庫源的名稱
DESCRIPTION:鏡像的描述
OFFICIAL:是否docker官方發(fā)布
創(chuàng)建鏡像
當(dāng)我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進(jìn)行更改。
1.從已經(jīng)創(chuàng)建的容器中更新鏡像,并且提交這個鏡像
2.使用 Dockerfile 指令來創(chuàng)建一個新的鏡像
更新鏡像
docker run -t -i ubuntu:15.10 /bin/bash
在運(yùn)行的容器內(nèi)使用 apt-get update 命令進(jìn)行更新。
在完成操作之后,輸入 exit命令來退出這個容器。
此時ID為e218edb10161的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit來提交容器副本。
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
各個參數(shù)說明:
-m:提交的描述信息
-a:指定鏡像作者
e218edb10161:容器ID
runoob/ubuntu:v2:指定要創(chuàng)建的目標(biāo)鏡像名
構(gòu)建鏡像
docker build
這需要一個dockerfile文件如下:
cat Dockerfile
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
一個指令都會在鏡像上創(chuàng)建一個新的層,每一個指令的前綴都必須是大寫的。
第一條FROM,指定使用哪個鏡像源
RUN 指令告訴docker 在鏡像內(nèi)執(zhí)行命令,安裝了什么。。。
然后,我們使用 Dockerfile 文件,通過 docker build 命令來構(gòu)建一個鏡像。
docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
---> Using cache
---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
---> Using cache
---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
參數(shù)說明:
-t :指定要創(chuàng)建的目標(biāo)鏡像名
. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑
使用docker images 查看創(chuàng)建的鏡像已經(jīng)在列表中存在,鏡像ID為860c279d2fec
runoob@runoob:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob/centos 6.7 860c279d2fec About a minute ago 190.6 MB
runoob/ubuntu v2 70bf1840fd7c 17 hours ago 158.5 MB
ubuntu 14.04 90d5884b1ee0 6 days ago 188 MB
php 5.6 f40e9e0f10c8 10 days ago 444.8 MB
nginx latest 6f8d099c3adc 12 days ago 182.7 MB
mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB
httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB
ubuntu 15.10 4e3b13c8a266 5 weeks ago 136.3 MB
hello-world latest 690ed74de00f 6 months ago 960 B
centos 6.7 d95b5ca17cc3 6 months ago 190.6 MB
training/webapp latest 6fae60ef3446 12 months ago 348.8 MB
我們可以使用新的鏡像來創(chuàng)建容器
runoob@runoob:~$ docker run -t -i runoob/centos:6.7 /bin/bash
[root@41c28d18b5fb /]# id runoob
uid=500(runoob) gid=500(runoob) groups=500(runoob)
從上面看到新鏡像已經(jīng)包含我們創(chuàng)建的用戶runoob
設(shè)置鏡像標(biāo)簽
docker tag 860c279d2fec runoob/centos:dev
docker tag 鏡像ID,這里是 860c279d2fec ,用戶名稱、鏡像源名(repository name)和新的標(biāo)簽名(tag)。
使用 docker images 命令可以看到,ID為860c279d2fec的鏡像多一個標(biāo)簽。
runoob@runoob:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob/centos 6.7 860c279d2fec 5 hours ago 190.6 MB
runoob/centos dev 860c279d2fec 5 hours ago 190.6 MB
runoob/ubuntu v2 70bf1840fd7c 22 hours ago 158.5 MB
ubuntu 14.04 90d5884b1ee0 6 days ago 188 MB
php 5.6 f40e9e0f10c8 10 days ago 444.8 MB
nginx latest 6f8d099c3adc 13 days ago 182.7 MB
mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB
httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB
ubuntu 15.10 4e3b13c8a266 5 weeks ago 136.3 MB
hello-world latest 690ed74de00f 6 months ago 960 B
centos 6.7 d95b5ca17cc3 6 months ago 190.6 MB
training/webapp latest 6fae60ef3446 12 months ago 348.8 MB
關(guān)注我,關(guān)注測試
FROM:https://blog.csdn.net/crisschan