docker中使用了叫overlay2的层叠式结构
为了简化存储,一个容器运行后会直接把镜像的存储状况作为容器的存储状况,然后针对容器运行产生的任何改动,都会在容器下相关目录中进行存储差分信息,也就是说一个容器中的存储情况由镜像原始存储情况和改动差分内容共同组成。
以centos为例,docker的默认存储路径位于 /var/lib/docker, 其中:
container文件夹保存着容器的相关信息,
image保存着镜像的相关信息,
overlay2保存着容器虚拟文件系统的相关信息。
overlay2 中有 diff目录和merged目录,diff中保存的就是差分信息,merged是在容器运行时才会出现的存储情况集合,我们可以直接对差分信息进行修改,也可以在merged中进行修改,修改后的结果也会出现在diff中,同时容器内部也会直观的看到我们的修改内容**
常用命令### 1.安装 yum install –y docker ### 2.启动 systemctl start docker systemctl enable docker ### 3.测试 docker run hello-world ### 4.卸载 # 删除安装包 yum remove docker # 删除镜像 docker rmi mysql # 删除镜像、容器、配置文件等内容 rm -rf /var/lib/docker # 查看本地镜像 docker images # 运行容器 docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql # 查看运行容器 docker container ls docker ps安装镜像
### 以Redis为例 # 查找可用版本 docker search redis # 拉取最新版本 docker pull mysql:latest # 拉取5.7版本 docker pull mysql:5.7firewall
systemctl start firewalld # 开启防火墙 systemctl stop firewalld # 关闭防火墙 systemctl status firewalld # 查看防火墙状态 systemctl enable firewalld # 开机自动启动 systemctl disable firewalld # 关闭开机启动 #开放端口及服务 firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效) firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent # 修改防火墙规则后,需要重新载入 firewall-cmd --reload # 查看端口开放状态以及删除规则命令 firewall-cmd --zone= public --query-port=80/tcp firewall-cmd --zone= public --remove-port=80/tcp --permanent # 查看开放的端口及服务 firewall-cmd --list-ports firewall-cmd --list-servicesnginx:8080
# 运行 ./nginx # 停止 相当于先查出nginx进程id再使用kill命令强制杀掉进程 ./nginx -s stop # 停止 相当于是待nginx进程处理任务完毕进行停止 ./nginx -s quit # 重启 ./nginx -s reload # 启动 docker run --name nginx-test -p 8080:80 -d nginx # --name nginx-test:容器名称。 # -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。 #-d nginx: 设置容器在在后台一直运行。mysql:3306
# 启动 docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql # 参数说明 # -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。 # MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。 # 进入容器 docker exec -it mysql bash #登录mysql mysql -u root -p #添加远程登录用户 CREATE USER 'liaozesong'@'%' IDENTIFIED WITH mysql_native_password BY 'Lzslov123!'; GRANT ALL PRIVILEGES ON *.* TO 'liaozesong'@'%';redis:6379
# 运行容器 docker run -itd --name redis-test -p 6379:6379 redis # -p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。 # 进入容器 docker exec -it redis-test /bin/bashrabbitmq:15672/5672 rabbitmq安装
https://www.cnblogs.com/sentangle/p/13201127.html
https://blog.csdn.net/qq_40965479/article/details/106109189
https://www.cnblogs.com/Nickc/p/11936609.html
# 运行容器 docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin df80af9ca0c9 # df80af9ca0c9 为IMAGE ID #-d 后台运行容器; # --name 指定容器名; # -p 指定服务运行的端口(5672:应用web访问端口;15672:控制台Web端口号); # -v 映射目录或文件; # --hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名); # -e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码) # 启动rabbitmq_management docker exec -it rabbit rabbitmq-plugins enable rabbitmq_management # 进入容器 docker exec -it rabbitmq bash # 开启防火墙15672端口 firewall-cmd --zone=public --add-port=15672/tcp --permanent firewall-cmd --reload



