苏州网站建设外贸,新网站百度seo如何做,做网站需要的课程,dreamweaver网页设计模拟试题目录
一、Docker的安装
二、Docker的命令
Docker命令实验
1.下载镜像
2.启动容器
3.修改页面
4.保存镜像
5.分享社区
三、Docker存储
1.目录挂载
2.卷映射
四、Docker网络
1.容器间相互访问
2.Redis主从同步集群
3.启动MySQL
五、Docker Compose 1.命令式安装 …目录
一、Docker的安装
二、Docker的命令
Docker命令实验
1.下载镜像
2.启动容器
3.修改页面
4.保存镜像
5.分享社区
三、Docker存储
1.目录挂载
2.卷映射
四、Docker网络
1.容器间相互访问
2.Redis主从同步集群
3.启动MySQL
五、Docker Compose 1.命令式安装
2.compose.yaml 参考视频
https://www.bilibili.com/video/BV14WtLeDEit
一、Docker的安装
使用本机虚拟机或云平台
国内常见云平台阿里云、腾讯云、华为云、青云......
使用CentOS 7.9
# 移除旧版本docker
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 配置docker yum源。
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 启动 开机启动docker enable start 二合一
systemctl enable docker --now# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json -EOF
{registry-mirrors: [https://mirror.ccs.tencentyun.com,https://docker.m.daocloud.io]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
二、Docker的命令
#查看运行中的容器
docker ps
#查看所有容器
docker ps -a
#搜索镜像
docker search nginx
#下载镜像
docker pull nginx
#下载指定版本镜像
docker pull nginx:1.26.0
#查看所有镜像
docker images
#删除指定id的镜像
docker rmi e784f4560448#运行一个新容器
docker run nginx
#停止容器
docker stop keen_blackwell
#启动容器
docker start 592
#重启容器
docker restart 592
#查看容器资源占用情况
docker stats 592
#查看容器日志
docker logs 592
#删除指定容器
docker rm 592
#强制删除指定容器
docker rm -f 592
# 后台启动容器
docker run -d --name mynginx nginx
# 后台启动并暴露端口
docker run -d --name mynginx -p 80:80 nginx
# 进入容器内部
docker exec -it mynginx /bin/bash# 提交容器变化打成一个新的镜像
docker commit -m update index.html mynginx mynginx:v1.0
# 保存镜像为指定文件
docker save -o mynginx.tar mynginx:v1.0
# 删除多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448
# 加载镜像
docker load -i mynginx.tar # 登录 docker hub
docker login
# 重新给镜像打标签
docker tag mynginx:v1.0 leifengyang/mynginx:v1.0
# 推送镜像
docker push leifengyang/mynginx:v1.0
Docker命令实验
接下来尝试做一个简单实验来熟悉docker命令
实验要求如下
启动一个nginx并将它的首页改为自己的页面发布出去让所有人都能使用。
实验步骤
下载镜像—— 启动容器—— 修改页面—— 保存镜像—— 分享社区
1.下载镜像
查看有没有这个镜像 下载镜像 查看是否下载成功 2.启动容器
启动nginx容器 但是这样启动会让会话的输入窗口阻塞无法再在当前会话窗口中输入命令那有没有更好的启动方式呢有的兄弟有的。
以下命令启动可以实现后台启动并给启动的容器自定义容器名同时将容器内部的端口与宿主机的端口建立映射关系宿主机外部的网络可以通过宿主机的端口访问到容器内部的应用程序 3.修改页面
先进入容器内部 修改页面内容 原页面如下 修改后的页面如下 4.保存镜像
将修改好后的镜像进行“提交”操作 将镜像进行“保存”操作如保存成一个文件 如果你拿到别人给的镜像tar包该如何加载该镜像呢——使用“加载”操作 5.分享社区
这一步需要登录dockerHub的账号并进行推送在此不做演示。
三、Docker存储
掌握目录挂载、数据卷让容器数据不再丢失。
1.目录挂载
在上面的实验中有一个要求是修改nginx的首页页面上面的做法是使用“docker exec”命令进入容器内部进行修改但是这种做法还是过于麻烦。而且如果该容器暴毙再重新启动一个新的容器那么之前那个容器运行的数据也就丢失了。
可以使用“-v”命令来将容器的部分文件挂载到外部这样修改外部的文件就相当于修改容器内部的文件的了。
2.卷映射
使用“目录挂载”的方式挂载的文件或目录是空的需要自己添加内容这样的方式不适合挂载配置文件。因为配置文件我希望它先继承原先的配置文件我再进行部分修改。如果要实现这样的需求就可以通过“卷映射”来实现。 这是“目录挂载”和“卷映射”命令的区别目录挂载的位置要以“/”开头而卷映射不需要。 这是卷映射中卷的默认存放地址。
四、Docker网络
1.容器间相互访问 docker在创建容器后都会默认让容器加入docker0网络并为每个容器分配唯一ip使用容器ip容器端口可以相互访问注意ip由于各种原因可能会变化。
但是这样的话如果要互相访问还需要特地去查一下目的容器的ip略显麻烦能不能使用域名的方式呢这样就不需要去查询ip了域名可以直接使用容器名。
有的这样的方法就是创建自定义网络如上图创建了一个自定义网络叫mynet在创建容器的命令中加入设置容器网络的部分命令即可这样容器名就是稳定域名。
2.Redis主从同步集群 #自定义网络
docker network create mynet
#主节点
docker run -d -p 6379:6379 \
-v /app/rd1:/bitnami/redis/data \
-e REDIS_REPLICATION_MODEmaster \
-e REDIS_PASSWORD123456 \
--network mynet --name redis01 \
bitnami/redis#从节点
docker run -d -p 6380:6379 \
-v /app/rd2:/bitnami/redis/data \
-e REDIS_REPLICATION_MODEslave \
-e REDIS_MASTER_HOSTredis01 \
-e REDIS_MASTER_PORT_NUMBER6379 \
-e REDIS_MASTER_PASSWORD123456 \
-e REDIS_PASSWORD123456 \
--network mynet --name redis02 \
bitnami/redis
3.启动MySQL
docker run -d -p 3306:3306 \
-v /app/myconf:/etc/mysql/conf.d \
-v /app/mydata:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD123456 \
mysql:8.0.37-debian
五、Docker Compose Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具通过一个 YAML 文件来配置应用程序的服务、网络和卷然后使用单个命令即可创建和启动所有服务。 1.命令式安装
#创建网络
docker network create blog#启动mysql
docker run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD123456 \
-e MYSQL_DATABASEwordpress \
-v mysql-data:/var/lib/mysql \
-v /app/myconf:/etc/mysql/conf.d \
--restart always --name mysql \
--network blog \
mysql:8.0#启动wordpress
docker run -d -p 8080:80 \
-e WORDPRESS_DB_HOSTmysql \
-e WORDPRESS_DB_USERroot \
-e WORDPRESS_DB_PASSWORD123456 \
-e WORDPRESS_DB_NAMEwordpress \
-v wordpress:/var/www/html \
--restart always --name wordpress-app \
--network blog \
wordpress:latest
2.compose.yaml
name: myblog
services:mysql:container_name: mysqlimage: mysql:8.0ports:- 3306:3306environment:- MYSQL_ROOT_PASSWORD123456- MYSQL_DATABASEwordpressvolumes:- mysql-data:/var/lib/mysql- /app/myconf:/etc/mysql/conf.drestart: alwaysnetworks:- blogwordpress:image: wordpressports:- 8080:80environment:WORDPRESS_DB_HOST: mysqlWORDPRESS_DB_USER: rootWORDPRESS_DB_PASSWORD: 123456WORDPRESS_DB_NAME: wordpressvolumes:- wordpress:/var/www/htmlrestart: alwaysnetworks:- blogdepends_on:- mysqlvolumes:mysql-data:wordpress:networks:blog:
增量更新
修改 Docker Compose 文件。重新启动应用。只会触发修改项的重新启动。
数据不删
默认就算down了容器所有挂载的卷不会被移除。比较安全。