ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker

2021-11-02 10:02:16  阅读:148  来源: 互联网

标签:容器 centos local redis Docker root docker


Docker

docker 的安装


#安装yum的工具
yum install -y yum-utils
#添加阿里云docker镜像地址
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache
#安装docker
yum install --allowerasing docker-ce docker-ce-cli containerd.io         #不要用yum install docker-ce docker-ce-cli containerd.io安装,centos8内置了podman容器会冲突(是一个跟docker差不多的容器,因为centos8放弃了对docker的支持,代替方案就是podman)--allowerasing命令用于将要安装的包替代冲突的包
#启动docker
systemctl start docker
#开机自启
systemctl enable docker



docker启动mysql


# --name指定容器名字 -v目录挂载 -p指定端口映射  -e设置mysql参数 -d后台运行
docker run --name mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql:/etc/mysql -v /usr/local/mysql/log:/var/log/mysql  -e MYSQL_ROOT_PASSWORD=lhc010516  -p 3306:3306 -d mysql:8.0.27
#进入docker里面mysql的目录
docker exec -it mysql /bin/bash

docker 启动 redis服务运行容器


# 启动redis服务运行容器
docker run --name redis  -v /usr/local/redis/data:/data  -v /usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis:latest  redis-server /usr/local/etc/redis/redis.conf

docker启动nginx

docker run --privileged=true -d --name nginx -p 8080:80 -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/logs:/var/log/nginx -v /usr/local/nginx/html:/usr/share/nginx/html nginx

删除镜像

docker rmi -f (image id)

批量删除镜像

docker rmi -f $(docker images

#docker ps 命令

#列出当前正在运行的容器

-a#列出当前正在运行的容器+带出历史运行的容器

-n=?#列出最近创建的容器

-q #只显示容器的编号

退出容器

exit 直接退出容器

Ctrl + P + Q 容器不停止退出

删除容器

docker rm 容器id #删除指定的容器,不能删除正在运行的容器,强制运行 rm -f

docker rm -f $(docker ps -aq) #删除所有容器

启动和停止容器的操作

docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id #强制停止当前的容器

常用的命令

后台启动容器

docker run -d 镜像名称 #问题docker ps 发现 后台镜像停止了
#常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用就会停止
#nginx 容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志

#显示日志
-tf  #显示日志
-n/--tail number #显示日志的条数
-f #保持打印窗口持续打印
-t #日志加时间
docker logs -tf -n 10 容器id

查看容器中进程信息

docker top 容器id

查看镜像元数据

#命令 docker inspect 容器id


#测试
docker inspect a1bd0008d904
[
    {
        "Id": "a1bd0008d904f20d5b7025cd05d47b35362406d2fa2fef8a72d6b9ff03dce587",
        "Created": "2021-10-27T09:07:47.833653838Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "redis-server",
            "/usr/local/etc/redis/redis.conf"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 11902,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-10-27T09:09:57.155577898Z",
            "FinishedAt": "2021-10-27T09:09:56.791361947Z"
        },
        "Image": "sha256:7faaec68323851b2265bddb239bd9476c7d4e4335e9fd88cbfcc1df374dded2f",
        "ResolvConfPath": "/var/lib/docker/containers/a1bd0008d904f20d5b7025cd05d47b35362406d2fa2fef8a72d6b9ff03dce587/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/a1bd0008d904f20d5b7025cd05d47b35362406d2fa2fef8a72d6b9ff03dce587/hostname",
        "HostsPath": "/var/lib/docker/containers/a1bd0008d904f20d5b7025cd05d47b35362406d2fa2fef8a72d6b9ff03dce587/hosts",
        "LogPath": "/var/lib/docker/containers/a1bd0008d904f20d5b7025cd05d47b35362406d2fa2fef8a72d6b9ff03dce587/a1bd0008d904f20d5b7025cd05d47b35362406d2fa2fef8a72d6b9ff03dce587-json.log",
        "Name": "/redis",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": [
            "2bbe0f50434b250da9a83ebef9218d276d72564d1eb4d7770ae635ae6ea97946"
        ],
        "HostConfig": {
            "Binds": [
                "/usr/local/redis/data:/data",
                "/usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "6379/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "6379"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/11f69cce2beeeb58ef4812ffd5072fc0e517eb99d31fefd08010cfc72d711c76-init/diff:/var/lib/docker/overlay2/748ef5a20ad62f0c128a1697f9ce5f0250fdeecc1546484aa84a9f726cbf8c51/diff:/var/lib/docker/overlay2/0fc31f056976345d445f474756586df4cb36d8389503df58f591720a21a841b6/diff:/var/lib/docker/overlay2/dbfc1f1c36b270653d0abedd4d5f88f466454cfcd5ce5f7ca5096c3ccadc76ee/diff:/var/lib/docker/overlay2/05ae818be6b435fdeee92ddd729ba80a98a996960591dca0136a98d1a1317f03/diff:/var/lib/docker/overlay2/689212ed08c74ca383706529458744a1f95e021ff13fc559e42e85a8dcb90325/diff:/var/lib/docker/overlay2/0c20e25349bc0f04e0cfff725fbe00ce6935015a09ea0408fd577e11e9faf2da/diff",
                "MergedDir": "/var/lib/docker/overlay2/11f69cce2beeeb58ef4812ffd5072fc0e517eb99d31fefd08010cfc72d711c76/merged",
                "UpperDir": "/var/lib/docker/overlay2/11f69cce2beeeb58ef4812ffd5072fc0e517eb99d31fefd08010cfc72d711c76/diff",
                "WorkDir": "/var/lib/docker/overlay2/11f69cce2beeeb58ef4812ffd5072fc0e517eb99d31fefd08010cfc72d711c76/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/usr/local/redis/data",
                "Destination": "/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/usr/local/redis/redis.conf",
                "Destination": "/usr/local/etc/redis/redis.conf",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "a1bd0008d904",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "6379/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.12",
                "REDIS_VERSION=6.2.6",
                "REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-6.2.6.tar.gz",
                "REDIS_DOWNLOAD_SHA=5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"
            ],
            "Cmd": [
                "redis-server",
                "/usr/local/etc/redis/redis.conf"
            ],
            "Image": "redis:latest",
            "Volumes": {
                "/data": {}
            },
            "WorkingDir": "/data",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "65c83e6a4d9019e77dac437ed3cc850475cf145297c75f981b192e7ca45b90d6",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "6379/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "6379"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "6379"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/65c83e6a4d90",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "f666b151f5cc2db4d398397563fb4992aa1f8dd10177258ca0895ddf7c27dfb2",
            "Gateway": "172.18.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.18.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:12:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "3fd00870221718a864397096221df872d1ec4a97b3620c33fee59aae03b94654",
                    "EndpointID": "f666b151f5cc2db4d398397563fb4992aa1f8dd10177258ca0895ddf7c27dfb2",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]

进入当前正在运行的容器

# 我们通常容器都是使用后台方式进行的,需要进入容器,修改一些配置

#命令
#方式一
docker exec -it容器id /bin/bash
#方式二
docker attach 容器id#进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

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

[root@VM-0-4-centos ~]# docker exec -it mysql /bin/bash
root@0cd4debcb955:/# cd home
root@0cd4debcb955:/home# ls
root@0cd4debcb955:/home# touch cong.java
root@0cd4debcb955:/home# exit;
exit
[root@VM-0-4-centos ~]# doucker ps
-bash: doucker: command not found
[root@VM-0-4-centos ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS        PORTS                                                  NAMES
a1bd0008d904   redis:latest   "docker-entrypoint.s…"   26 hours ago   Up 26 hours   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis
0cd4debcb955   mysql:8.0.27   "docker-entrypoint.s…"   26 hours ago   Up 26 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
[root@VM-0-4-centos ~]# docker cp 0cd4debcb955:/home/cong.java /home
[root@VM-0-4-centos ~]# cd /home
[root@VM-0-4-centos home]# ls
cong  cong.java

docker 安装tomcat

docker run -it --rm tomcat:9.0
#我们之前启动的都是后台,停止了容器还是可以查到,docker run -it --rm 用来测试,用完就删除

docker 安装ES镜像

docker pull nshou/elasticsearch-kibana
#最后咱们把镜像启动为容器就可以了,端口映射保持不变,咱们给这个容器命名为eskibana,到这里ES和Kibana就安装配置完成了!容器启动后,它们也就启动了,一般不会出错,是不是非常方便?节省大把时间放到开发上来,这也是我一直推荐docker的原因。

docker run -d -p 9200:9200 -p 9300:9300 -p 5601:5601 -e ES_JAVA_OPTS="-Xms64m -Xmx512m" --name eskibana  nshou/elasticsearch-kibana



#咱们还需要安装ElasticSearch Head,它相当于是ES的图形化界面,这个更简单,它是一个浏览器的扩展程序,直接在chrome浏览器扩展程序里下载安装即可:


#打开chrome浏览器,在扩展程序chrome应用商店那里,搜索elasticsearch:

#-e 环境的修改

commit镜像

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

#命令和git原理类似  
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

容器数据卷

#使用命令来加载 -v
docker run -it -v 主机目标:容器内目录
#通过docker inspect 容器id 查看详细信息

"Mounts": [
            {
                "Type": "bind",
                "Source": "/usr/local/nginx/conf/nginx.conf",
                "Destination": "/etc/nginx/nginx.conf",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/usr/local/nginx/logs",
                "Destination": "/var/log/nginx",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/usr/local/nginx/html",
                "Destination": "/usr/share/nginx/html",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
#如何确定是具名挂载还是匿名挂着,还是指定路径挂载
-v 容器内路径  #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载

DockerFile

Dockerfile就是用来构建docker镜像的构建文件 --命令脚本

通过这个脚本可以生成镜像,镜像是一层层的,脚本一个个的命令,每个命令都是一层

docker build -f 脚本路径 -t 镜像id .
#test
[root@VM-0-4-centos ~]# docker build -f /root/dockerfile1 -t cong/docker:1.0 .
Sending build context to Docker daemon  45.06kB
Step 1/4 : FROM nginx
 ---> 87a94228f133
Step 2/4 : VOLUME ["volume01","volume02"]
 ---> Running in ce644543049b
Removing intermediate container ce644543049b
 ---> 5dd60f570667
Step 3/4 : CMD echo "----end----"
 ---> Running in b254c1bc9348
Removing intermediate container b254c1bc9348
 ---> d67eef784cbe
Step 4/4 : CMD /bin/bash
 ---> Running in c17b47fab41f
Removing intermediate container c17b47fab41f
 ---> b147d870887b
Successfully built b147d870887b
Successfully tagged cong/docker:1.0
[root@VM-0-4-centos ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
cong/docker   1.0       b147d870887b   3 seconds ago   133MB
mysql         8.0.27    ecac195d15af   11 days ago     516MB
redis         latest    7faaec683238   2 weeks ago     113MB
nginx         latest    87a94228f133   2 weeks ago     133MB

两个容器实现数据同步

docker run ..... -- volums -from 容器名称 镜像名称
容器间的信息传递  数据卷容器的生命周期一直持续到没有容器使用为止。

DockerFile构建过程

基础知识:

1 每个保留关键字(指令)都是必须是大写字母

2 执行从上到下顺序执行

3 #表示注释

4 每个指令都会创建提交一个新的

镜像层

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件

FROM  		#基础镜像,一切从这里开始构建
MAINTAINER  #镜像是谁写的,名字+邮箱
RUN 		#镜像构建的时候需要运行的命令 
ADD 		#步骤:tomcat镜像, 这个tomcat的压缩包!添加内容
WORKDIR		#镜像的工作目录
VOLUME 		#挂载的目录
EXPOSE 		#暴露端口配置 
CMD 		#指定容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT 	#指定这个容器启动的时候要运行的命令,可以直接追加命令
ONBUILD		#当构建一个被继承 DockerFile这个时候就会运行 ONBUILD 的指令。触发指令
COPY		#类似ADD,将我们文件拷贝到镜像中
ENV			#构建的时候设置环境变量
image-20211030192827537

实战测试

Docker Hub 中99%镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置

#1	编写dockerfile文件
[root@VM-0-4-centos dockerfile]# vim mydockerfile
[root@VM-0-4-centos dockerfile]# cat mydockerfile 
FROM centos
MAINTAINER cong<771901874@qq.com>

EVA MYPATH /usr/local

WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
#2 通过文件构建对象
docker build -f mydockerfile -t mycentos:0.1 .

cmd 和 entrypointd的区别

CMD 		#指定容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT 	#指定这个容器启动的时候要运行的命令,可以直接追加命令

实战:Tomcat

1 准备镜像文件 tomcat压缩包,jdk的压缩包

2 编写dockerfile文件,官方命名DockerFile

image-20211031105759229

发布自己的镜像

DockerHub

1地址:https://hub.docker.com/注册自己的账号

2 确定这个账号可以启动

3 在我们的服务器上提交镜像

image-20211031112155327

4登录完毕后就可以提交镜像,就是一步 docker push

[root@VM-0-4-centos dockerfile]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: lhcong
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded




[root@VM-0-4-centos dockerfile]# docker push cong/docker:1.0
The push refers to repository [docker.io/cong/docker]
9959a332cf6e: Preparing 
f7e00b807643: Preparing 
f8e880dfc4ef: Preparing 
788e89a4d186: Preparing 
43f4e41372e4: Preparing 
e81bff2725db: Waiting 
denied: requested access to the resource is denied #拒绝

#解决方法
[root@VM-0-4-centos ~]# docker tag b147d870887b lhcong/docker:1.0
[root@VM-0-4-centos ~]# docker rmi cong/docker:1.0
Untagged: cong/docker:1.0
[root@VM-0-4-centos ~]# docker iamges
docker: 'iamges' is not a docker command.
See 'docker --help'
[root@VM-0-4-centos ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
lhcong/docker   1.0       b147d870887b   19 hours ago   133MB
mysql           8.0.27    ecac195d15af   12 days ago    516MB
redis           latest    7faaec683238   2 weeks ago    113MB
nginx           latest    87a94228f133   2 weeks ago    133MB
#易错点:docker push 后面必须加的是用户id/文件名字:tag 不然会报错
要用docker tag 命令来修改

阿里云镜像服务

1登录阿里云

2找到容器镜像服务

3创建命名空间

image-20211031123228443

4创建容器镜像

image-20211031123239081

1docker login --username=congdoraemon registry.cn-beijing.aliyuncs.com
2docker tag [ImageId] registry.cn-beijing.aliyuncs.com/lhcong-docker/cong-test:[镜像版本号]
3 docker push registry.cn-beijing.aliyuncs.com/lhcong-docker/cong-test:[镜像版本号]

image-20211031131851857

Docker网络

理解Docker

#查看容器的内部网络地址 ip addr

docker exec -it 125227f233a9 ip addr

#若有报错在容器内执行下面的代码

apt update && apt install -y iproute2

#我们发现这个容器带来的网卡,都是一对对的
#ve th-pair 就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连


docker使用的是linux的桥接

image-20211031172955649

–link

image-20211031173552765

image-20211031174456076

自定义网络

查看所有的docker网络

[root@VM-0-4-centos ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
3fd008702217 bridge bridge local
2e08eb3e1445 host host local
f1063c44c7b8 none null local

网络模式

bridge :桥接 docker(默认,自己的创建也是用bridge模式)

none :不配置网络

host :和宿主机共享网络

container:容器网络连同!(用的少!局限很大)

#我们直接启动的命令 默认自带--net bridge ,而这个就是我的docker0

docker0特点:默认,域名不能访问, --link可以打通连接

docker network create --driver bridge
#test
 
[root@VM-0-4-centos ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
f16708ce675cc5b9e3836c0052fba7a78b68ca71ad2d9d67feb4a5a4646921c3


[root@VM-0-4-centos ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
3fd008702217   bridge    bridge    local
2e08eb3e1445   host      host      local
f16708ce675c   mynet     bridge    local
f1063c44c7b8   none      null      local

​ 好处:

redis -不同集群使用不同的网络,保证集群是安全和健康的

mysql-不同集群使用不同的网络,保证集群是安全和健康的

网络连通

image-20211031191336177

image-20211031192220531

#一个容器两个ip,打通。阿里云服务器: 公网ip 私网ip

redis集群部署

image-20211031201038375

image-20211031203314708

image-20211031201712232

image-20211031203203986

SpringBoot微服务打包Docker镜像

[root@VM-0-4-centos idea]# docker build -t cong666 .
Sending build context to Docker daemon  17.49MB
Step 1/5 : FROM java:17
manifest for java:17 not found: manifest unknown: manifest unknown
[root@VM-0-4-centos idea]# docker build -t cong666 .
Sending build context to Docker daemon  17.49MB
Step 1/5 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Pull complete 
bb9cdec9c7f3: Pull complete 
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
 ---> d23bdf5b1b1b
Step 2/5 : COPY *.jar /app.jar
 ---> dfddcc85166d
Step 3/5 : CMD ["--server.port=8080"]
 ---> Running in 8a08f7a296f4
Removing intermediate container 8a08f7a296f4
 ---> 04f26d611dda
Step 4/5 : EXPOSE 8080
 ---> Running in 41a1d76e0b20
Removing intermediate container 41a1d76e0b20
 ---> fbaa288a1dfc
Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in ad8c17c24c1c
Removing intermediate container ad8c17c24c1c
 ---> a8a9c7dce586
Successfully built a8a9c7dce586
Successfully tagged cong666:latest
[root@VM-0-4-centos idea]# docker images
REPOSITORY                                                 TAG       IMAGE ID       CREATED          SIZE
cong666                                                    latest    a8a9c7dce586   45 seconds ago   661MB
registry.cn-beijing.aliyuncs.com/lhcong-docker/cong-test   1.0       b147d870887b   29 hours ago     133MB
lhcong/docker                                              1.0       b147d870887b   29 hours ago     133MB
mysql                                                      8.0.27    ecac195d15af   12 days ago      516MB
redis                                                      latest    7faaec683238   2 weeks ago      113MB
nginx                                                      latest    87a94228f133   2 weeks ago      133MB
java                                                       8         d23bdf5b1b1b   4 years ago      643MB
[root@VM-0-4-centos idea]# docker run -d -P --name cong-springboot-web cong666
a21577023b12dba18ffd4aa2ed3e254d5f628f76343df6892784067c3b4dba11
[root@VM-0-4-centos idea]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                                 
a21577023b12   cong666        "java -jar /app.jar …"   About a minute ago   Up About a minute   0.0.0.0:49153->8080/tcp, :::49153->808
125227f233a9   nginx          "/docker-entrypoint.…"   2 days ago           Up 2 days           0.0.0.0:8080->80/tcp, :::8080->80/tcp 
a1bd0008d904   redis:latest   "docker-entrypoint.s…"   4 days ago           Up 4 days           0.0.0.0:6379->6379/tcp, :::6379->6379/
0cd4debcb955   mysql:8.0.27   "docker-entrypoint.s…"   4 days ago           Up 4 days           0.0.0.0:3306->3306/tcp, :::3306->3306/
[root@VM-0-4-centos idea]# curl localhost:49153
{"timestamp":"2021-10-31T13:34:09.790+00:00","status":404,"error":"Not Found","path":"/"}[root@VM-0-4-centos idea]# 
[root@VM-0-4-centos idea]# curl localhost:49153/hello
Hello cong

image-20211101112639829

a minute 0.0.0.0:49153->8080/tcp, :::49153->808
125227f233a9 nginx “/docker-entrypoint.…” 2 days ago Up 2 days 0.0.0.0:8080->80/tcp, :::8080->80/tcp
a1bd0008d904 redis:latest “docker-entrypoint.s…” 4 days ago Up 4 days 0.0.0.0:6379->6379/tcp, :::6379->6379/
0cd4debcb955 mysql:8.0.27 “docker-entrypoint.s…” 4 days ago Up 4 days 0.0.0.0:3306->3306/tcp, :::3306->3306/
[root@VM-0-4-centos idea]# curl localhost:49153
{“timestamp”:“2021-10-31T13:34:09.790+00:00”,“status”:404,“error”:“Not Found”,“path”:"/"}[root@VM-0-4-centos idea]#
[root@VM-0-4-centos idea]# curl localhost:49153/hello
Hello cong


<img src="https://gitee.com/LHCong0516/cong-map-depot/raw/master/image-20211101112639829.png" alt="image-20211101112639829" style="zoom:67%;" />

标签:容器,centos,local,redis,Docker,root,docker
来源: https://blog.csdn.net/lhcong_/article/details/121094604

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有