Docker详细安装教程及基本使用
创作时间:
作者:
@小白创作中心
Docker详细安装教程及基本使用
引用
CSDN
1.
https://blog.csdn.net/QiuYanping_/article/details/141829424
Docker 是一个开源的容器化平台,可以让开发者将应用程序及其依赖打包成一个轻量级、可移植的容器,然后在任何支持 Docker 的环境中运行。Docker 的出现极大地简化了应用程序的部署和运维工作,使得开发者可以更加专注于应用程序的开发本身。本文将详细介绍 Docker 的安装、基本使用方法以及项目部署等内容。
Docker
🔧安装Docker
前提条件:准备一台Linux系统的虚拟机
- 更新yum仓库源为阿里云镜像源
#编辑文件
sudo vim /etc/yum.repos.d/CentOS-Base.repo
#进入文件后,输入":%d",删除文件中所有内容
:%d
#按键盘i键,再将一下内容复制到文件中
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#按esc退出编辑,输入":wq",保持并退出
:wq
- 清除并重建缓存
sudo yum clean all
sudo yum makecache
sudo yum update
- 配置Docker的yum库
#安装yum工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#配置Docker的yum源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
#更新yum,建立缓存
sudo yum makecache fast
- 安装Docekr
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动和校验
#重启
systemctl restart docker
#设置开机自启
systemctl enable docker
#执行docker ps命令,如果不报错,说明安装启动成功
docker ps
- 配置镜像加速
#创建目录
mkdir -p /etc/docker
#复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://mirrors.tuna.tsinghua.edu.cn",
"http://mirrors.sohu.com",
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://ccr.ccs.tencentyun.com",
"https://docker.m.daocloud.io",
"https://docker.awsl9527.cn"
]
}
EOF
#重新加载配置
systemctl daemon-reload
#重启Docker
systemctl restart docker
🧱基础
常见命令
命令 | 说明 | 案例 |
---|---|---|
docker pull | 拉取镜像 | docker pull nginx |
docker push | 推送镜像到DocekrRegistry | |
docker images | 查看本地镜像 | |
docker rmi | 删除本地镜像 | docker rmi nginx:latest |
docker run | 创建并运行容器(不能重复创建) | docker run -d --name nginx -p 80:80 nginx |
docker stop | 停止指定容器 | docker stop nginx |
docker start | 启动指定容器 | docker start nginx |
docker restart | 重新启动容器 | docker restart nginx |
docker rm | 删除指定容器 | docker rm nginx -f |
docker ps -a | 查看所有容器 | |
docker logs | 查看容器运行日志 | docker logs -f nginx |
docker exec | 进入容器 | docker exec -it nginx bash |
docker save | 保持镜像到本地压缩文件 | docker save -o nginx.tar nginx:latest |
docker load | 加载本地压缩文件到镜像 | docker load -i nginx.tar |
docker inspect | 查看容器详细信息 | docker inspect nginx |
命令别名:
vi ~/.bashrc
#添加别名
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'
#让别名生效
source ~/.bashrc
数据卷
作用:方便对容器内部温江进行修改
命令:
命令 | 说明 | 案例 |
---|---|---|
docker volume create | 创建数据卷 | docker volume create html |
docker volume ls | 查看所有数据卷 | |
docker volume rm | 删除指定数据卷 | docker volume rm html |
docker volume inspect | 查看某个数据卷的详情 | docker volume inspect html |
docker volume prune | 清除数据卷 |
数据卷挂载:
宿主机目录和数据卷做映射,数据卷和容器目录做映射
在执行docker run命令时,使用-v 数据卷:容器内目录 可完成数据卷挂载
例:
docker run -d \
--name nginx \
-p 80:80 \
-v html:/usr/share/nginx/html \
nginx
本地目录挂载:
宿主机目录和容器目录做映射
在执行docker run命令时,使用-v 本地目录:容器内目录 可完成本地目录挂载
例:
#在宿主机中提前创建相应的目录
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql
镜像
Dockerfile构建镜像:
- 描述镜像结构
- 构建镜像
docker bulid -t myImage .
注意命令的执行需要在Dockerfile同一目录下
网络
默认网络:docker0
在同一个网络中的容器,可以通过IP进行相互访问
但是,服务重新启动,IP地址会重新分配,故这种方式不稳定
自定义网络:
命令 | 说明 | 案例 |
---|---|---|
docker network create | 创建一个网络 | docker network create mynet |
docker network ls | 查看所有网络 | |
docker network rm | 删除指定网络 | docker network rm mynet |
docker network prune | 清除未使用的网络 | |
docker network connect | 指定容器加入某网络 | docker network connect mynet mysql |
docker network disconnect | 指定容器离开某网络 | docker network disconnect mynet mysql |
docker network inspect | 查看网络详细信息 | docker network inspect mynet |
🖥️项目部署
单个容器逐一部署
部署MySQL:
#在宿主机中提前创建相应的目录
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
--network myneet \
mysql
部署前端:
- 将静态资源和配置文件放到虚拟机上
- 创建并运行时,挂载静态资源和配置文件
docker run -d \
--name nginx \
-p 8080:8080 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network myneet \
nginx
部署后端:
- 将项目打包成jar包
- Dockerfile描述镜像结构
- 将jar包和Dockerfile放到虚拟机上
- docker bulid构建镜像
- docker run 部署应用
docker run -d \
--name project \
-p 8080:8080 \
--network mynet \
myImage.
多个相互关联的容器快速部署:DockerCompose
- 创建docker-compose.yml
#案例:
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: hmall
- 一键部署
#在docker-compose.yml的同一目录下执行改命令
docker compose up -d
热门推荐
新加坡华侨银行账户关闭事件全解析及应对策略
研究表明,热力学与量子系统中的熵定义没有矛盾
三色糙米浸泡会褪色吗?教你正确浸泡方法
“人工智能+”助力外贸高质量发展 科技赋能激活产业发展新动能
浅析商标侵权案件中类似商品的判定(上)
媒体的炒作和娱乐化处理成为了假唱文化在社会的核心
身份证号码的每一位分别代表什么含义
中考模拟作文题考出"社会大题":今天你"失语"了吗?
鹦鹉为什么不下蛋?探讨影响鹦鹉繁殖的多种因素
制造业向好发展夯实实体经济根基
揭秘德云社的超级商业帝国:郭德纲的千亿野心与95后的疯狂
智能化无人装备:未来战争的新引擎与挑战
芯片去美化浪潮下,中国半导体产业投资的机遇与挑战
李永辉院长解析法令纹形成的成因以及治疗方式
双鱼座与巨蟹座的爱情匹配度 双鱼巨蟹情缘指数
三影帝打不过陈思诚?古天乐新片票房仅446万,耗资1亿,回本无望
华西医院科普:骨髓穿刺和腰椎穿刺全攻略
中国古代城市规划:从夏商周到明清的演变与智慧
分析预包装熟肉制品菌落总数超标的原因及其解决方案
增肌和减脂饮食的区别:从营养需求到食物选择的全面解析
合肥如何写好“科技金融”大文章?
同学,AI是“帮手”,不是“枪手”!
外媒预测多国潜艇未来发展
掘金队3换1获得伊森:阵容无缺陷
凉皮:一道承载历史、口感与文化的美食
被补习班“喂”大的孩子后来都怎么样了?
掌握诀窍,让课后复习轻松无比
重庆赏花推荐:园博园的樱花开了,地铁直达免费开放,美照拍起来
酒店WiFi满格却龟速?原因及解决方案大揭秘!
为什么总是感到饥饿?告别假性饥饿的实用指南