大家好,今天给各位分享idbd-446的一些知识,其中也会对docker基础进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
1.概述
(1)docker官网:https://www.docker.com/
仓库地址https://hub.docker.com/
2.安装docker
(1)检查是否有已经安装docker,安装yum工具
[root@localhost~]#rpm-qa|grepdocker
[root@localhost~]#yuminstall-yyum-utils
设置镜像仓库
[root@localhost~]#yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yummakecachefast
安装docker
yuminstalldocker-cedocker-ce-clicontainerd.io
启动docker
systemctlstartdocker
查看版本
dockerversion
(2)启动一个容器
[root@localhostyum.repos.d]#dockerrunhello-world
Unabletofindimage'hello-world:latest'locally
latest:Pullingfromlibrary/hello-world
2db29710123e:Pullcomplete
Digest:sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685
Status:Downloadednewerimageforhello-world:latest
HellofromDocker!
Thismessageshowsthatyourinstallationappearstobeworkingcorrectly.
(3)查看下载的镜像
[root@localhostyum.repos.d]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
hello-worldlatestfeb5d9fea6a52monthsago13.3kB
2.镜像加速
[root@localhostdocker]#sudotee/etc/docker/daemon.json<<-'EOF'
>{
>"registry-mirrors":["https://4q9hlak8.mirror.aliyuncs.com"]
>}
>EOF
[root@localhostdocker]#systemctldaemon-reload
[root@localhostdocker]#systemctlrestartdocker
3.docker常用命令
a.查看镜像
[root@localhost~]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
hello-worldlatestfeb5d9fea6a52monthsago13.3kB
搜索镜像
[root@localhost~]#dockersearchredis
NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
redisRedisisanopensourcekey-valuestorethat…10277[OK]
sameersbn/redis83[OK]
grokzen/redis-clusterRediscluster3.0,3.2,4.0,5.0,6.0,6.280
rediscommander/redis-commanderAlpineimageforredis-commander-Redisman…71[OK]
拉取最新版本镜像
[root@localhost~]#dockerpullmysql
拉取指定版本镜像
[root@localhost~]#dockerpullmysql:5.7
删除镜像
[root@localhost~]#dockerrmi-fcentos
交互式进入容器,退出容器容器就关闭了
[root@localhost~]#dockerrun-itcentos
[root@43670455796f/]#
查看启动的容器
[root@localhost~]#dockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
a18a8feedaf3centos"/bin/bash"6secondsagoUp4secondsreverent_kare
查看所有容器,正在启动的和已经停止的
[root@localhost~]#dockerps-a
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
a18a8feedaf3centos"/bin/bash"AboutaminuteagoUpAboutaminutereverent_kare
43670455796fcentos"/bin/bash"2minutesagoExited(0)2minutesagoyouthful_golick
52c44c3034c5centos"/bin/bash"3minutesagoExited(0)3minutesagopeaceful_kapitsa
922c02bc7641centos"/bin/bash"3minutesagoExited(0)3minutesagozealous_almeida
224b540aaa7emysql"docker-entrypoint.s…"5minutesagoExited(1)5minutesagofocused_cray
4a1b9abf49cdhello-world"/hello"AboutanhouragoExited(0)Aboutanhouragoheuristic_shamir
查看所有容器的编号
[root@localhost~]#dockerps-aq
a18a8feedaf3
43670455796f
52c44c3034c5
922c02bc7641
224b540aaa7e
4a1b9abf49cd
删除容器,只能删除未启动的容器
[root@localhost~]#dockerrm52c44c3034c5
52c44c3034c5
启动停止的容器
[root@localhost~]#dockerstart43670455796f
43670455796f
启动centos的一个容器
[root@localhost~]#dockerrun-dcentos/bin/bash
81816f5d03cfb88dac21efc220f0a1ce29fccc43d6b2a06896903daa0bac7f31
查看没有正在运行的容器
[root@localhost~]#dockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
启动容器后,执行一个运行的命令,才能使容器正常运行
[root@localhost~]#dockerrun-dcentos/bin/bash-c"whiletrue;doechokuangshen;sleep1;done"
5fcb0b52b14cbf3305c0c7ccdb3374f20739a4a2d484064d92a37ed2d77a95d9
[root@localhost~]#
查看容器中进程信息
[root@localhost~]#dockertop5fcb0b52b14c
查看镜像的元数据
[root@localhost~]#dockerinspect5fcb0b52b14c
进入容器
[root@localhost~]#dockerexec-it5fcb0b52b14c/bin/bash
[root@5fcb0b52b14c/]#
从容器拷贝文件到宿主机
[root@localhost~]#dockercp5fcb0b52b14c:/test.txt/root/
通过当前容器生成一个镜像
[root@localhost~]#dockercommit-m="wodejingixang"-a='zss'5fcb0b52b14ccentos:zss11
sha256:3694e132e30f118a410f46b3163234c2d7b5d87c1a3d083cc1772a6ee3bf8b89
4.数据卷
(1)通过命令直接挂载,主机数据和容器数据互相同步
[root@localhost~]#dockerrun-it-v/home/ceshi:/homecentos/bin/bash
[if!supportLists](2)[endif]启动一个mysql容器
[root@localhost~]#dockerrun-d-p3310:3306-v/home/mysql/conf:/etc/mysql/conf.d-v/home/mysql/data/:/bar/lib/mysql-eMYSQL_ROOT_PASSWORD=123456--namemysql01mysql:5.7
6a3fa55aa813af0d12f351d68e947a467033df258c768884912730726256be5f
(3)匿名挂载,只指定容器的目录
[root@localhost~]#dockerrun-d-P--namenginx01-v/etc/nginxnginx
[root@localhost~]#dockervolumels
DRIVERVOLUMENAME
local7941953ceadc743eaa237b990d46ae56e2a14aceaa15b5d477c2010f1864ccf5
locald5ca6059960b989fa290db3e51119e1caf876991390dff6b34f9457958224e57
locale947d3c189dd8236845233c3b42786298f82490327c2b2df39a7e0993d47d2aa
localf29dc23e945fd06d50860642a7dfaf89f94a67763fe861b469ecda9b7f9c0f58
[if!supportLists](3)[endif]具名挂载,给容器内挂在的卷一个名字
[root@localhost_data]#dockerrun-d-P--namenginx02-vjuming-nginx:/etc/nginxnginx
5e711594038da1350611573fc809d92fbc55b170b432e99d9e7a7ab3276dced5
[root@localhost_data]#dockervolumels
DRIVERVOLUMENAME
local7941953ceadc743eaa237b990d46ae56e2a14aceaa15b5d477c2010f1864ccf5
locald5ca6059960b989fa290db3e51119e1caf876991390dff6b34f9457958224e57
locale947d3c189dd8236845233c3b42786298f82490327c2b2df39a7e0993d47d2aa
localf29dc23e945fd06d50860642a7dfaf89f94a67763fe861b469ecda9b7f9c0f58
localjuming-nginx
(4)设置容器内目录,在容器内只读,只能在宿主机内可以读写
[root@localhost/]#dockerrun-d-P--namenginx03-vjuming-nginx03:/etc/nginx:ronginx
4362e22a069e21cb262f1a40b97b16d196d98c9afc48bbef1783bb67a83f334d
5.dockerfile
(1)创建一个镜像
a.创建dockerfile文件
[root@localhostdocker]#catdockerfile
FROMcentos
VOLUME["volume01","volume02"]
CMDecho"----end---"
CMD/bin/bash
b.创建镜像
[root@localhostdocker]#dockerbuild-f/docker/dockerfile-tkuangshen/centos:1.0.
SendingbuildcontexttoDockerdaemon2.048kB
Step1/4:FROMcentos
--->5d0da3dc9764
Step2/4:VOLUME["volume01","volume02"]
--->Runningin112f3903cfc0
Removingintermediatecontainer112f3903cfc0
--->6eef3fbff990
Step3/4:CMDecho"----end---"
--->Runningindb09822d0987
Removingintermediatecontainerdb09822d0987
--->b8f7c584c041
Step4/4:CMD/bin/bash
--->Runningin127aedae2c89
Removingintermediatecontainer127aedae2c89
--->785db3faa532
Successfullybuilt785db3faa532
Successfullytaggedkuangshen/centos:1.0
c.查看镜像
[root@localhost~]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
kuangshen/centos1.0785db3faa5325minutesago231MB
centos3.0785db3faa5325minutesago231MB
centoszss113694e132e30f47minutesago231MB
tomcatlatest24207ccc9cce6daysago680MB
[if!supportLists](2)[endif]再通过dockerfile构建一个镜像
[if!supportLists]a.[endif]dockerfile如下
[root@localhostdocker]#catdockerfile1
FROMcentos
MAINTAINERkuangshen<11212.qq.com>
#ENVMYPATN/usr/local
#WORKDIR$MYPATH
RUNyum-yinstallvim
RUNyum-yinstallnet-tools
EXPOSE80
#CMDecho$MYPATH
CMDecho"--end----"
CMD/bin/bash
b.执行创建命令
[root@localhostdocker]#dockerbuild-fdockerfile1-tcentoszss5:2.0.
Step7/7:CMD/bin/bash
--->Runningin14b36d913ea3
Removingintermediatecontainer14b36d913ea3
--->c1be04b32731
Successfullybuiltc1be04b32731
Successfullytaggedcentoszss5:2.0
c.查看镜像
[root@localhostdocker]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
centoszss52.0c1be04b327314minutesago322MB
d.使用自己生成的镜像启动容器,已经有vim命令
[root@localhostdocker]#dockerrun-itcentoszss5:2.0
[root@5a97a37b6b22/]#vi
viviewvigrvimvimdiffvimtutorvipw
e.使用原始镜像启动容器,没有vim命令
[root@localhost~]#dockerrun-itcentos
[root@6f4a04ee0613/]#vim
bash:vim:commandnotfound
f.查看镜像变更过程
[root@localhostdocker]#dockerhistorycentoszss5:2.0
IMAGECREATEDCREATEDBYSIZECOMMENT
c1be04b327319minutesago/bin/sh-c#(nop)CMD["/bin/sh""-c""/bin…0B
9cacb36695f39minutesago/bin/sh-c#(nop)CMD["/bin/sh""-c""echo…0B
a423666676d89minutesago/bin/sh-c#(nop)EXPOSE800B
1a2ef029a9979minutesago/bin/sh-cyum-yinstallnet-tools27MB
18030e0693039minutesago/bin/sh-cyum-yinstallvim64.1MB
fc1a1ff71c1312minutesago/bin/sh-c#(nop)MAINTAINERkuangshen<1121…0B
5d0da3dc97643monthsago/bin/sh-c#(nop)CMD["/bin/bash"]0B
<missing>3monthsago/bin/sh-c#(nop)LABELorg.label-schema.sc…0B
<missing>3monthsago/bin/sh-c#(nop)ADDfile:805cb5e15fb6e0bb0…231MB
(3)生成一个tomcat镜像
a.dockerfile如下
[root@localhostdocker]#cattomcatdockerfile
FROMcentos
MAINTAINERkuangshen<11212.qq.com>
ADDjdk-8u311-linux-x64.tar.gz/usr/local/
ADDapache-tomcat-9.0.22.tar.gz/usr/local/
RUNyum-yinstallvim
ENVMYPATH/usr/local/
WORKDIR$MYPATH
ENVJAVA_HOME/usr/local/jdk1.8.0_311
ENVCLASSPATH$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENVCATALINA_HOME/usr/local/apache-tomcat-9.0.22
ENVCATALINA_BASH/usr/local/apache-tomcat-9.0.22
ENVPATH$PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
CMD/usr/local/apache-tomcat-9.0.22/bin/startup.sh
CMDtail-f/var/log/btmp
[if!supportLists]b.[endif]创建镜像
[root@localhostdocker]#dockerbuild-ftomcatdockerfile-ttomcatzss:3.0.
Removingintermediatecontaineredb56713f6ee
--->d0278c8b43e2
Successfullybuiltd0278c8b43e2
Successfullytaggedtomcatzss:3.0
c.查看镜像
[root@localhostdocker]#dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
tomcatzss3.0d0278c8b43e27secondsago676MB
d.运行容器
[root@localhostdocker]#dockerrun-it-dtomcatzss:3.0
6.数据卷容器
创建2个容器实现数据卷共享
[root@localhostdocker]#dockerrun-d-p3320:3306-v/etc/mysql/conf.d-v/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456--namemysql02mysql:5.7
0fbdab503dbdb1656275b43f001fe4968b3d02607a80360808b1f0f3587150de
[root@localhostdocker]#dockerrun-d-p3330:3306-eMYSQL_ROOT_PASSWORD=123456--namemysql04--volumes-frommysql02mysql:5.7
fdf04c4f44a69737144fc65c116f5305233b3adbbf21ffd446a153527bd54dd1
7.镜像仓库中所有镜像版本查看
参考链接:https://www.cnblogs.com/qa-freeroad/p/14450386.html
https://www.cnblogs.com/qa-freeroad/p/13563013.html
(1)安装python3.6
yuminstallpython36-y
yuminstallpython36-devel-y
python3-V
(2)安装pip
yuminstallpython36-pip-y
pip3-V
(3)命令行查看镜像仓库中某个镜像都有哪些版本
curlhttps://registry.hub.docker.com/v1/repositories/${docker_img}/tags|python3-mjson.tool|more
8.容器内安装命令
aptupdate
aptinstall-yiproute2
aptinstalliputils-ping
9.网络相关命令
(1)link,一个容器可以ping另一个容器的name
(2)实操link
a.[root@localhost~]#dockerexec-ittomcat4pingtocmcat3
ping:tocmcat3:Nameorservicenotknown
[root@localhost~]#dockerrun-d-P--nametomcat5--linktomcat4tomcatzss:1.0
c82b18cdf4237336345956227419e0818a9cfb10a8ce2b8f92220d104df8b785
[root@localhost~]#dockerexec-ittomcat5pingtomcat4
PINGtomcat4(172.17.0.5)56(84)bytesofdata.
64bytesfromtomcat4(172.17.0.5):icmp_seq=1ttl=64time=0.505ms
b.link的本质,在hosts中增加了解析
[root@localhost~]#dockerexec-ittomcat5cat/etc/hosts
127.0.0.1localhost
::1localhostip6-localhostip6-loopback
fe00::0ip6-localnet
ff00::0ip6-mcastprefix
ff02::1ip6-allnodes
ff02::2ip6-allrouters
172.17.0.5tomcat49a356af00866
172.17.0.6c82b18cdf423
c.查看当前网络
[root@localhost~]#dockernetworkls
NETWORKIDNAMEDRIVERSCOPE
02e562a54700bridgebridgelocal
752264caac7ahosthostlocal
7fc4b2a46f7cnonenulllocal
d.创建一个自定义网络
[root@localhost~]#dockernetworkcreate--driverbridge--subnet192.168.0.0/16--gateway192.168.0.1mynet
e5e23ceec16d7aea3d3053c4a5aa992791f6d8bd3d7aa9e66b181931feabef29
[root@localhost~]#dockernetworkls
NETWORKIDNAMEDRIVERSCOPE
02e562a54700bridgebridgelocal
752264caac7ahosthostlocal
e5e23ceec16dmynetbridgelocal
7fc4b2a46f7cnonenulllocal
c.通过自定义网络创建容器
[root@localhost~]#dockerrun-d-P--nametomcat--mynet--netmynettomcatzss:1.0
2bb33a4f838f8819cfac3e5dd2a1f52dd119a143d4bbbbeb05e23b815822eed4
[root@localhost~]#dockerrun-d-P--nametomcat--mynet1--netmynettomcatzss:1.0
e6dfeb9e95af43dd17a55af3d550ab88a05de08b66b52bf687da206901cdc8ba
[root@localhost~]#dockerexec-ite6dfeb9e95afpingtomcat--mynet
PINGtomcat--mynet(192.168.0.2)56(84)bytesofdata.
64bytesfromtomcat--mynet.mynet(192.168.0.2):icmp_seq=1ttl=64time=0.275ms
d.网络联通(将A网络的容器加入到B网络)
[root@localhost~]#dockernetworkconnectmynettomcat01
10.redis集群部署实战
a.写一个脚本,准备6个docker挂载的目录
[root@localhostdocker]#catredis.sh
#/bin/bash
forportin$(seq16)
do
mkdir-p/mydata/redis/node-${port}/conf
touch/mydata/redis/node-${port}/conf/redis.conf
cat>/mydata/redis/node-${port}/conf/redis.conf<<EOF
port6379
bind0.0.0.0
cluster-enabledyes
cluster-config-filenodes.conf
cluster-node-timeout5000
cluster-announce-ip172.38.0.1${port}
cluster-announce-port6379
appendonlyyes
EOF
done
b.准备容器创建脚本
[root@localhostdocker]#catredis-rongqi.sh
#/bin/bash
forportin$(seq16)
do
dockerrun-p637${port}-p1637${port}:16379--nameredis-${port}-v/mydata/redis/node-${port}/data:/data-v/mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf-d--netredis--ip172.38.0.1${port}redis:5.0.9-alpine3.11redis-server/etc/redis/redis.conf
done
c.进入redis容器,创建集群
/data#redis-cli--clustercreate172.38.0.11:6379172.38.0.12:6379172.38.0.13:6379172.38.0.14:6379172.38
.0.15:6379172.38.0.16:6379--cluster-replicas1
>>>Performinghashslotsallocationon6nodes...
Master[0]->Slots0-5460
Master[1]->Slots5461-10922
Master[2]->Slots10923-16383
Addingreplica172.38.0.15:6379to172.38.0.11:6379
Addingreplica172.38.0.16:6379to172.38.0.12:6379
Addingreplica172.38.0.14:6379to172.38.0.13:6379
M:9d7456de5d339019f61a871f117fa527f6d7ddd2172.38.0.11:6379
slots:[0-5460](5461slots)master
M:1902a1a872a462847e80152b8a28df57f92108a3172.38.0.12:6379
slots:[5461-10922](5462slots)master
M:48fbf97aaa206f7e6c71a10918891ea8be96cf35172.38.0.13:6379
slots:[10923-16383](5461slots)master
S:f5fc035a60177085dd6d878811f0ec71557321bd172.38.0.14:6379
replicates48fbf97aaa206f7e6c71a10918891ea8be96cf35
S:b1523ddce48fdbdc93299f9b626032805f748cb5172.38.0.15:6379
replicates9d7456de5d339019f61a871f117fa527f6d7ddd2
S:e04a1d1a2219d0cac0f21abb2db7a05bd9457117172.38.0.16:6379
replicates1902a1a872a462847e80152b8a28df57f92108a3
CanIsettheaboveconfiguration?(type'yes'toaccept):yes
>>>Nodesconfigurationupdated
>>>Assignadifferentconfigepochtoeachnode
>>>SendingCLUSTERMEETmessagestojointhecluster
Waitingfortheclustertojoin
....
>>>PerformingClusterCheck(usingnode172.38.0.11:6379)
M:9d7456de5d339019f61a871f117fa527f6d7ddd2172.38.0.11:6379
slots:[0-5460](5461slots)master
1additionalreplica(s)
S:e04a1d1a2219d0cac0f21abb2db7a05bd9457117172.38.0.16:6379
slots:(0slots)slave
replicates1902a1a872a462847e80152b8a28df57f92108a3
S:b1523ddce48fdbdc93299f9b626032805f748cb5172.38.0.15:6379
slots:(0slots)slave
replicates9d7456de5d339019f61a871f117fa527f6d7ddd2
S:f5fc035a60177085dd6d878811f0ec71557321bd172.38.0.14:6379
slots:(0slots)slave
replicates48fbf97aaa206f7e6c71a10918891ea8be96cf35
M:48fbf97aaa206f7e6c71a10918891ea8be96cf35172.38.0.13:6379
slots:[10923-16383](5461slots)master
1additionalreplica(s)
M:1902a1a872a462847e80152b8a28df57f92108a3172.38.0.12:6379
slots:[5461-10922](5462slots)master
1additionalreplica(s)
[OK]Allnodesagreeaboutslotsconfiguration.
>>>Checkforopenslots...
>>>Checkslotscoverage...
[OK]All16384slotscovered.
d.查看集群信息
127.0.0.1:6379>CLUSTERinfo
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:2
cluster_stats_messages_ping_sent:195
cluster_stats_messages_pong_sent:203
cluster_stats_messages_meet_sent:4
cluster_stats_messages_sent:402
cluster_stats_messages_ping_received:201
cluster_stats_messages_pong_received:199
cluster_stats_messages_meet_received:2
cluster_stats_messages_received:402
127.0.0.1:6379>CLUSTERNODES
f5fc035a60177085dd6d878811f0ec71557321bd172.38.0.14:6379@16379slave48fbf97aaa206f7e6c71a10918891ea8be96cf35016397232746174connected
b1523ddce48fdbdc93299f9b626032805f748cb5172.38.0.15:6379@16379slave9d7456de5d339019f61a871f117fa527f6d7ddd2016397232726145connected
e04a1d1a2219d0cac0f21abb2db7a05bd9457117172.38.0.16:6379@16379myself,slave1902a1a872a462847e80152b8a28df57f92108a3016397232730006connected
48fbf97aaa206f7e6c71a10918891ea8be96cf35172.38.0.13:6379@16379master-016397232736153connected10923-16383
9d7456de5d339019f61a871f117fa527f6d7ddd2172.38.0.11:6379@16379master-016397232740001connected0-5460
1902a1a872a462847e80152b8a28df57f92108a3172.38.0.12:6379@16379master-016397232725132connected5461-10922
关于idbd-446和docker基础的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。