问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Docker详细安装教程及基本使用

创作时间:
作者:
@小白创作中心

Docker详细安装教程及基本使用

引用
CSDN
1.
https://blog.csdn.net/QiuYanping_/article/details/141829424

Docker 是一个开源的容器化平台,可以让开发者将应用程序及其依赖打包成一个轻量级、可移植的容器,然后在任何支持 Docker 的环境中运行。Docker 的出现极大地简化了应用程序的部署和运维工作,使得开发者可以更加专注于应用程序的开发本身。本文将详细介绍 Docker 的安装、基本使用方法以及项目部署等内容。

Docker

🔧安装Docker

前提条件:准备一台Linux系统的虚拟机

  1. 更新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
  1. 清除并重建缓存
sudo yum clean all
sudo yum makecache
sudo yum update
  1. 配置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
  1. 安装Docekr
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 启动和校验
#重启
systemctl restart docker
#设置开机自启
systemctl enable docker
#执行docker ps命令,如果不报错,说明安装启动成功
docker ps
  1. 配置镜像加速
#创建目录
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构建镜像:

  1. 描述镜像结构
  2. 构建镜像
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

部署前端:

  1. 将静态资源和配置文件放到虚拟机上
  2. 创建并运行时,挂载静态资源和配置文件
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

部署后端:

  1. 将项目打包成jar包
  2. Dockerfile描述镜像结构
  3. 将jar包和Dockerfile放到虚拟机上
  4. docker bulid构建镜像
  5. docker run 部署应用
docker run -d \
--name project \
-p 8080:8080 \
--network mynet \
myImage.

多个相互关联的容器快速部署:DockerCompose

  1. 创建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
  1. 一键部署
#在docker-compose.yml的同一目录下执行改命令
docker compose up -d
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号