【狂神说Java】Docker最新超详细版教程通俗易懂
山山来迟了:
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
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
appendonly yes
EOF
done
【回复】回复 @萌新学java冲啊 : 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
【回复】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
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
appendonly yes
EOF
done
【回复】回复 @OKmaid_007 :为啥我复制 运行的容器还是自动退出了双级减速机:
狂神真的心软哈哈哈哈哈嘴上说不放了还是放上来了[doge][doge][doge]
【回复】嘴上说不放 吓的我两个晚上一边看一边录屏 身体很诚实嘛
【回复】嘴上说着不要,身体却很诚实[doge]
【回复】行吧,那先三连,以后慢慢看鲁班七号结婚了么:
说实话,我真的想打狂老师,说了不录屏,害的我每天准时录屏,可认真了,结果录屏了,确实喜欢老师刀子嘴豆腐心,嘴里不要,心里很诚实,老师我看你视频打赏你了,虽然少但是是我的心意,拒绝白嫖,从我做起,加油狂老师,永远支持你
【回复】舔的漂亮~ 舔的有水准!人才!
【回复】回复 @顾念余生丶 :高情商西奥菌:
言简意赅,狂神真是给出了如何做一个程序员该有的正确姿态,我是一个有3年多开发年限的开发者,真真确确感受到你说如何去专研和学习的那种态度对于一个编程从业者的重要性,最近我因为git没掌握好,docker还不会,外加没有分布式经验,被深深唾弃,最后自离。可是心有不甘啊,又逢而立之年,想做最后一搏,意外寻得此道,遂来此做下准备。从业期间真是看过很多其他教学网站或个人的视频,肯定是有好有坏的,但是更多的视频都是本着盈利的目的,导致视频冗长,或者有些质量真实太差,导致费时费力,却从中收益甚微。在我进来学习docker期间,对你思路的清晰,言语的流畅,知识的掌握及讲解过程的掌控真是深感佩服。本身我是一个没有受过高等教育的人,对你这种乐于传播知识的理念和作为也是深感敬佩二月春风锵菜刀:
那些口口声声,JAVA越来越难学的人,应该看着你们,像我一样。我看着你们,满怀羡慕。人类研究了几十年的代码调优,所有的Exception和Error,像是专门为你们准备的礼物。Spring繁荣、中间件繁茂、数据库繁华,现代Java的成果被层层打开,可以尽情地享用。自由学习一门框架,学习一种中间件,欣赏一部(培训班)教学视频,去遥远的地方提issue。很多人,从小你们就在自由探索自己的兴趣,很多人在入行就成为了Spring Collaborator,不惑于自己喜欢什么,不喜欢什么。人与人之间的壁垒被打破。你们只凭相同的引入依赖,就能安装千万个相同的Jar包。你们拥有了我们曾经梦寐以求的权利,自由引入Jar包的权利。你所热爱的,就是你的996!你们有幸遇见这样的Java,但是Java更有幸遇见这样的你们。我看着你们,满怀敬意,向你们的专业态度致敬!你们正在把面向过程的变成面向对象的,把一体的变成分布式的,把的单个的变成集群的,把私有的变成开源的。你们把自己的热爱,变成了一个和成千上万的人分享Java写法的事业,向你们的自信致敬!弱小的人,才害怕新的框架和版本。内心强大的人,从不畏惧高可用与高并发。向你们的大气致敬!小白同而不和,大神美美与共,和而不同。更年轻的身体,容得下更多元的代码风格、编程范式和技术栈。有一天我终于发现,不只是我们在教你们如何提高代码效率,你们也在启发我们怎样去更好地摸鱼。那些抱怨一代不如一代的人,应该看看你们,就像我一样。我看着你们,满怀感激。因为你们,这个世界会更喜欢Java。因为一个社区最好看的风景,就是这个社区的伸手党。因为你们,这世上的文档、博客、专栏所表现的程序员就不再是谢顶、猝死、迷茫,而是NullPointerexception、ClassNotFoundException、SQLException、StackOverflowError,是心里有福报,眼里有加班,不用活到我们想象中的寿命。我们这一代人的想象力不足以想象你们null的未来,如果你们依然需要我们的祝福,那么——上线吧,Java!我们在同一个残废的互联网!
【回复】b站猿浪里 有一句 笑死:“把开源的变成自己的,把自己的变成祖传的”
【回复】不是因为穷,谁想干这一行
【回复】回复 @吕凤先 :写代玛的 穷人占绝大多数 没几个家庭条件好的豫西一哥:
port # 查看映射端口对应的容器内部源端口
pause # 暂停容器
ps # 猎户容器列表
pull # 从docker镜像源服务器拉取指定镜像或者库镜像
push # 推送指定镜像或者库镜像至docker源服务器
restart # 重启运行的容器
rm # 移除一个或多个容器
rmi # 移除一个或多个镜像 (无容器使用该镜像才可删除,否则需要删除相关容器才可继续或 -f 强制删除)
run # 创建一个新的容器并运行一个命令
save # 保存一个镜像为一个 tar 包【对应 load】
search # 在 docker hub 中搜索镜像
start # 启动容器
stop # 停止容器
tag # 给源中镜像打标签
top # 查看容器中运行的进程信息
unpause # 取消暂停容器
version # 查看 docker版本号
wait # 截取容器停止时的退出状态值
【回复】正在运行的容器你确定 -f 参数能够删除镜像么?
#sudo docker rmi -f $(sudo docker ps --filter=status=running |sudo sed -n '2p'|awk '{print $2}')
Untagged: nginx:latest
好像只能 Untagged 镜像名称 和 TAG
【回复】回复 @贩羊的猩猩 :用rmi来删容器,你也是牛。rmi是删镜像的。
【回复】回复 @恶非流湿 : docker rm -f 容器id 强制删除容器
docker rmi -f 镜像id 强制删除镜像yu-he:
docker容器内无法联网问题解决,本人centos8
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload
systemctl restart docker
【回复】老哥,我把firewalld打开后,发现docker根本就不能正常启动啊,请问下还有哪里需要设置吗?
【回复】回复 @路飞的草帽扯不掉 :你可以试试,freewall-cmd --add-service=docker太贤:
P30容器外访问出现问题
在容器外虚拟机上输入命令curl localhost:9090后,报错curl: (56) Recv failure: Connection reset by peer
原因:
进入容器内,输入java -version,发现无法获取java版本,看来应该就是这里出错,大概率是环境变量没配好。
检查容器外的Dockerfile文件,发现:ENV JAVA_HOME /usr/local/jdk1.8.0_11,而进入容器后,用ls命令查看到java安装目录为“jdk1.8.0_221”,果然是这里配错了
解决:
容器外编辑Dockerfile文件,改为ENV JAVA_HOME /usr/local/jdk1.8.0_221并保存,停止运行diytomcat并删除容器和镜像,重新安装一遍,即可解决问题
还有老师在一些地方把usr写成了url
【回复】感谢大佬,大佬牛逼,我看你的解决了
【回复】没明白你说的啥意思,这个tomcat目录名字肯定是和你的版本挂钩的啊,又不是随便起的FullHouse':
p13 的命令 1
attach Attach to a running container #当前shell下attach连接指定运行镜像
build Build an image from a Dockerfile #通过Dockerfile定制镜像
commit Create a new image from a container's changes #提交当前容器为新的镜像
cp Copy files/folders from a container to a HOSTDIR or to STDOUT #从容器中拷贝指定文件或者目录到宿主机中
create Create a new container #创建一个新的容器,同run 但不启动容器
diff Inspect changes on a container's filesystem #查看docker容器变化
events Get real time events from the server#从docker服务获取容器实时事件
exec Run a command in a running container#在已存在的容器上运行命令
export Export a container's filesystem as a tar archive #导出容器的内容流作为一个tar归档文件(对应import)
history Show the history of an image #展示一个镜像形成历史
【回复】p13 的命令 3
rename Rename a container #重命名容器
restart Restart a running container #重启运行的容器
rm Remove one or more containers #移除一个或者多个容器
rmi Remove one or more images #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)
run Run a command in a new container #创建一个新的容器并运行一个命令
save Save an image(s) to a tar archive#保存一个镜像为一个tar包(对应load)
search Search the Docker Hub for images #在docker
hub中搜索镜像
start Start one or more stopped containers#启动容器
stats Display a live stream of container(s) resource usage statistics #统计容器使用资源
stop Stop a running container #停止容器
tag Tag an image into a repository #给源中镜像打标签
top Display the running processes of a container #查看容器中运行的进程信息
unpause Unpause all processes within a container #取消暂停容器
version Show the Docker version information#查看容器版本号
wait Block until a container stops, then print its exit code #截取容器停止时的退出状态值
【回复】回复 @FullHouse :好人一炮生八个Jashin丶酱丶:
P28中yum下载出现No URLs in mirrorlist error的原因大致为:
Centos8不再维护,在2022年1月31日,CentOS团队从官方镜像中移除CentOS 8的所有包。
解决方式:dockerfile第一行FROM centos:7。島村絢沙:
最好关掉弹幕,不要为了可能有的一点信息被其他人误导夕阳渔樵:
#通过脚本一次创建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
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
appendonly yes
EOF
# 通过脚本一次启动6个redis容器
docker run -p 637${port}:6379 -p 1637${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
【回复】老哥。我创建的redis容器 开启进入后里面没有配置,是什么原因,没看过redis凱風徐徐:
如果按照狂神视频你的docker中配好的tomcat出不来别慌!
1.去你的服务器开放端口(端口没开连404也出不来)
2.防火墙关没关
解决上面问题全程跟视频!你重新访问就可以看到页面成功跳转了。
【回复】为什么我按照视频搭建nginx
访问的时候报 connection reset by peer呢
和宿主防火墙有关系吗,到底开还是关闭啊
【回复】回复 @ipigzhu86 :解决了吗?我也是这个问题yxy-good:
说好不发的还是发布了 感谢秦老师 三连走起 拒绝盗版[OK]
【回复】狂哥在做录制就知道要往出放[喜极而泣]