目录
docker save -o nginx.tar nginx 将docker容器里的镜像导出
docker export -o my_nginx.tar my_nginx 导出正在运行的容器里的文件系统成一个归档文件
docker create -p 7000:80 –name sc-nginx-2 nginx:1.22.0
知识点5:docker inspect + 容器名 查看容器详细信息
怎么查看卷id分别对应哪个容器?示例:使用docker inspect 过滤来查看卷id
在宿主机上面新建文件夹/web,新建index.html文件
将宿主机的/web/index.html文件docker cp到容器里面
docker volume create + 数据卷名 创建一个数据卷
docker inspect nginx-web : 查看卷信息
知识点1:镜像本质就是一个文件
镜像其实就是一个包含了程序代码,基础操作系统,以及程序启动所依赖的软件和库,在容器运行的整体单元
docker save -o nginx.tar nginx 将docker容器里的镜像导出
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7.39 daff57b7d2d1 27 hours ago 430MB nginx latest 2b7d6430f78d 2 days ago 142MB [root@docker ~]# ls anaconda-ks.cfg [root@docker ~]# docker save -o nginx.tar nginx [root@docker ~]# ls anaconda-ks.cfg nginx.tar [root@docker ~]#
########################################################
docker load <nginx.tar 将镜像导入docker
docker export -o my_nginx.tar my_nginx 导出正在运行的容器里的文件系统成一个归档文件
########################################################
知识点2:根据镜像创建容器 docker create
docker create -p 7000:80 –name sc-nginx-2 nginx:1.22.0
启动创建好的容器
所以创建容器使用docker run比较方便
docker run = docker create + docker pull + docker start
########################################################
知识点3:容器有哪些状态?
created(已创建) restarting(重启中) running(运行中) removing(迁移中) paused(暂停) exited(停止) dead(死亡)
########################################################
知识点4:限制cpu和内存使用
–rm 一旦退出容器,容器会自动删除
-m 限制内存 byte
–cpu-shares 2 限制使用cpu计算资源(算力)
–cpus 1 限制使用1个cpu
-it centos:7 :
–cpuset-cpus 0 :限制使用编号为0的cpu
########################################################
知识点5:docker inspect + 容器名 查看容器详细信息
[root@docker scdocker]# docker inspect sc-nginx "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:02", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "ab6c8af427413561c62c317f8fca4a00f2302985659369b7864e525343d587cb", "EndpointID": "31ee662cb4cf61a28da11561e8d822fabf64908f083b980e391a7ef9157af0c9", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null
########################################################
知识点6:微服务
微服务:
微小的服务,尽量将某个功能或者服务独立出来,跑在单独的容器里面
将一个复杂的系统,拆分成很多小的系统,很多小的系统都需要单独开发,然后单独地部署使用,部署到容器里面,独立地对外提供服务,这个小的服务就简称微服务,人力的成本,部署服务器的成本
使用容器的优点:降低成本,省钱
微服务背后就是容器
########################################################
知识点7:IaaS,PaaS,SaaS,BaaS 的概念
Iaas:Infrastructure as a service 基础设施即服务
作用是提供虚拟机或者其他资源作为服务提供给用户,
卖基础设施–卖云服务器 –阿里云,腾讯云,google云等
PaaS:Platform as a service 平台即服务
背后有一个公司搭建好了平台,我们去购买服务就可以了
SaaS:Software as a Service
作用是提供应用作为服务给客户,通过这种模式,用户只要接上网络,
并通过浏览器,就能直接使用在云端上运行的应用,而不需要考虑类似安装琐事
BaaS: BlockChain as a Service
卖区块链服务的。
########################################################
知识点8:多容器之间数据共享问题
容器的数据保存问题 – 数据持久化
正常停止容器,容器里面的数据会丢失吗?
不会丢失,数据会保存到卷里面
示例:连接上容器里的数据库,新建一个表,里面添加内容
########################################################
怎么查看卷id分别对应哪个容器?
示例:使用docker inspect 过滤来查看卷id
[root@docker volumes]# docker inspect sc-mysql-1 | egrep "volumes" "Source": "/var/lib/docker/volumes/71394fb4bfe1cdacd3622a435063ac43f8638c806dcffeca4bdada2a6d1cf953/_data",
docker volume ls : 查看卷id
[root@docker wangsh]# docker volume ls DRIVER VOLUME NAME local 71394fb4bfe1cdacd3622a435063ac43f8638c806dcffeca4bdada2a6d1cf953 local 5774708aa65ec9a5adc2b7ebd32b43e858169bacfd8dd3d8d3f153d5feccd983 local a19c532653e262509d1e0316c60d7a87f0c878c8586cad5cf9c11f731ce50fa4 local ecbbfaa3571c0e62e7436ab4381cbfecf3b5b47a6f8e0d9d3f2ba3f91b2fc57c local ed39f0259834f200157f7ec1a2fd95199173eed1e1ff07bba8ea82f504f7001f local my_wordpress_db_data local my_wordpress_wordpress_data
########################################################
知识点9:容器共享宿主机的文件
使用nginx镜像,运行一个容器
docker run -d -p 8803:80 –name yangyj-nginx nginx
在宿主机上面新建文件夹/web,新建index.html文件
将宿主机的/web/index.html文件docker cp到容器里面
[root@docker web]# docker cp /web/index.html yangyj-nginx:/usr/share/nginx/html
[root@docker web]# cat index.html welcome to yang yong jie's web!!
但是现在我们修改宿主机的文件,容器内部的index文件并不会修改
怎么让容器里的文件共享使用宿主机的文件?
重新启动一个容器使用/web目录,挂载进入容器,避免频繁的cp到容器里面
docker run -d -p 8803:80 –name yangyj-nginx -v /web:/usr/share/nginx/html nginx
-v :指定宿主机的文件夹挂载到容器里面的路径 volume –》文件夹和文件夹之间的映射
########################################################
知识点10:一台机器的多个容器之间共享数据
创建和管理volume 数据卷
docker volume create + 数据卷名 创建一个数据卷
[root@docker web]# docker volume create nginx-web nginx-web [root@docker web]# docker volume ls DRIVER VOLUME NAME local 71394fb4bfe1cdacd3622a435063ac43f8638c806dcffeca4bdada2a6d1cf953 local 5774708aa65ec9a5adc2b7ebd32b43e858169bacfd8dd3d8d3f153d5feccd983 local a19c532653e262509d1e0316c60d7a87f0c878c8586cad5cf9c11f731ce50fa4 local ecbbfaa3571c0e62e7436ab4381cbfecf3b5b47a6f8e0d9d3f2ba3f91b2fc57c local ed39f0259834f200157f7ec1a2fd95199173eed1e1ff07bba8ea82f504f7001f local my_wordpress_db_data local my_wordpress_wordpress_data local nginx-web [root@docker web]# cd /var/lib/docker/volumes/ [root@docker volumes]# ls 5774708aa65ec9a5adc2b7ebd32b43e858169bacfd8dd3d8d3f153d5feccd983 backingFsBlockDev metadata.db nginx-web 71394fb4bfe1cdacd3622a435063ac43f8638c806dcffeca4bdada2a6d1cf953 ecbbfaa3571c0e62e7436ab4381cbfecf3b5b47a6f8e0d9d3f2ba3f91b2fc57c my_wordpress_db_data a19c532653e262509d1e0316c60d7a87f0c878c8586cad5cf9c11f731ce50fa4 ed39f0259834f200157f7ec1a2fd95199173eed1e1ff07bba8ea82f504f7001f my_wordpress_wordpress_data [root@docker volumes]# cd nginx-web/ [root@docker nginx-web]# ls _data [root@docker nginx-web]# cd _data/
docker inspect nginx-web : 查看卷信息
[root@docker _data]# docker inspect nginx-web [ { "CreatedAt": "2022-08-31T21:49:46+08:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/nginx-web/_data", "Name": "nginx-web", "Options": {}, "Scope": "local" } ] [root@docker _data]#
在创建好的数据卷里面新建index.html文件
[root@docker _data]# vim index.html [root@docker _data]# ls index.html [root@docker _data]# cat index.html welcome to sanchunag
新建几个容器,使用nginx-web卷
[root@docker _data]# docker run -d -p 8805:80 --name yangyj-nginx-2 -v nginx-web:/usr/share/nginx/html nginx 0f255c218081b17b1777acdff2a8ef8bffe743aa50f77772f7098b5fa0effaca [root@docker _data]# docker run -d -p 8806:80 --name yangyj-nginx-3 -v nginx-web:/usr/share/nginx/html nginx 5896e0abc9bddc81960cc99926360df4a020f51858c5c7355ea13a0eaad4427e [root@docker _data]# docker run -d -p 8807:80 --name yangyj-nginx-4 -v nginx-web:/usr/share/nginx/html nginx eda9896eb1677bb68747464ea9c422ddfe91ae7d6e69a5a1c8b86063081d9d3f [root@docker _data]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eda9896eb167 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:8807->80/tcp, :::8807->80/tcp yangyj-nginx-4 5896e0abc9bd nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:8806->80/tcp, :::8806->80/tcp yangyj-nginx-3 0f255c218081 nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:8805->80/tcp, :::8805->80/tcp yangyj-nginx-2
访问nginx服务:
当这几个容器使用的一个数据卷发送变化以后,所有容器的数据都会变化
########################################################
原文链接:https://blog.csdn.net/qq_48391148/article/details/126537331?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168994567316782425116482%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168994567316782425116482&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-6-126537331-null-null.268%5Ev1%5Ekoosearch&utm_term=docker%E3%80%81wordpress%E3%80%81wordpress%E5%BB%BA%E7%AB%99%E3%80%81wordpress%E4%B8%BB%E9%A2%98%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81