一、安裝docker:
? ? 刪除: yum -y remove docker
? ? 安裝:yum -y install docker
? ? 啟動(dòng):systemctl start docker (centos7命令)
? ? 開機(jī)自啟動(dòng):systemctl enable docker
? ?https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
二、Docker鏡像:
? ? 查看已經(jīng)拉取的鏡像:docker images
? ? 搜索鏡像:docker serach xxx
? ? 拉取鏡像:
? ? ? ? ? ? 1.從 docker hub 拉取?
? ? ? ? ? ?Docker Hub 的網(wǎng)址:https://hub.docker.com
? ? ? ? ? ?命令:docker pull centos:7
????????????Docker Hub 是 docker 默認(rèn)的公用 Registry,不過缺點(diǎn)是國(guó)內(nèi)下載會(huì)比較慢
? ? ? ? ? 2.從 ustc 拉?。ńㄗh使用)
? ? ? ? ? ? 在宿主機(jī)器編輯文件(centos7 不支持 vim 命令,但是支持 vi 命令):?
????????????vi /etc/docker/daemon.json ? ? ? ??
????????????請(qǐng)?jiān)谠撆渲梦募屑尤耄]有該文件的話,請(qǐng)先建一個(gè)): ?
????????????{? "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
????????????最后,需要重啟 docker 服務(wù)
????????????systemctl restart docker
????????????之后再使用 pull 命令拉取鏡像,這時(shí)候是從 ustc 獲取鏡像,而且速度杠杠的。?
????????????docker pull centos:7
? ??刪除鏡像:
? ? ????1.刪除指定鏡像 :
????????????docker rmi repository:tag?
????????????docker rmi imageID
? ??? ??2.刪除所有鏡像:
? ??????????docker rmi $(docker images -q)?
三、Docker容器
? ??????創(chuàng)建并運(yùn)行容器
????????創(chuàng)建容器命令:
????????????docker run?
????????創(chuàng)建容器常用的參數(shù)說明:?
????????????? -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è)端口映射
????????以交互方式運(yùn)行容器:?
????????docker run -i -t --name 容器名稱 repository:tag /bin/bash docker run -it --name 容器名稱 imageID /bin/bash
????????以守護(hù)進(jìn)程方式運(yùn)行容器:?
????????docker run -di --name 容器名稱 repository:tag docker run -di --name 容器名稱 imageID
注意 :通過 run創(chuàng)建并進(jìn)入容器之后 ,如果使用 exit命令 退 出 容 器 ,則 容 器 停 止 。
再次進(jìn)入該容器 , 先使用 start啟動(dòng)容器 , 再 使用 exec/attach命令 進(jìn)入容器 。
????????啟動(dòng)容器
????????docker start??容器名稱或者容器 ID
????????進(jìn)入容器
????????????進(jìn)入正在運(yùn)行的容器的命令如下:docker exec -it容器名稱或者容器 ID /bin/bash
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? docker attach容器名稱或者容器 ID
????????????兩者之間的區(qū)別 :attach 進(jìn)入容器之后 , 如果使用 exit退出容器 , 則容器停止 。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?exec進(jìn)入容器之后 , 使用 exit退出容器 , 容器依然處于運(yùn)行狀態(tài) 。
????????查看容器
????????????docker ps :查看正在運(yùn)行的容器?
????????????docker ps -a:查看歷史運(yùn)行過的容器?
????????????docker ps -l:查看最近運(yùn)行過的容器
????????停止容器
????????????docker stop容器名稱或者容器 ID
????????刪除容器
????????????刪除指定容器:
????????????????docker rm 容器名稱或者容器 ID
????????????刪除所有容器:?
????????????????docker rm ‘docker ps -a -q’?
? ? ? ? ? ? ? ? docker rm $(docker ps -a -q)
????????復(fù)制文件
????????????docker cp 源文件 目標(biāo)文件
????????????比如 :docker cp /root/boot.war? my-centos:/usr/local/
????????????說明 :/root/boot.war是宿主機(jī)器的路徑
????????????????????????my-centos是容器的名稱
????????????????????????/usr/local/ 是容器內(nèi)的路徑
????????????注意:源文件可以是宿主機(jī)器也可以是容器中的文件,同樣,目標(biāo)文件可以是容 器也可以是宿主機(jī)器的文? ? ? ? ? ????????????????件。
四、Docker 應(yīng)用?
????MySQL 部署
????????5.1.1 拉取 MySQL 鏡像
????????????docker pull mysql:5.6
????????????查看鏡像 docker images
????????5.1.2 創(chuàng)建 MySQL 容器
????????????docker run -di --name kkb_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6?
? ? ? ? ? ? ?docker run -di --name mysql57 -p 3333:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
????????????-p 代表端口映射,格式為? 宿主機(jī)映射端口:容器運(yùn)行端口 -e 代表添加環(huán)境變量? ? ? ? ? ? ? ? ? ? ? ????????????MYSQL_ROOT_PASSWORD 是 root 用戶的登陸密碼
? ? ? ? ? ? 外掛數(shù)據(jù)和配置文件
????????????docker run --name mysql5.7 -p 33333306 -v/data/MySQL/datadir:/var/lib/mysql -v ????????????/data/MySQL/conf.d:/etc/mysql/conf.d -eMYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
????????5.1.3 進(jìn)入 MySQL 容器,登陸 MySQL?
????????????進(jìn)入 mysql 容器 docker exec -it kkb_mysql /bin/bash 登陸 mysql mysql -u root -p
????????5.1.4 遠(yuǎn)程登陸 MySQL
????????5.1.5 查看容器 IP 地址
????????????我們可以通過以下命令查看容器運(yùn)行的各種數(shù)據(jù) docker inspect kkb_mysql 運(yùn)行效果如下:
????????????我們可以看到我們的數(shù)據(jù)庫(kù)服務(wù)器的 IP 是 172.17.0.2?
? ??tomcat 部署
5.2.1 拉取 tomcat 鏡像
docker pull tomcat:7-jre7
5.2.2 創(chuàng)建 tomcat 容器
創(chuàng)建容器 -p 表示地址映射 docker run -di --name=kkb_tomcat -p 9000:8080 tomcat:7-jre7
Nginx 部署
5.3.1 拉取 Nginx 鏡像
docker pull nginx
5.3.2 創(chuàng)建 Nginx 容器
docker run -di --name=kkb_nginx -p 9080:80? nginx /bin/bash
/usr/sbin/nginx
5.3.3 測(cè)試 Nginx
瀏覽器地址欄輸入: http://192.168.247.135?
Redis 部署
5.4.1 拉取 Redis 鏡像
docker pull redis
5.4.2 創(chuàng)建 Redis 容器
docker run -di --name=kkb_redis -p 16379:6379 redis
連接
docker exec -it redis16379 redis-cli
5.4.3 客戶端測(cè)試
在你的本地電腦命令提示符下,用 window 版本 redis 測(cè)試 redis-cli -h 192.168.247.135
搭建 Tomcat 服務(wù)并部署 web 應(yīng)用
docker run -di --name my-tomcat -v /root/webapps: /usr/local/tomcat/webapps -p 8888:8080 imageID
docker run -ti --name my-tomcat -v /opt/webapps:/opt/tomcat/webapps -p 8888:8080 imageID /bin/bash
容器內(nèi)的 tomcat
目錄 : /usr/local/tomcat/webapps
docker run -di --name my-tomcat -v /kkb/webapps:/usr/local/tomcat/webapps -p 8888:8080 --privileged=true tomcat:7-jre7
說明:
--name : 該參數(shù)的作用是給容器起一個(gè)名字 , 名字要唯一 。
-v :該 參 數(shù) 的 作 用 是 進(jìn) 行 目 錄 映 射 ,具 體 指 的 是 宿 主 機(jī) 器 和 容 器 之 間 的 目 錄 映 射 。
/opt/webapps : 宿主機(jī)器的目錄
/opt/tomcat/webapps : 容器中的目錄
-p :該參數(shù)的作用是進(jìn)行端口映射 ,具體指的是宿主機(jī)器和容器之間的端口映射 。
8888 端口是宿主機(jī)的 端口
8080
端口是容器內(nèi)的端口
1、將 war 包上傳到宿主機(jī)器的/opt/webapps/目錄下。 2、tomat 會(huì)自動(dòng)熱部署,直接訪問 web 應(yīng)用的路徑即可。
6 制作鏡像
純手工制作鏡像
需求:制作一個(gè) tomcat 鏡像。
步驟: 1、下載基礎(chǔ)鏡像(centos7)? docker pull centos:7
2、安裝 64 位 jdk(注意:jdk 要和 os 的位數(shù)一致)
vi /etc/profile
export JAVA_HOME=/opt/jdk export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
3、安裝 tomcat
略
4、生成新的鏡像
docker commit
容器名稱 或者容器 ID
新鏡像名稱