docker狂神笔记

docker


https://mirrors.tuna.tsinghua.edu.cn/centos/7/isos/x86_64/ 4.4G

https://blog.csdn.net/c_cclc/article/details/117528807

ip 192.168.171.128

https://www.netsarang.com/zh/downloading/?token=akl6Vk0yMEhGY29iVnNkVHoxcGxEUUBJZTdEM0c5QUtGSExyNmFnUm9jSUNn

https://www.netsarang.com/zh/downloading/?token=bVA2ZmZOY0NvQk1QSmJsR1FKSThSQUBJZTdEM0c5QUtGSExyNmFnUm9jSUNn

Linux

基本

sync 同步提交到硬盘

shutdown 关机

reboot 重启

cd

ls

pwd

mkdir mkdir -p t1/t2/t1 链级创建

rmdir

cp

rm

mv

chmod

查看文件

cat 由第一行开始显示文件内容

tac 由最后一行开始显示文件内容

nl 显示的时候顺道输出行号

more 一页一页的显示文件

less和more 类似 但是他还可以往前翻页

head 只看头几行

tall 只看最后几行

你可以使用man【】命令来查看各个命令使用文档 如:map cp

网络配置目录:cd /etc/sysconfig/network-scripts

ifconfig ( ipconfig) 查看网络配置

docker

查看系统内核

[root@localhost /]# uname -r
3.10.0-1160.el7.x86_64

查看系统版本

[root@localhost /]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

[root@localhost /]# clear
[root@localhost /]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装Docker(yum安装)

基于 CentOS 7 安装

  1. 官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/

  2. 确定你是CentOS7及以上版本

    [root@192 Desktop]# cat /etc/redhat-release
    CentOS Linux release 7.2.1511 (Core)
    
  3. yum安装gcc相关(需要确保 虚拟机可以上外网 )

    yum -y install gcc
    yum -y install gcc-c++
    
  4. 卸载旧版本

    yum -y remove docker docker-common docker-selinux docker-engine
    # 官网版本
    yum remove docker \
              docker-client \
              docker-client-latest \
              docker-common \
              docker-latest \
              docker-latest-logrotate \
              docker-logrotate \
              docker-engine
    
  5. 安装需要的软件包

    yum install -y yum-utils 
    
    
    
    
    device-mapper-persistent-data lvm2
    
  6. 设置stable镜像仓库

    # 错误
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    ## 报错
    [Errno 14] curl#35 - TCP connection reset by peer
    [Errno 12] curl#35 - Timeout
    
    # 正确推荐使用国内的
    yum-config-manager 	--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  7. 更新yum软件包索引

    yum makecache fast
    
  8. 安装Docker CE

    yum -y install docker-ce docker-ce-cli containerd.io
    
  9. 启动docker

    systemctl start docker
    
  10. 测试

    docker version
    
    docker run hello-world
    
    docker images
    

    cd /etc/docker

    daemon.json 解决

{

“registry-mirrors”: [ “https://d8b3zdiw.mirror.aliyuncs.com” ],

“insecure-registries”: [ “https://ower.site.com” ],

}

Docker的常用命令

docker version #查看docker 的版本信息
docker info  #查看docker 的系统信息
docker 命令 --help   #万能命令

帮助文档的地址:https://docs.docker.com/engine/reference/commandline/build/

镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替

docker search #搜索镜像

docker pull #下载镜像 docker image pull

docker rmi #删除镜像 docker image rm

docker restart 容器id  #重启容器

docker images查看镜像
# 解释
#REPOSITORY			# 镜像的仓库源
#TAG				# 镜像的标签(版本)		---lastest 表示最新版本
#IMAGE ID			# 镜像的id
#CREATED			# 镜像的创建时间
#SIZE				# 镜像的大小

# 可选项
Options:
  -a, --all         Show all images (default hides intermediate images) #列出所有镜像
  -q, --quiet       Only show numeric IDs # 只显示镜像的id
  
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker images -a  #列出所有镜像详细信息
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker images -aq #列出所有镜像的id
d5f28a0bb0d0

docker search 搜索镜像
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker search mysql

# --filter=STARS=3000 #过滤,搜索出来的镜像收藏STARS数量大于3000的
Options:
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output
      
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker search mysql --filter=STARS=3000
NAME        DESCRIPTION         STARS            OFFICIAL        AUTOMATED
mysql       MySQL IS ...        9520             [OK]                
mariadb     MariaDB IS ...      3456             [OK]   

docker pull下载镜像

docker pull 镜像名:版本

# 下载镜像 docker pull 镜像名[:tag]
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker pull tomcat:8
8: Pulling from library/tomcat #如果不写tag,默认就是latest
90fe46dd8199: Already exists   #分层下载: docker image 的核心 联合文件系统
35a4f1977689: Already exists 
bbc37f14aded: Already exists 
74e27dc593d4: Already exists 
93a01fbfad7f: Already exists 
1478df405869: Pull complete 
64f0dd11682b: Pull complete 
68ff4e050d11: Pull complete 
f576086003cf: Pull complete 
3b72593ce10e: Pull complete 
Digest: sha256:0c6234e7ec9d10ab32c06423ab829b32e3183ba5bf2620ee66de866df # 签名防伪
Status: Downloaded newer image for tomcat:8
docker.io/library/tomcat:8 #真实地址

#等价于
docker pull tomcat:8
docker pull docker.io/library/tomcat:8

docker rmi 删除镜像
docker rmi -f 镜像id #删除指定id的镜像
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker rmi -f f19c56ce92a8
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker rmi -f name1 name2 name3,,,

docker rmi -f $(docker images -aq) #删除全部的镜像
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker stop $(docker ps -a -q)

容器命令

说明:我们有了镜像才可以创建容器,linux 下载一个centos镜像来测试学习

docker pull centos  #下载centos
docker run 镜像id #新建容器并启动

docker ps 列出所有运行的容器 docker container list

docker rm 容器id #删除指定容器

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

[root@iz2zeak7sgj6i7hrb2g862z ~]# docker co

docker run 镜像id #新建容器并启动
docker run [可选参数] image | docker container run [可选参数] image 
#参书说明
--name="Name"		#容器名字 tomcat01 tomcat02 用来区分容器
-d					#后台方式运行
-it 				#使用交互方式运行,进入容器查看内容
-p					#指定容器的端口 -p 8080(宿主机):8080(容器)
		-p ip:主机端口:容器端口
		-p 主机端口:容器端口(常用)
		-p 容器端口
		容器端口
-P(大写) 				随机指定端口

# 测试、启动并进入容器
[root@iz2zeak7sgj6i7hrb2g
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker run -it centos /bin/bash
[root@241b5abce65e /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@241b5abce65e /]# exit #从容器退回主机
exit

docker ps 列出所有运行的程序

docker ps 现在运行的程序

docker ps -a 历史运行的程序

docker ps 命令  		#列出当前正在运行的容器
  -a, --all     	 #列出当前正在运行的容器 + 带出历史运行过的容器
  -n=?, --last int   #列出最近创建的?个容器 ?为1则只列出最近创建的一个容器,为2则列出2个
  -q, --quiet        #只列出容器的编号
退出容器
exit 		#容器直接退出
ctrl +P +Q  #容器不停止退出 	---注意:这个很有用的操作
删除容器
docker rm 容器id
docker rm -f   强制删除

docker rm -f $(docker ps -aq)  删除所有的容器
docker ps -a -q|xargs docker rm   删除所有容器
容器的启动和停止

docker start 容器id 启动容器

docker restart 容器id 重启容器

docker stop 容器id 停止当前运行的容器

docker kill 容器id 强行停止容器

其他常用命令
后台启动
# 命令 docker run -d 镜像名
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker run -d centos
a8f922c255859622ac45ce3a535b7a0e8253329be4756ed6e32265d2dd2fac6c

[root@iz2zeak7sgj6i7hrb2g862z ~]# docker ps    
CONTAINER ID      IMAGE       COMMAND    CREATED     STATUS   PORTS    NAMES
# 问题docker ps. 发现centos 停止了
# 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志
docker logs --help
Options:
      --details        Show extra details provided to logs 
*  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
*      --tail string    Number of lines to show from the end of the logs (default "all")
*  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
      
      
➜  ~ docker run -d centos /bin/sh -c "while true;do echo 6666;sleep 1;done" #模拟日志      
#显示日志
-tf		#显示日志信息(一直更新)
--tail number #需要显示日志条数

docker logs -t --tail n 容器id #查看n行日志
docker logs -ft 容器id #跟着日志

查看容器中内部信息
查看原信息

docker inspect 容器id

进入当前正在运行的容器

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

docker exec -it 容器id bashshell

#测试
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55321bcae33d centos “/bin/sh -c 'while t…” 10 minutes ago Up 10 minutes bold_bell
a7215824a4db centos “/bin/sh -c 'while t…” 13 minutes ago Up 13 minutes zen_kepler
55a31b3f8613 centos “/bin/bash” 15 minutes ago Up 15 minutes lucid_clarke
➜ ~ docker exec -it 55321bcae33d /bin/bash
[root@55321bcae33d /]#

方式二

docker attach 容器id
#测试
docker attach 55321bcae33d 
正在执行当前的代码...
区别
#docker exec #进入当前容器后开启一个新的终端,可以在里面操作。(常用)
#docker attach # 进入容器正在执行的终端
从容器内拷贝到主机上

docker cp 容器id:/filenmame /主机目录

小结
  attach      Attach local standard input, output, and error streams 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 between a container and the local filesystem #拷贝文件
  create      Create a new container #创建一个新的容器
  diff        Inspect changes to files or directories on a container's filesystem #查看docker容器的变化
  events      Get real time events from the server # 从服务获取容器实时时间
  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 # 展示一个镜像形成历史
  images      List images #列出系统当前的镜像
  import      Import the contents from a tarball to create a filesystem image #从tar包中导入内容创建一个文件系统镜像
  info        Display system-wide information # 显示全系统信息
  inspect     Return low-level information on Docker objects #查看容器详细信息
  kill        Kill one or more running containers # kill指定docker容器
  load        Load an image from a tar archive or STDIN #从一个tar包或标准输入中加载一个镜像[对应save]
  login       Log in to a Docker registry #
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

作业安装nginx

搜索nginx docker search nginx

下载 docker pull nginx

查看 docker images

运行nginx (后台运行 别名nginx01 开放端口3344:80)

​ docker run -d --name nginx01 -p 3344:80 nginx

docker 进阶

容器数据卷(共享数据)

docker容器数据卷是什么?
当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们关闭docker容器时是会消失的,但是其中产生的部分内容我们是希望能够把它给保存起来另作用途的,Docker将应用与运行环境打包成容器发布,我们希望在运行过程钟产生的部分数据是可以持久化的的,而且容器之间我们希望能够实现数据共享。

通俗地来说,docker容器数据卷可以看成使我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删除时删除其挂载的数据卷。

特点:

1:数据卷可以在容器之间共享或重用数据

2:数据卷中的更改可以直接生效

3:数据卷中的更改不会包含在镜像的更新中

4:数据卷的生命周期一直持续到没有容器使用它为止

使用数据卷

方式一:直接使用命令挂载 -v

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

双向同步 两个目录修改一个另一个对应修改

-v 挂载 可以挂载多个目录或文件

-p 映射端口

-d 后台运行

-e 环境配置

–name 容器名字

具名和匿名挂载
# 匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v/ /etc/nginx

# 查看所有volume 情况 (挂载)
docker volume ls  
# 由于-v 只设置了容器内的路径没有设置容器外的路径

#具名挂载
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

# 通过 -v 卷名:容器内路径

所有的dockers容器内的卷,没有指定目录的情况瞎都是在/var/lib/docker/volumes/xxx/_data

我们通过具名挂载可以方便的找到一个卷 (常用)

-v 容器内路径 # 匿名挂载

-v 卷名 :容器内路径 #具名挂载

-v /宿主机路径:容器内路径 #指定路径挂载

# 通过-v 容器内路径 :ro rw  改变读写权限
ro  readonly  只读
rw readwrite  # 读写

Dockerfile

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

# 通过此脚本生成镜像


From centos
VOLUME ["volume01","volume02"]
CMD echo "---end---"
CMD /bin/bash          
# 这里的每个命令是镜像的一层
  • 创建dockerfile文件

  • 文件内容如上

    使用脚本构建镜像

    docker build -f 【文件路径】 -t 【自定义容器名】. <- 注意这个点 代表当前目录 不可忽略

匿名挂载

docker ps 查看容器id

docker inspect 容器id 查看匿名挂载位置

如果构建镜像时没有挂载卷,要手动镜像挂卷 v 卷名:容器内路径

dockerfile的指令
FROM        # 基础镜像,一切从这里开始架构 

MAINTAINER  # 镜像是谁写的,姓名+邮箱

RUN         # 镜像构建的时候血药运行的命令
 
ADD         # 步骤:tomcat 镜像,这个tomcat压缩包!添加内容

WORKDIR     # 镜像的工作目录

VOLUME      # 挂载的目录

EXPOST      # 保留端口配置

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

ENTRYPOINT  # 与CMD 相似   ,可以追加命令

ONBUILD     # 当构建的一个被继承DockerFile 这个时候就会运行ONBUILD 的指令

COPY        # 类似ADD, 将我们的文件拷贝到镜像中

ENV         # 构建的时候设置环境变量

docker history 镜像id – 查看镜像生成过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfvAgOtN-1629264069724)(C:\Users\enjoy\AppData\Roaming\Typora\typora-user-images\image-20210817154112714.png)]

数据卷同步

多个mysql同步数据!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbJhsjiP-1629264069726)(C:\Users\enjoy\AppData\Roaming\Typora\typora-user-images\image-20210817100103415.png)]

创建三个容器

docker run -it --name [自定义容器名] 镜像id
# 连接第一个容器  数据同步
docker run -it --name [自定义容器名] --volumes-from 容器名 镜像id   
创建第三个容器 同样连接容器1

# 当容器1删除时  容器2、3  数据不会删除
# 容器2、3  数据会同步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3y67ZZv-1629264069728)(C:\Users\enjoy\AppData\Roaming\Typora\typora-user-images\image-20210817102738109.png)]

发布自己的镜像

docker push 名字/镜像名:版本号 # 名字为注册的账号名 首次push 需要先登录docker

# docker login
# docker push name/镜像名

[root@xiaobai ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
arancia/myweb             latest              affa47bc03a2        2 hours ago         678 MB
arancialzl/myweb          latest              affa47bc03a2        2 hours ago         678 MB
[root@xiaobai ~]# docker push  arancialzl/myweb
The push refers to a repository [docker.io/arancialzl/myweb]
6eba8879076d: Pushing [==================>                                ] 12.62 MB/34.5 MB
35c20f26d188: Pushed 
c3fe59dd9556: Pushing [======>                                            ] 48.65 MB/351.5 MB
6ed1a81ba5b6: Pushed 
a3483ce177ce: Pushed 
ce6c8756685b: Pushed 
30339f20ced0: Pushing [==================================================>] 126.6 MB
0eb22bfb707d: Pushed 
a2ae92ffcd29: Pushing [=>   
# 错误解决
An image does not exist locally with the tag: name/image-name

#解决方案
-  增加一个tag

docker tag 镜像id  自定义命名
重新发布

层级发布

发布到阿里云镜像

1、登录阿里云

2、找到容器镜像服务

3、创建命名空间

4、创建容器镜像

5、根据阿里云帮助文档使用镜像

运行流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8fzG6OEG-1629264069731)(C:\Users\enjoy\AppData\Roaming\Typora\typora-user-images\image-20210817161032884.png)]

Docker 网络

测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9vpTiIQ-1629264069732)(C:\Users\enjoy\AppData\Roaming\Typora\typora-user-images\image-20210817161727672.png)]

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

docker exec -it tomcat01 ip addr

原理

我们每启动一个docker容器,docker就会给容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair技术

  • 容器之间可以互相通信
  • 删除容器,对应的网桥消失

项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以通过名字来进行访问

# 两个容器通过容器名ping
docker exec -it tomcat02 ping tomcat01
ping:tocat01:Name or service not know

# 问题解决
# 通过--link 解决网络联通问题
docker run -it --name 容器2 --link 容器1 镜像
  • 本质:–link 就是再hosts配置文件中添加了一条地址映射
# 查看当前所有网络
docker network ls
#查看当前网络所有信息
docker network inspect 网络id

自定义网络

网络模式

bridge 桥接模式

none 不配置网络

host 和宿主机共享网络

container 容器之间互联

dome

# 我们直接启动的命令 --net bridge ,这个就是之前的docker0
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat01 --net bridge tomcat

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

# 自定义网络
--driver bridge
--subnet 192.168.0.0/16 子网地址范围
--gateway 192.168.0.1 网关

[root@xiaobai ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
40d93b97747f09b18caa96ca3fb32e52fb496ec47f36214d3bca60159e70a552


#将容器放入自定义网络

[root@xiaobai ~]# docker run -it -d --name centos1 --net mynet centos
28ab78da9ac4032a795d98b334bf425b685bc5dc359d1a2857f4f930be276306
[root@xiaobai ~]# docker run -it -d --name centos2 --net mynet centos
65988663e3bd9c068d9957e37d87e42ad3f05de1cfa8c846ae653c90caf52e56
[root@xiaobai ~]# docker exec -it centos1 ping centos2
PING centos2 (192.168.0.3) 56(84) bytes of data.
64 bytes from centos2.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.059 ms
64 bytes from centos2.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.124 ms
64 bytes from centos2.mynet (192.168.0.3): icmp_seq=3 ttl=64 time=0.137 ms
^C
--- centos2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6ms
rtt min/avg/max/mdev = 0.059/0.106/0.137/0.036 ms
[root@xiaobai ~]# docker exec -it centos2 ping centos1
PING centos1 (192.168.0.2) 56(84) bytes of data.
64 bytes from centos1.mynet (192.168.0.2): icmp_seq=1 ttl=64 time=0.072 ms
64 bytes from centos1.mynet (192.168.0.2): icmp_seq=2 ttl=64 time=0.131 ms
^C
--- centos1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 0.072/0.101/0.131/0.031 ms


自定义网络可以自动配置对应关系 ,可以直接通过名字ping通

好处:

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

网络连通

[root@xiaobai ~]# docker network

Usage:	docker network COMMAND

Manage networks

Options:
      --help   Print usage

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.

dome

[root@xiaobai ~]#docker network connect mynet centos3
[root@xiaobai ~]# docker exec -it centos3 ping centos1
PING centos1 (192.168.0.2) 56(84) bytes of data.
64 bytes from centos1.mynet (192.168.0.2): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from centos1.mynet (192.168.0.2): icmp_seq=2 ttl=64 time=0.061 ms
64 bytes from centos1.mynet (192.168.0.2): icmp_seq=3 ttl=64 time=0.101 ms

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o8IX9bj6-1629264069734)(C:\Users\enjoy\AppData\Roaming\Typora\typora-user-images\image-20210818095730093.png)]

for port in KaTeX parse error: Undefined control sequence: \ at position 12: (seq 1 6); \̲ ̲do \ mkdir -p /…{port}/conf
touch /mydata/redis/node- p o r t / c o n f / r e d i s . c o n f c a t E O F / m y d a t a / r e d i s / n o d e − {port}/conf/redis.conf cat EOF /mydata/redis/node- port/conf/redis.confcatEOF/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

spring boot 微服务打包

1、构建springboot项目

2、打包应用

3、编写dockerfile

FROM java:8  #使用java8
COPY *.jar  /app.jar   #将jar包打到镜像
CMD ["--server.port=8080"]  #设置服务端口
EXPOSE 8080  # 开放端口
ENTRYPOINT ["java","-jar","/app.jar"]    #运行指令                           

4、构建镜像

# docker build 镜像名 .

运行镜像

# docker run -d -p  开放端口:容器开放端口  --name 容器名  镜像名

5、发布运行

1 ttl=64 time=0.039 ms
64 bytes from centos1.mynet (192.168.0.2): icmp_seq=2 ttl=64 time=0.061 ms
64 bytes from centos1.mynet (192.168.0.2): icmp_seq=3 ttl=64 time=0.101 ms






[外链图片转存中...(img-o8IX9bj6-1629264069734)]



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





### spring boot 微服务打包

1、构建springboot项目

2、打包应用

3、编写dockerfile



```html
FROM java:8  #使用java8
COPY *.jar  /app.jar   #将jar包打到镜像
CMD ["--server.port=8080"]  #设置服务端口
EXPOSE 8080  # 开放端口
ENTRYPOINT ["java","-jar","/app.jar"]    #运行指令                           

4、构建镜像

# docker build 镜像名 .

运行镜像

# docker run -d -p  开放端口:容器开放端口  --name 容器名  镜像名

5、发布运行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值