docker 常用指令

安装docker

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine


yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce

systemctl start docker

docker version

停止所有的容器

docker stop $(docker ps -q)

强制移除此容器

docker rm -f mysql

查看运行中的容器

docker ps -a

docker rm 5f0

docker container ls -aq

docker run 镜像名称 是创建一个docker container

docker container commit 简写:docker commit 把一个container commit成一个新的镜像,可以在容器中安装软件,不提倡

docker image build 简写:docker build -it xiaopeng/centos-vim . /前是在hub注册的用户ID /后是镜像名

docker image rm xiaopeng/centos-vim

docker push xiaopeng/hello-world:lasted

修改本地镜像名称:https://hub.docker.com/r/percona/percona-xtradb-cluster/
docker tag docker.io/percona/percona/percona-xtradb-cluster pxc
原来的镜像名称就可以删除了

进入到容器里,可以运行某些命令,image是只读的
docker ps
docker exec it 容器ID ip a 容器的IP

停止容器运行
docker ps
docker stop 容器ID

清理已经退出的容器
docker rm $(docker ps -aq)

查看容器IP等信息:
docker inspect 容器ID

查看容器运行日志
docker logs 容器ID

docker container logs 容器ID

vagrant virtuial = docker michaine
docker 网络
单机:bridge network
多机:

docker run -name web -d -p 80:80 nginx 给nginx起个别名叫web -d 后台运行
docker exec it web /bin/bash 进入容器

docker run -dit ubuntu
docker container ls
docker exec -it CONTAINERID bash

docker ps -l

docker logs -f NAMES(nostalgic_morse)

docker port nostalgic_morse 5000

docker inspect

ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort

1.停止所有的container,这样才能够删除其中的images:

docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令:

docker rm $(docker ps -a -q)

2.查看当前有些什么images

docker images

3.删除images,通过image的id来指定删除谁

docker rmi docker rmi -f img_id

想要删除untagged images,也就是那些id为的image的话可以用

docker rmi $(docker images | grep “^” | awk “{print $3}”)

要删除全部image的话

docker rmi $(docker images q)

docker compose

setup:
#下载 sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
#安装 chmod +x /usr/local/bin/docker-compose
#查看版本 docker-compose version

使用:
1.创建yml文件
2.docker-compose -f docker-compose.yml up

yum install tree

tree .

mysql pxc集群

1.创建集群的内部访问的网段,用于集群中mysql节点的相互访问
docker network create --subnet 172.18.0.0/24 net1
查看:
docker inspect net1
删除:
docker network rm net1
2.使用docker 卷保存数据库数据
docker volume create v1
查看:
docker inspect v1
显示结果中:Mountpoint:"/var/lib/docker/volumes/v1/_data" 代表镜像映射到主机的具体物理位置
删除:
docker volume rm v1

3.创建PXC镜像容器 一共创建6个
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 run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=ckip2017!@# -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=ckip2017!@# -v v1:/var/lib/mysql --privileged --name=node1 --net=net1 --ip=172.18.0.2 pxc

注意:此时要等2分钟,因为第一个mysql初始化比较慢,一定要用客户端连接到第一个节点上(使用宿主机的IP,上面的端口),才创建下面四个节点
从第二个容器开始,数据库实例化就比较快了
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=ckip2017!@# -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=ckip2017!@# -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql --privileged --name=node2 --net=net1 --ip=172.18.0.3 pxc

docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=ckip2017!@# -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=ckip2017!@# -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip=172.18.0.4 pxc

docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=ckip2017!@# -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=ckip2017!@# -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip=172.18.0.5 pxc

创建好以后,在mysql客户端测试这些连接是否成功,命名DB1~DB5
在第一个,第n个节点创建库,创建表,insert数据,测试是否一致


mysql pxc集群 负载均衡 Haproxy
1.安装Haproxy image
docker pull haproxy
2.haproxy 不包含配置文件,所以要配置
touch /home/soft/haproxy.cfg (这个文件还没)
要求在数据库创建haproxy用户,因为haproxy这个中间件要用这个账号登录mysql,用于心跳检测
在DB1里执行
create user ‘haproxy’@’%’ identified by ‘’;
3.创建haproxy容器
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy

第一个-p是haporxy对应的后台监控页面端口 第二个-p是负载的mysql master,上面占了

4.进入haproxy的容器中
docker exec -it h1 bash
5.为haproxy指明配置文件并启动,可在监控页面看是否运行
haproxy -f /usr/local/etc/haproxy/haproxy.cfg

6.访问后台监控 宿主主机IP:4001
停掉一个节点,变红
docker stop node1

7.在mysql客户端连接到h1,ip为宿主主机ip,端口为上面指定的4002,连接成功后,对h1的操作会通过轮训调用DB1~DB4,然后通过pxc同步


Haproxy双机热备:做负载均衡时 但h1是单节点的,要做haproxy 冗余 ,多个节点

双机热备关键技术:虚拟IP,使用Keepalived(用来抢占虚拟IP的,谁快谁抢到,没抢到的等着,抢到虚拟IP的容器叫主服务器,没叫备用服务器,
两个服务器间有心跳检测,如果备用发现发送到主的心跳检测没响应,就可以抢到)
应用程序通过虚拟IP向数据库发送请求

1.安装keepalived (要安装在haproxy所在的容器内,也就是要进入容器,执行命令),haproxy镜像使用的是unbitu,所以要apt-get 加速
docker exec -it h1 bash
apt-get update
apt-get install keepalived
2.查看配置文件:配置争抢的IP

apt-get install vim
vim /etc/keepalived/keepalived.conf(具体内容看视频4-4 11:12)
3.启动
service keepalived start
宿主主机可以ping通虚拟IP
ping 虚拟IP 看是否通,能通说明h1 这个haproxy OK

同理做h2 4003 4004

4.借助宿主主机的keepalived映射成外网可以访问的虚拟ip

你可能感兴趣的:(docker,docker,常用指令,docker)