前提条件 首先准备个虚拟机,有条件的准备服务器
Linux一点不会的看这里::www.bilibili.com/video/BV1Sv…
docker环境准备
# 卸载docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
# 安装yum环境
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
# 更新本地docker镜像
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
# 安装docker
yum install -y docker-ce
# 查看docker版本
docker -v
# 镜像加速,设置阿里云
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://njv4a9hf.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 防火墙处理,自己练习直接关了吧,不然各种开端口
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 开启防火墙,关防火墙练习的这条就不要输了
service start firewalld
# 开端口
#提示success,表示成功,--permanent 永久开放
firewall-cmd --add-port=80/tcp --permanent
# 关闭端口
firewall-cmd --remove-port=80/tcp --permanent
# 重启防火墙,开端口记得重启防火墙
systemctl restart firewalld
镜像、容器、数据卷
个人理解(非官方):镜像相当于Java中的类,容器相当于对象,使用容器需要根据镜像创建对象实例
Docker官方镜像地址:hub.docker.com/
镜像
# 拉取镜像
ddocker pull [repository]:[tag]
#举例
docker pull redis # 可以指定版本,不指定默认最新
docker pull mysql:5.2.7
# 查看镜像
docker images
#导入导出镜像
docker save -o [保存的目标文件名称] [镜像名称] # 导出
docker save -o nginx.tar nginx:latest #例子,会导出成tar包
docker load -i nginx.tar 加载成镜像
#删除镜像
docker rmi 镜像名:tag(版本)
docker rmi nginx:latest
容器
# 相关命令
docker run:创建并运行一个容器,处于运行状态
docker pause:让一个运行的容器暂停
docker unpause:让一个容器从暂停状态恢复运行
docker stop:停止一个运行的容器
docker start:让一个停止的容器再次运行
docker rm:删除一个容器
docker ps:常看运行的容器
docker exec:进入容器内部docker run:创建并运行一个容器,处于运行状态
docker pause:让一个运行的容器暂停
docker unpause:让一个容器从暂停状态恢复运行
docker stop:停止一个运行的容器
docker start:让一个停止的容器再次运行
docker rm:删除一个容器
docker ps:常看运行的容器
docker exec:进入容器内部
# 容器操作
docker run --name containerName -p 80:80 -d nginx
# 命令解释:
docker run :创建并运行一个容器
--name : 给容器起一个名字,比如叫做containerName
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-d:后台运行容器,守护式运行,运行方式还有-t:交互式运行
nginx:镜像名称,例如nginx
# 查看容器日志
docker logs -f containerName
# 命令解释:
docker logs :查看容器日志命令
-f : 追踪日志
containerName:容器名称
# 操作容器内部
docker exec -it containerName bash
# 退出容器内部
exit
数据卷
数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
个人理解(非官方):在服务器创建的数据卷跟容器内部的文件绑定互相映射,操作容器文件会映射到数据卷中,反之亦然,使用数据卷可以在容器升级或者销毁提供数据备份(数据卷没有删除的情况下)
# 数据卷操作
docker volume [COMMAND]
#[COMMAND]有如下类型,可通过docker volume -help查看
create 创建一个volume
inspect 显示一个或多个volume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume
# 创建名叫html的数据卷
docker volume create html
# 查看所有数据卷
docker volume ls
# 查看html数据卷的详情
docker volume inspect html
# 创建容器时挂在数据卷
docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx
# html 是提前创建的数据卷,若不存在执行命令后会自动创建该数据卷
# /usr/share/nginx/html 是容器内部文件地址
简单入门,高深问题请自行研究,记得写文档发视频,顺便给我个连接,谢谢