docker 笔记

摘自bilibili视频,感谢黑马程序员老师精彩讲授

  1. docker 安装
    参考文档:https://docs.docker.com/engine/install/centos/
  2. 先卸载

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

  1. 设置资源库

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

  1. Install Docker Engine
    sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

  2. sudo systemctl start docker

  1. 配置镜像加速器

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

docker images --help

  1. 镜像常用命令

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

  1. 加载镜像
    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

  1. 容器相关命令

docker run --name mn -p 80:80 -d nginx

docker ps
docker ps -a

docker start mn
docker logs mn
持续查看日志
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

  1. 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

image.png
image.png

20220722 进一步研究

https://www.bilibili.com/video/BV1wQ4y1Y7SE?p=17

  1. Docker 引擎安装 (运行容器的平台)

https://docs.docker.com/engine/install/centos/

docker version
docker info

  1. 结构

镜像 : 软件

容器: 隔离的操作系统

镜像运行产生容器
仓库:
hub.docker.com

  1. 镜像加速

登录阿里云网站
容器镜像服务->镜像工具->镜像加速器

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

  1. 检测加速配置是否成功

docker info

  1. 启动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

  1. 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

  1. 持久化数据到宿主机

-v 参数加上后 , 即使容器被删了再重启数据不会丢

  1. 删除所有容器

docker rm -f $(docker ps -qa)

  1. 在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 exec mysql57 sh -c 'exec mysqldump --no-data --databases learn -u root -p"MYSQL_ROOT_PASSWORD"'>/root/learn.sql

  1. 用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 内存数据持久化

  1. aof:redis服务器将所有redis客户端的写操作以命令方式记录到日志文件中

  2. redb持久化: 快照某一时间数据

  3. 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

  1. 自定义配置文件启动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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 安装 yum -y install docker-iowget -qO- https://get.docker.c...
    Martin_阿锤阅读 281评论 0 0
  • docker命令: Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 ...
    balabala19阅读 329评论 0 0
  • 零、本文纲要 一、认识Docker 二、Docker架构 三、安装Docker 四、启用Docker 五、Dock...
    石头耳东阅读 916评论 0 14
  • 参加工作以来,经历的第二家公司,用心的记录用到的技术。 Docker是一个改进的容器技术。具体的“改进”体现在,D...
    草中人阅读 303评论 0 0
  • 第一章节: DOCKER的安装与使用 1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本...
    可笑可乐阅读 427评论 0 1

友情链接更多精彩内容