docker commands from install to custom image
首先献上官方正版安装指导 https://docs.docker.com/engine/install/centos/
卸载旧版
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://bhqim8dh.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker -- 没有安装成功就不需要
正式安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
启动并设置开机启动
systemctl start docker && systemctl enable docker
验证
docker pull hello-world
1、镜像篇
docker images -a
docker pull centos
docker rmi -f containerId/containerName
docker rmi -f $(docker images -aq)
这里遇到删不掉的image ,先停掉(可以粗暴点全部删除)所有的container
2、容器篇
docker ps -a (-a 包括启动和未启动容器)
docker pull mysql
docker run -d --name mysql01 -p 3301:3306 -e MYSQL_ROOT_PASSWORD=123456 --privileged mysql
docker stop mysql01
docker start mysql01
docker exec -it mysql01 bash
docker logs mysql01
在容器里面安装了新的工具,在打成image ,新的image重新部署,新的容器就有新安装的工具
docker pull centos
docker run -it --name mycentos centos
docker exec -it mycentos /bin/bash
yum update
yum install -y vim
docker commit mycentos centos-vim
docker images -a
run centos-vim 进入容器查看vim版本 vim --version
3.网络篇,关键点 veth pair
默认的直接网络之间是相互通信的 ,原理自己百度,如果自己建立netns的方式,可以使用 veth pair建立两个网卡放到对应的netns,下面的命令就是简单创建过程
ip link show
ip netns add ns1
ip netns add ns2
ip netns exec ns1 ip a
ip netns exec ns2 ip a
ip link add veth-ns1 type veth peer name veth-ns2
ip link set veth-ns1 netns ns1
ip link set veth-ns2 netns ns2
ip link show
ip netns exec ns1 ping 192.168.18.10
ip netns exec ns2 ping 192.168.18.11
4.持久化
docker volume ls
docker volume rm -f $(docker volume ls)
docker volume create --name mysql03_volume
docker volume inspect mysql03_volume or cd /var/lib/docker/volumes/mysql03_volume/_data
docker run -d --name test-mysql -v mysql03_volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
docker exec -it test-mysql bash
通过命令或者数据库连接工具,修改数据库内容,然后其他volume指向mysql03_volume ,mysql数据是一样的
5 (PXC)集群部署
5.1 拉取percona-xtradb-cluster
docker pull percona/percona-xtradb-cluster:5.7.21
docker tag percona/percona-xtradb-cluster:5.7.21 pxc
docker rmi -f percona/percona-xtradb-cluster:5.7.21
5.2创建网络
docker network ls
docker network create --subnet=172.18.0.0/24 pxc-net
docker network inspect pxc-net
5.3创建volume
docker volume ls
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
5.3创建节点
docker run -d -p 3301:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=laven --privileged --name=node1 --net=pxc-net --ip 172.18.0.2 pxc
docker run -d -p 3302:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=laven --privileged --name=node2 -e CLUSTER_JOIN=node1 --net=pxc-net --ip 172.18.0.3 pxc
docker run -d -p 3303:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=laven --privileged --name=node3 -e CLUSTER_JOIN=node1 --net=pxc-net --ip 172.18.0.4 pxc
docker ps -a (配置node1,node2,node3 这个我可以成,但是配置三个数据库同步的时候,数据没办法同步,我失败了,加上 -e CLUSTER_JOIN=node1 死活不奏效,能创建,但是container起不来,我当时还不熟悉,不知道怎么看日志,那啥docker run 的时候,不要用-d 或者使用docker logs container-name(这一步,如果container都没有起来,是没有日志显示的,反正我是后来想到的))
docker exec -it node1 bash
