什么是Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
和虚拟机的区别
组成
Docker是一个C/S结构,由镜像,容器和仓库组成
容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类实例化后的对象。
应用场景
- 简化配置
- 提高开发效率,不用部署环境
- 快速部署
- 代码流水线
- 开发调试
- 产品发布模式
- 分布式集群
- 存储过程储备数据
docker安装使用
ubuntu安装docker
$ apt-get install -y docker.io
arm版docker包下载地址
https://download.docker.com/linux/static/stable/aarch64/
centos安装docker(卸载docker)
$ 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-20.10.11
$ 编辑/etc/docker/daemon.json,加入一行
{
"data-root": "/data/docker"
}
$ systemctl enable docker
$ systemctl start docker
centos配置加速镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.1ms.run", "https://docker.1panel.live/"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
查看版本
$ docker -v
docker启动
$ /etc/init.d/docker start
搜索centos镜像,第一个是官方镜像
$ docker search centos
拉取centos镜像
$ docker pull centos
查询本地已存在的镜像
$ docker images
删除镜像
$ docker rmi [IMAGE ID]
运行容器命令
$ docker run centos /bin/echo "Hello World"
$ docker run --name=redis --restart=always -v /data/redis:/data -v /data/redis/redis.conf:/etc/redis/redis.conf -p 6379:6379 -d --log-opt max-size=10m --log-opt max-file=5 redis redis-server /etc/redis/redis.conf
$ docker run -itd --name=nginx --restart=always -v /afc:/usr/share/nginx/html --log-opt max-size=10m --log-opt max-file=5 --net=host nginx:1.22.0
$ docker run --name=mysql --restart=always -v /data/mysql:/var/lib/mysql -v /data/mysql/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD='bQjD^I7GW7#b&z$J' -p 3306:3306 -d mysql:5.7.33 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
$ docker run --restart=always -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
$ docker exec -i mysql sh -c 'exec mysql -uroot -p"F1HCwNB3d2x8Y7bb" guangzhou_metro' < /data/guangzhou_metro_20230719.sql
进入容器
$ docker exec -it [CONTAINER_ID] /bin/bash
批量删除已退出的容器
$ docker rm $(sudo docker ps -a -q)
docker查看网络
$ docker network ls
$ docker network inspect bridge # 查看bridge网络
docker查看日志
$ docker logs -f dd3
docker将数据搬到数据盘上
$ systemctl stop docker
$ systemctl status docker
$ mv /var/lib/docker /data/
$ ln -s /data/docker /var/lib/
$ ll /var/lib/docker
$ systemctl start docker
docker查询正在运行容器的启动命令
$ pip3 install runlike
$ runlike -p nginx
docker访问宿主机ip
docker访问宿主机ip
docker-compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
# arm架构安装
wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-aarch64 -O /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
mac安装minikube
brew install minikube
开启minikube
minikube start
进入minikube
minikube ssh
创建删除pod
kubectl create - pod_nginx.yml # 不推荐
kubectl delete - pod_nginx.yml
kubectl create -f rc_nginx.yml # 推荐使用rc,因为rc当删除一个pod会自动创建一个pod
kubectl delete -f rc_nginx.yml
删除pod
kubectl delete pods nginx-ksp22
获取pod,rc,rs信息
kubectl get pods # 不推荐
kubectl get pods -o wide
kubectl get rc
kubectl get rc -o wide
kubectl get rs
kubectl get rc -o wide
kubectl get deployment
kubectl get deployment -o wide
进入pod容器
kubectl exec -it nginx sh # 进入pod的第一个容器
kubectl exec -c --container='' # 指定容器
pods信息
kubectl describe pods nginx
开启多个pod
kubectl scale rc nginx --replicas=5 #开启5个nginx,包括已存在的
kubectl scale rs nginx --replicas=5 #开启5个nginx,包括已存在的
创建deployment
kubectl create -f deployment_nginx.yml
查看deployment历史
kubectl rollout history deployment nginx-deployment
回滚deployment历史
kubectl rollout undo deployment nginx-deployment
对deployment做修改
kubectl set image deployment nginx-deployment nginx=daocloud.io/library/nginx:1.13