摘自bilibili視頻,感謝黑馬程序員老師精彩講授
- docker 安裝
參考文檔: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
sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
Install Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-pluginsudo systemctl start docker
- 配置鏡像加速器
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
docker images --help
- 鏡像常用命令
docker save --help
docker load --help
docker images --help
docker rmi --help
docker pull --help
docker push --help
1.把鏡像保存到指定鏡像中
例子: docker save -o nginx.tar nginx:latest
2.刪除鏡像
docker rmi nginx:latest
- 加載鏡像
docker load -i nginx.tar
練習:https://hub.docker.com/_/redis
docker pull redis
docker images
docker save -o redis.tar redis:latest
docker rmi redis:latest
docker load -i redis.tar
- 容器相關命令
docker run --name mn -p 80:80 -d nginx
docker ps
docker ps -a
docker start mn
docker logs mn
持續(xù)查看日志
docker logs -f
進入容器
docker exec -it mn bash
sed -i 's/a/b/g' index.html
停掉mn容器
docker stop mn
docker rm --help
強制刪除運行中的容器
docker rm -f mn
- docker 數據卷
docker volume COMMAND
docker volume --help
docker volume create html
docker volume ls
查看數據卷存在哪里
docker volume inspect html
移除所有未使用的卷
docker volume prune
刪除某個卷
docker volume rm html
掛載邏輯卷
docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx
查看數據卷掛載的真實目錄
docker inspect html
掛載目錄:
docker run --name my-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
docker load -i mysql.tar
docker run --name mm -v /tmp/mysql/data:/var/lib/mysql -v /tmp/mysql/conf/ycon.conf:/etc/mysql/conf.d/ycon.conf


20220722 進一步研究
https://www.bilibili.com/video/BV1wQ4y1Y7SE?p=17
- Docker 引擎安裝 (運行容器的平臺)
https://docs.docker.com/engine/install/centos/
docker version
docker info
- 結構
鏡像 : 軟件
容器: 隔離的操作系統
鏡像運行產生容器
倉庫:
hub.docker.com
- 鏡像加速
登錄阿里云網站
容器鏡像服務->鏡像工具->鏡像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xyz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 檢測加速配置是否成功
docker info
- 啟動mysql
docker pull mysql:5.7
docker run --name mysql57 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /tmp/mysql/conf:/etc/mysql/conf.d -v /tmp/mysql/data:/var/lib/mysql -d mysql:5.7
// 看日志
docker logs -f mysql57
- docker 重啟之后要自動重啟 mysql57
systemctl restart docker
docker ps
加上參數:
--restart=always
(base) [root@localhost ~]# docker run --name mysql57 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /tmp/mysql/conf:/etc/mysql/conf.d -v /tmp/mysql/data:/var/lib/mysql --restart=always -d mysql:5.7
- 持久化數據到宿主機
-v 參數加上后 , 即使容器被刪了再重啟數據不會丟
- 刪除所有容器
docker rm -f $(docker ps -qa)
- 在mysql導出sql文件,利于跨機器數據遷移(用navicate更直接)
導出所有:
docker exec mysql57 sh -c 'exec mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" --all-databases'>/root/all-databases2.sql
導出單個表:
docker exec mysql57 sh -c 'exec mysqldump --databases learn -u root -p"MYSQL_ROOT_PASSWORD"'>/root/learn.sql
- 用docker 安裝 redis
docker pull redis:latest
docker exec 容器ID sh -c 'exec redis-cli'
docker run --name mr -p 6378:6379 --restart=always -d redis
redis 內存數據持久化
aof:redis服務器將所有redis客戶端的寫操作以命令方式記錄到日志文件中
redb持久化: 快照某一時間數據
Redis持久化
start with persistent storage
$ docker run --name some-redis -p 6379:6379 -v /tmp/redisdata:/data --restart=always -d redis redis-server --save 60 1 --loglevel warning
AOF
$ docker run --name some-redis -p 6379:6379 -v /tmp/redisdata:/data --restart=always -d redis redis-server --appendonly yes
- 自定義配置文件啟動redis
如何獲???可下載對應版本 copy到宿主機某個目錄如/tmp/redis/conf
運行容器用宿主機的配置文件
docker run --name some-redis -p 6379:6379 -v /tmp/redis/conf:/data --restart=always -d redis redis-server /data/redis.conf