docker命令操作及應(yīng)用

一、安裝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

新鏡像名稱

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容