1.docker簡(jiǎn)介:
Docker基于 Google 公司推出的 Go 語(yǔ)言實(shí)現(xiàn)。 項(xiàng)目后來(lái)加入了 Linux 基金會(huì),遵從了 Apache 2.0 協(xié)議,項(xiàng)目代碼在?GitHub?上進(jìn)行維護(hù)。
Docker 自開源后受到廣泛的關(guān)注和討論,以至于 dotCloud 公司后來(lái)都改名為 Docker Inc。Redhat 已經(jīng)在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產(chǎn)品中廣泛應(yīng)用。
Docker 項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案。 Docker 的基礎(chǔ)是 Linux 容器(LXC)等技術(shù)。
? 在 LXC 的基礎(chǔ)上 Docker 進(jìn)行了進(jìn)一步的封裝,讓用戶不需要去關(guān)心容器的管理,使得操作更為簡(jiǎn)便。用戶操作 Docker 的容器就像操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣簡(jiǎn)單。
2.docker命令:
啟動(dòng)docker? ?systemctl start docker
停止docker??systemctl stop docker
重啟docker??systemctl restart docker
查看docker狀態(tài)??systemctl status docker
開機(jī)啟動(dòng)? ?systemctl enable docker
查看docker幫助文檔? docker --help
3.鏡像相關(guān)命令:
REPOSITORY:鏡像名稱? ? ? ? ? TAG:鏡像標(biāo)簽? ? ? ? ? ? ? ? ? ? ?IMAGE ID:鏡像ID
CREATED:鏡像的創(chuàng)建日期(不是獲取該鏡像的日期)? ? ? ? ?SIZE:鏡像大小
這些鏡像都是存儲(chǔ)在Docker宿主機(jī)(現(xiàn)在宿主機(jī)為本機(jī))的/var/lib/docker目錄下
查看鏡像? ? ?docker images
查找鏡像? ? ? docker search? 鏡像名稱
NAME:倉(cāng)庫(kù)名稱? ? ? ? ? ? ? ?DESCRIPTION:鏡像描述
STARS:用戶評(píng)價(jià),反應(yīng)一個(gè)鏡像的受歡迎程度? ? ? ? ?OFFICIAL:是否官方
AUTOMATED:自動(dòng)構(gòu)建,表示該鏡像由Docker Hub自動(dòng)構(gòu)建流程創(chuàng)建的
拉取鏡像? ??docker pull 鏡像名稱
拉取鏡像就是從中央倉(cāng)庫(kù)中下載鏡像到本地??
例如下載centos7鏡像執(zhí)行語(yǔ)句:? ? docker pull centos:7
刪除鏡像? docker? rmi? 鏡像ID
刪除所有鏡像? ??docker? rmi? `docker images -q`
4.容器命令:
查看正在運(yùn)行的容器:? ? docker ps
查看所有容器:? ? docker ps –a
查看最后一次運(yùn)行的容器:? ?docker ps –l
查看停止的容器:? ??docker ps -f status=exited
5.創(chuàng)建與使用容器
創(chuàng)建容器命令:? docker run
-i:表示運(yùn)行容器?
-t:表示容器啟動(dòng)后會(huì)進(jìn)入其命令行。加入這兩個(gè)參數(shù)后,容器創(chuàng)建就能登錄進(jìn)去。即分配一個(gè)偽終端
--name :為創(chuàng)建的容器命名
-v:表示目錄映射關(guān)系(前者是宿主機(jī)目錄,后者是映射到宿主機(jī)上的目錄),可以使用多個(gè)-v做多個(gè)目錄或文件映射。注意:最好做目錄映射,在宿主機(jī)上做修改,然后共享到容器上
-d:在run后面加上-d參數(shù),則會(huì)創(chuàng)建一個(gè)守護(hù)式容器在后臺(tái)運(yùn)行(這樣創(chuàng)建容器后不會(huì)自動(dòng)登錄容器,如果只加-i -t兩個(gè)參數(shù),創(chuàng)建后就會(huì)自動(dòng)進(jìn)去容器)。
-p:表示端口映射,前者是宿主機(jī)端口,后者是容器內(nèi)的映射端口??梢允褂枚鄠€(gè)-p做多個(gè)端口映射
交互方式創(chuàng)建容器:? ?docker run -it? --name=容器名稱? 鏡像名稱:標(biāo)簽?
守護(hù)方式創(chuàng)建容器:? docker? run -di? --name=容器名稱? 鏡像名稱:標(biāo)簽
退出當(dāng)前容器:? exit
登錄守護(hù)式容器方式:? ?docker exec? -it? 容器名稱 (或者容器ID)?
6.停止與啟動(dòng)容器
停止容器? ?docker stop 容器名稱(或者容器ID)
啟動(dòng)容器? ?docker start 容器名稱(或者容器ID)
7.文件拷貝
將文件拷貝到容器中:? ?docker? cp??需要拷貝的文件或目錄? 容器名稱:容器目錄
將文件從容器中拷貝出:? ?docker cp? 容器名稱:容器目錄? 需要拷貝的文件或目錄
8.查看容器IP地址
查看容器運(yùn)行的各種數(shù)據(jù):? docker inspect? 容器名稱(容器ID)
執(zhí)行下面命令直接輸出IP地址:??
docker? inspect? --format='{{.NetworkSettings.IPAddress}}'? ?容器名稱(容器ID)
9.刪除容器
刪除指定容器??docker rm 容器名稱(容器ID)
MySQL部署:
1. 拉取mysql鏡像? ? ? docker pull centos/mysql-57-centos7
2. 創(chuàng)建mysql容器? ? ?docker? run -di? --name=mymysql? -p 3306:3306? -e
MYSQL_ROOT_PASSWORD=123456? centos/mysql-57-centos7
(? 其中-p 代表端口映射? ? ? 格式:? 宿主機(jī)映射端口:容器運(yùn)行端口 )
(? -e? 代表添加環(huán)境變量? ? ?MYSQL_ROOT_PASSWORD 是root用戶的登陸密碼 )
最后遠(yuǎn)程登錄mysql? 連接宿主機(jī)的IP,指定端口為3306
tomcat部署:
1. 拉取tomcat鏡像? ? ? docker pull tomcat:7-jre7
2.創(chuàng)建tomcat容器? ? ? ?docker? run? -di? --name=mytomcat? -p? 9000:8080? -v /usr/local/webapps:/usr/local/tomcat/webapps? ?tomcat:7-jre7
Nginx部署:
1.拉取鏡像? ?docker pull nginx
2.創(chuàng)建nginx容器? ?docker run -di --name=mynginx -p 80:80 nginx
Redis部署:
1.拉取鏡像? docker pull redis
2.創(chuàng)建容器? ? docker run -di --name=myredis -p 6379:6379 redis?
遷移與備份:
將容器保存為鏡像:? ?docker commit mynginx mynginx_i
將鏡像保存為tar:? ?docker save -o mynginx.tar mynginx_i