docker容器技术

环境:

  • centos 7.6

安装

yum -y update

yum install -y docker

启动:

systemctl start docker

重启:

systemctl restart docker

关闭:

systemctl stop docker

安装镜像:

搜索 : docker search 镜像名字 

例如 : docker search mysql  ;*mysql后面还可以指定版本信息: mysql:5.7*

拉取镜像:

docker pull mysql *默认是最新版*
拉取镜像速递太慢的话可以配置docker加速器 ;

导入,导出,删除,镜像

docker save mysql > /home/java.tar.gz   导出
docker load < /home/java.tar.gz         导入
docker rmi mysql  						删除

查看镜像

docker images

启动容器:

docker run -it --name myjava -p 9000:8080 -v /home/myjava:/soft --privileged java /bin/bash
  • 启动镜像就会创建出一个运行状态的容器

  • 交互式容器 :创建出上面这个容器, 默认会直接进入到容器中;可以使用exit 退出容器, 但是容器也就停止运行了;

  • 守护式容器 : 如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止 加 -d 参数

启动容器常用可选参数说明:

-i 表示以“交互模式”运行容器
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name 为创建的容器命名
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上, 一般不要将数据放在容器当中。
-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
-e 为容器设置环境变量
--network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同
--privileged 将宿主机器的目录映射到容器里面, 需要权限 加权限

查看 ,暂停, 停止 , 删除 容器

docker ps -a   				查看所有容器
docker pause myjava			暂停
docker unpause myjava		启动
docker stop myjava			停止
docker start -i myjava 		启动
docker rm myjava 			删除
  • 可以根据容器的名字来停止容器, 也可以根据名字的编号来停止容器;

镜像重命名

docker tag 镜像名字 修改成什么

使用docker搭建pxc 集群

docker pull percona/percona-xtradb-cluster  拉取pxc镜像

搭建一个五个节点的pxc集群

需要先创建五个pxc容器, 创建出来的pxc容器不要直接连接docker以外的网络, 那样不安全
处于安全考虑我们要给pxc集群在docker 内部搭建docker网络, 这个网络是外部无法直接访问的;

创建内部网络

docker network create --subnet=172.18.0.0/24 net1    		创建
docker network  inspect net1 		查看网络IP地址
docker network rm net1 				删除

docker卷

  • 容器中的pxc节点无法直接映射到宿主机器的目录, 会闪退;
  • 使用docker卷的方式来解决;
    docker卷 创建:
      docker volume create --name v1  创建
      docker inspect va  			  查看 v1 的具体目录
      docker volume rm v1 			  删除
      docker volume list     		  查看所有数据卷
    

通过pcx 镜像创建pxc 容器

创建5个docker卷
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
docker volume create --name v4
docker volume create --name v5
  • 切记一定要先创建docker卷再创建容器,不能一起来或者会报权限异常,不能创建容器
创建5个pxc 容器
1. docker run -d -p 3306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=T123456 -e CLUSTER_NAME=CPXC -e XTRABACKUP_PASSWORD=T123456 --privileged --name=node1 --net=net1 --ip=172.18.0.2 pxc
!>>> Ps: 创建完第一个容器之后我们使用连接工具依次测试数据库是都能连接成功,成功之后再创建下一个容器;
2. docker run -d -p 3307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=T123456 -e CLUSTER_NAME=CPXC -e XTRABACKUP_PASSWORD=T123456 -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=net1 --ip=172.18.0.3 pxc
3. docker run -d -p 3308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=T123456 -e CLUSTER_NAME=CPXC -e XTRABACKUP_PASSWORD=T123456 -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=net1 --ip=172.18.0.4 pxc
4. docker run -d -p 3309:3306 -v v4:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=T123456 -e CLUSTER_NAME=CPXC -e XTRABACKUP_PASSWORD=T123456 -e CLUSTER_JOIN=node1 --privileged --name=node4 --net=net1 --ip=172.18.0.5 pxc
5. docker run -d -p 3310:3306 -v v5:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=T123456 -e CLUSTER_NAME=CPXC -e XTRABACKUP_PASSWORD=T123456 -e CLUSTER_JOIN=node1 --privileged --name=node5 --net=net1 --ip=172.18.0.6 pxc
创建第一个容器与之后容器的需要修改的地方
-e CLUSTER_JOIN=node1          	同步node1  除了第一次不需要

-p 3307:3306  					宿主机器端口需要修改, 不能一样
-v v2:/var/lib/mysql         宿主映射的目录;
--name=node2   					名字不能一样
--ip=172.18.0.3  				ip不能一样

测试集群是否搭建成功

  • 使用navicat 连接数据库 , 端口使用我们指定的 3306-3310
  • 在第一个数据库当中我们创建数据库并插入数据, 如果其他四个数据库都能显示出来, 测试成功;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值