Advertisement

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

全部评论 (0)

还没有任何评论哟~