目录
起源
一、Docker是什么?
二、资源网址
三、核心内容
镜像
容器
数据卷
执行原理
四、安装
在线安装Docker
离线安装Docker
五、docker操作指令
镜像操作指令
容器操作指令
docker容器应用
Mysql数据库-安装
Redis数据库-安装
Nginx服务器-安装
容器互联
通过虚拟网络进行连接
Docker 是 Paas提供商 dotCloud 开源的一个基于PLX的高级容器引擎,源代码托管在 GithubGithub上, 基于go语言并遵从Apache2.0协议开源。
Docker 是一个开源的应用容器引擎,提供可运行的容器.可更快的打包/测试以及部署应用程序
官网:https://docs.docker.com/get-started/overview/
镜像仓库:http://hub.docker.com
只是一个虚拟的概念,实际体现并非由一个文件组成,而是由一组文件系统组成或者说 由多层文件系统联合组成
容器是镜像运行时的载体.容器本质是进程,运行于属于自己的独立的命名空间
数据卷的生存周期独立于容器,容器消亡,数据卷也不会消亡.
因此使用数据卷时,当容器删除或重新启动之后数据却不会丢失
前提:因容器消亡时,容器存储层也随之消亡,
Docker_Host是我们的docker宿主机(就是安装docker的操作系统)
以docker pull命令,了解docker执行过程
1.卸载Docker
sudo yum remove docker-ce \
docker-ce-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装工具包
sudo yum install -y yum-utils
3.设置 yum 仓库地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
其中哪个都可以
4.更新 yum 缓存
sudo yum makecache fast #yum 是包管理器
5.安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
1.下载docker离线包
https://github.com/Jrohy/docker-install/
4.执行安装操作
# 进入/root/setup/docker 文件夹
cd /root/setup/docker
# 为 install.sh添加执行权限
chmod +x install.sh
# 安装
./install.sh -f docker-20.10.6.tgz
5.检查安装状态
docker info
1.启动Docker服务
sudo systemctl start docker
2.镜像开机自启
开启:
systemctl enable docker
禁用
systemctl disable docker
3.查看docker版本
docker -v
4.查看Docker状态
5.重新启动
sudo systemctl restart docker
6.停止服务
systemctl stop docker
7.防火墙
# 开机启动
systemctl enable firewalld
# 重启
systemctl restart firewalld
# 关闭
systemctl stop firewalld
# 开启
systemctl start firewalld
# 查看状态
systemctl status firewalld
8.网卡操作
关闭网卡
service NetworkManager stop
永久关闭 Manager网卡
chkconfig NetworkManager off
重启network网卡
service network restart
1.镜像加速
1-1.命令生成文件
cat < /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
1-2.修改配置文件
/etc/docker/daemon.json
2.下载镜像
docker pull 镜像名
3.浏览镜像文件
sudo docker images
4.查看镜像详情
docker inspect 镜像名或镜像id
5.查看镜像历史
docker history 镜像名/镜像id
6.导出镜像文件
docker save hello-world | gzip > hello-world.tar.gz
7.删除镜像文件
docker image rm 镜像名或镜像id
8.导入镜像操作
docker load < hello-world.tar.gz
9.运行镜像文件
docker run 容器名/容器id
1.创建并启动容器
docker run -it xxxx bash
1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。
2.查看Docker中的容器
2-1.查看docker运行中的容器
docker ps
2-2.查看docker运行中的所有容器
docker ps -a
3.查看容器日志信息
docker container logs 容器名/容器id
4.停止运行的容器
docker container stop 容器id
5.重启容器
docker container restart 容器名/容器id
6.进入指定容器
docker exec -it 802 bash #802为容器id
7.退出容器
假如从宿主机进入了启动的容器,退出容器需要使用exit指令
8.删除容器
docker container rm 802 #802为容器id
如果删除运行中的容器,需要添加 -f 参数。
9.清理所有终止状态容器
docker container prune
10.容器开机自启
docker update 容器名/容器ID --restart=always
11.容器状态监控
docker stats
1.清空已安装文件
yum clean all
2.拉取指定版本的Mysql
docker pull mysql:5.7.36
3.挂载配置文件并 运行容器
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.36
1.拉取镜像文件
docker pull redis
2.创建Redis文件夹及文件
2-1.创建Redis配置文件目录
mkdir -p /usr/local/docker/redis01/conf
2-2.在配置文件目录中创建redis.conf配置文件
touch /usr/local/docker/redis01/conf/redis.conf
因为Redis镜像中这个redis.conf是一个目录所以需要创建一个配置文件,否则我们本地挂载点 也会编程一个目录
3.挂载配置文件并 运行容器
sudo docker run -p 6379:6379 --name redis01 \
-v /usr/local/docker/redis01/data:/data \
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
–name:给容器起一个名
-p:端口映射 宿主机:容器
-v:挂载自定义配置 自定义配置:容器内部配置
-d:后台运行
redis-server --appendonly yes: 在容器执行redis-server启动命令,并打开redis持久化配置
1.拉取镜像文件
docker pull nginx
2.运行容器
docker run -p 80:80 --name nginx -d nginx
3.复制配置
docker container cp nginx:/etc/nginx .
执行以上指令则直接复制当前目录---用ls打开
5.文件
5-1.修改文件名
mv nginx conf
5-2.新建一个nginx文件夹把conf移动到新建的nginx
5-3.把以上复制的配置放到Nginx文件夹中
mv conf nginx
前提复制[配置时是mydata文件夹
6.创建新的Nginx容器
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/:/etc/nginx \
-d nginx
7.创建“/mydata/nginx/html/index.html”文件
echo 'hello nginx!
'
作用:容器中的端口会映射到宿主机上
1.初始化网络
1-1.新建网络
docker network create -d bridge t-net #t-net为自己起的网络名称
其中;
-d dridge~网络类型,默认:bridge
说明:
创建好这个网络后,在网络上添加容器,容器就可以通讯
1-2.列出网络
1-3查看网络信息
2.实现容器互联
2-1-1.打开终端,基于centos:7这个镜像启动容器,并加入n-net这个网路
docker run -it --name app1 --network t-net centos:7
2-1-2.新开终端执行,基于centos:7这个镜像再启动容器,同时也加入到n-net网络
docker run -it --name app2 --network t-net centos:7
2-2-1.测试网络互通
在app2的终端执行:
ping app1
在app1的终端执行:
ping app2
测试效果