[TOC]
Docker
docker下載不做闡述
http://www.docker.org.cn/book/install/supported-platform-17.html
docker手冊(cè)
http://www.docker.org.cn/index.html
https://blog.csphere.cn/archives/22
http://www.docker.org.cn/dockerppt/106.html
問(wèn)答帖子:https://blog.lab99.org/post/docker-2016-07-14-faq.html?tdsourcetag=s_pctim_aiomsg
運(yùn)行一下docker
docker [選項(xiàng)] 命令
Dcoker基本指令
名詞提醒
鏡像 images 容器 container 倉(cāng)庫(kù) repository
輸出版本信息
docker --version #或者docker -V
搜索可用的docker鏡像(docker search + 鏡像名字)
docker search tutorial
當(dāng)然你也可以去具體的網(wǎng)址上查看可用鏡像 index.docker.io
下載鏡像(docker pull +鏡像名或者 用戶名/鏡像名)
docker pull learn\tutorial
運(yùn)行容器(docker run [選項(xiàng)] image [命令] ([版本]))
docker run learn/tutorial echo "hello world"
docker run ubuntun:laster apt-get install -y python #在ubuntu容器中下載python
--rm 退出容器時(shí)自動(dòng)刪除這個(gè)容器
-it 交互并保定tty
-d 后臺(tái)運(yùn)行模式
--name 指定容器的名稱(chēng)
-p 指定端口 [主機(jī)端口:容器端口]
-P 暴露所有dockerfile中EXPOSE的端口 #建議使用這個(gè)
-e 指定環(huán)境變量
--link 連接了第一個(gè)容器 在第二個(gè)容器的/etc/hosts 文件下會(huì)有第一個(gè)容器的ip和名稱(chēng)
-v 指定卷
保存對(duì)容器的修改(docker commit [選項(xiàng)] 指定容器 [容器名字[:版本]]
docker commit 394 dd:4
指定容器可以是容器名字也可以是容器id前幾位(只要能分辨是唯一就可以了)
成功輸出內(nèi)容為一串sha256
查看所有正在運(yùn)行中的容器列表(docker ps [選項(xiàng)])
docker ps
-a #顯示所有的容器伤哺,包括未運(yùn)行的
-l #顯示最近創(chuàng)建的容器
-n #顯示最近創(chuàng)建的n個(gè)容器
-q #靜默輸出怒见,只顯示容器編號(hào)
-s #顯示總的大小
查看更詳細(xì)的關(guān)于某一個(gè)容器的信息(docker inspect [選項(xiàng)] 指定容器)
dockers inspect 377
發(fā)布網(wǎng)站(docker push [選項(xiàng)] 容器名字:版本) 這里不可以使用id指定
docker push learn\tutorial:33
停止運(yùn)行的容器(docker stop [選項(xiàng)] 容器)
-t 或者 --time 倒計(jì)時(shí)暫停
刪除已停止的容器(docker rm [選項(xiàng)] 容器)
查看容器的日志 (docker logs [選項(xiàng)] 容器)
進(jìn)入容器內(nèi)部(docker exec [選項(xiàng)] 容器 命令 [版本標(biāo)記](méi))
docker exec -it 037 /bin/bash
進(jìn)入容器內(nèi)部2(docker attach 容器id) #不建議使用
? 但在辜御,使用該命令有一個(gè)問(wèn)題。當(dāng)多個(gè)窗口同時(shí)使用該命令進(jìn)入該容器時(shí),所有的窗口都會(huì)同步顯示。如果有一個(gè)窗口阻塞了,那么其他窗口也無(wú)法再進(jìn)行操作
因?yàn)檫@個(gè)原因印蔗,所以docker attach命令不太適合于生產(chǎn)環(huán)境,平時(shí)自己開(kāi)發(fā)應(yīng)用時(shí)可以使用該命令丑勤。
進(jìn)入容器內(nèi)部3(ssh)
https://www.oschina.net/translate/why-you-dont-need-to-run-sshd-in-docker?cmp
docker build [選項(xiàng)] PATH | URL | -
docker build -t testdocker:v1 -f /home/For_docker/Dockerfile .
-t 標(biāo)記版本標(biāo)簽
-f 指定要使用的dockerfile路徑
常用指令
docker ps #查看運(yùn)行容器
docker ps -a #查看所有容器
docker stop $(docker ps -q) #停止所有容器
docker rm $(docker ps -aq) #刪除所有容器
docker stop (docke ps -q ) & docker rm $(docker ps -aq) #停止所有容器并刪除
使用docker使用wordpress
1.安裝MySQL
docker pull mysql(不寫(xiě)版本號(hào)华嘹,默認(rèn)安裝latest)
2.安裝wordpress
docker pull wordpress
3.運(yùn)行mysql
docker run --name some_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
MYSQL_ROOT_PASSWORD指定了root的密碼
另外如果運(yùn)行了上面的內(nèi)容,但是使用docker ps 發(fā)現(xiàn)沒(méi)有運(yùn)行法竞,但是在docker ps -a發(fā)現(xiàn)了容器的存在時(shí)耙厚,可能時(shí)代碼打錯(cuò)了。
4.運(yùn)行wordpress
docker run --name some_wordpress --link some_mysql:mysql -p 8080:80 -d wordpress
--link 用于連接兩個(gè)容器(A和B) 如果容器B連接了容器A岔霸,那么link會(huì)傳遞容器A的名字和id給容器B
some_mysql 為mysql的容器名 mysql為some_mysql容器在some_wordpress容器中的名字
-p 用戶端口映射 這里將some_wordpress容器內(nèi)部的80端口映射到docker的8080端口
這時(shí)候訪問(wèn) 服務(wù)器ip+docker的8080端口就可以訪問(wèn)wordpress了