docker学习记录

docker ps -a

查看容器的运行日志

docker logs -tf --tail 10 容器id

查看容器内进程信息

docker top 容器id

查看容器内元数据

docker inspect 容器id

我们的容器运行一般都是运行在后台的,所以,当我们需要进入容器内修改容器需要以下命令

1、第一种

docker exec -it 容器id bashshell

-it表示已交互的模式进入到容器内

2、

docker attach 容器id

从容器内拷贝文件到主机

docker cp 容器id:容器内路径 目的地主机路径

当出现容器名已经被使用时,如下如在这里插入图片描述

我们需要使用命令,查出当前容器名的容器id

docker ps -a|grep portainer_agent

通过容器id,删除该容器。

docker rm 容器id

commit镜像


docker commit 提交容器成为一个新的副本

docker commit -m =“提交的描述信息” -a=“作者” 容器id 目标镜像名:【TAG】(tag版本信息,选填)

docker数据卷技术


#docker run -it -v 主机目录:容器内目录 镜像名 /bin/bash

docker run -it -v /home/ceshi:/home centos /bin/bash

使用docker容器快速启动mysql,并且使用数据卷技术实现文件映射,文件保存在本地。

docker run -d --name mysql01 -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=13456979826a mysql:5.7

在使用数据卷volumed的时候如果没有指定本地的映射目录。默认会存在/var/lib/docker/volumes目录下,当前目录下会有多个数据卷。

数据卷容器的使用


  1. 首先应该启动一个容器docker01

docker run -it --name docker01 镜像id

  1. docker02启动

docker run -it --name docker02 --volumes-from docker01(父容器) 镜像id

通过以上,docker01容器内的文件,会同步到docker02

  • 当有docker03使用命令--volumes-from docker01的时候,docker03也会与docker01文件数据保持同步。

只要有一个容器在使用文件。其他容器停止的话,文件也是不受影响的

容器间的数据共享


通过以上,我们知道了通过数据卷容器之间的文件数据是可以互通的。

当我们想使用mysql共享数据时,我们只需要使用数据卷,将文件共享。。当有多个mysql启动,我们都使用--volumes-from (继承)到我们需要同步文件的容器

docker run -d --name mysql01 -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=13456979826a mysql:5.7

以上命令表示将/etc/mysql/conf.d/var/lib/mysql两个文件或文件夹通过数据卷共享出去。当有其他的mysql启动,使用--volume-from mysql:5.7,便可以与mysql01共享数据

docker run -d --name mysql02 -p 3310:3306 --volumes-from mysql01 -e MYSQL_ROOT_PASSWORD=13456979826a mysql:5.7

这样mysql01与mysql02便可以数据共享

使用docker自定义创建一条网络


#docker network create 网络模式 IP地址/子网掩码 网关地址

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1

当使用了我们自定义的网络运行了几个容器时。我们就可以通过容器名或者ip地址相互之间ping通。

如果使用的默认的网络模式。我们只能通过ip地址才能相互ping通。

如果容器重启,IP地址更换。便无法通过ip地址进行容器之间连接。我们需要使用--link命令进行容器之间的关联。双方容器需要互相关联。才能互相访问

当不同网络下的容器需要进行连接网络时。我们可以使用connect命令让不同网络下的容器进行关联

  • 实例:

#通过网络连接到容器

docker network connect 网络名 容器名

使用docker容器搭建一个redis集群


1、创建一个redis的专有网络

docker network create redis --subnet 172.38.0.0/16

2、使用shell命令创建6个redis的配置文件

for port in $(seq 1 6); \

do \

mkdir -p /mydata/redis/node-${port}/conf;

touch /mydata/redis/node-${port}/conf/redis.conf

cat << EOF >/mydata/redis/node-${port}/conf/redis.conf

port 6379

bind 0.0.0.0

daemonize no

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

cluster-announce-ip 172.38.0.1${port}

cluster-announce-port 6379

cluster-announce-bus-port 16379

appendonle yes

EOF

done

3.1、通过for循环一次启动六个容器

for port in $(seq 1 6); \

do \

docker run -p 637 p o r t : 6379 − p 1637 {port}:6379 -p 1637 port:6379p1637{port}:16379 --name redis-${port} \

-v /mydata/redis/node-${port}/data:/data \

-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

done

3.2、依次启动六个容器

docker run -p 6371:6379 -p 16371:16379 --name redis-1 \

-v /mydata/redis/node-1/data:/data \

-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6372:6379 -p 16372:16379 --name redis-2 \

-v /mydata/redis/node-2/data:/data \

-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6373:6379 -p 16373:16379 --name redis-3 \

-v /mydata/redis/node-3/data:/data \

-v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6374:6379 -p 16374:16379 --name redis-4 \

-v /mydata/redis/node-4/data:/data \

-v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6375:6379 -p 16375:16379 --name redis-5 \

-v /mydata/redis/node-5/data:/data \

-v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6376:6379 -p 16376:16379 --name redis-6 \

-v /mydata/redis/node-6/data:/data \

-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

部分内容截图:


《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

[外链图片转存中…(img-vGcrlJO9-1713824994450)]

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

[外链图片转存中…(img-97ucEGmv-1713824994450)]

部分内容截图:

[外链图片转存中…(img-fwwIWWm0-1713824994451)]

[外链图片转存中…(img-auQq7bsQ-1713824994451)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值