Docker 从安装到实战

Docker 是一个开源的平台,用于自动化应用程序的部署、扩展和管理。它利用操作系统级别的虚拟化,将应用程序及其依赖项封装在称为容器的轻量级、可移植的单元中。以下是 Docker 的一些关键特点:

  1. 容器化:Docker 容器可以在任何支持 Docker 的环境中运行,确保应用程序的一致性。

  2. 轻量级:与传统虚拟机相比,Docker 容器共享宿主操作系统的内核,启动速度更快,占用资源更少。

  3. 隔离性:每个容器都是独立的,能够运行不同版本的同一应用程序而不相互干扰。

  4. 可移植性:应用程序及其所有依赖项都可以打包成一个镜像,可以在不同的环境中轻松部署。

  5. 快速扩展:Docker 支持快速创建和销毁容器,便于根据需求调整资源。

  6. 生态系统:Docker 具有广泛的工具和社区支持,包括 Docker Hub(一个公共镜像仓库)和 Docker Compose(用于定义和管理应用程序服务的工具.

一、CentOS 7部署Docker

  1. 安装docker依赖包
bash 复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

安装完成

  1. 设置yum镜像源,下载速度会更快
bash 复制代码
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装Docker-ccli
bash 复制代码
sudo yum install -y docker-ce docker-ce-cli containerd.io

注:若出现 No more mirrors to try. 错误。先修改vim的配置文件。文件路径如下:

bash 复制代码
/etc/yum.repos.d/CentOS-Base.repo

配置文件内如下,使用了阿里镜像源

bash 复制代码
# CentOS-Base.repo  
#  
# The mirror system uses the connecting IP address of the client and the  
# update status of each mirror to pick mirrors that are updated to and  
# geographically close to the client.  You should use this for CentOS updates  
# unless you are manually picking other mirrors.  
#  
# If the mirrorlist= does not work for you, as a fall back you can try the  
# remarked out baseurl= line instead.  
#  
#  
  
[base]  
name=CentOS-$releasever - Base - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/  
gpgcheck=1  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  
  
#released updates  
[updates]  
name=CentOS-$releasever - Updates - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/  
gpgcheck=1  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  
  
#additional packages that may be useful  
[extras]  
name=CentOS-$releasever - Extras - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/  
gpgcheck=1  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  
  
#additional packages that extend functionality of existing packages  
[centosplus]  
name=CentOS-$releasever - Plus - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/  
gpgcheck=1  
enabled=0  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  
  
#contrib - packages by Centos Users  
[contrib]  
name=CentOS-$releasever - Contrib - mirrors.aliyun.com  
failovermethod=priority  
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/  
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/  
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/  
gpgcheck=1  
enabled=0  
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

更新Vim

bash 复制代码
vim update -y

完成之后,再安装docker即可成功

4. 启动docker,并设置开启自启动

bash 复制代码
sudo systemctl start docker 开启docker服务

sudo systemctl enable docker 启动开机自启
  1. 验证docker版本
bash 复制代码
docker -v

二、Docker基础

1. 命令

  • docker --version

    • 显示 Docker 的版本信息。
  • docker info

    • 显示有关 Docker 的系统信息,包括容器、镜像、存储驱动等。

2. 镜像相关命令

  • docker pull <image>

    • 从 Docker Hub 或其他注册服务器拉取镜像。
    • 示例:docker pull ubuntu
  • docker images

    • 列出本地所有镜像。
  • docker rmi <image>

    • 删除指定的镜像。
    • 示例:docker rmi ubuntu
  • docker build -t <image_name>:<tag> <path>

    • 从 Dockerfile 构建镜像。
    • 示例:docker build -t myapp:latest .

3. 容器相关命令

  • docker run <options> <image>

    • 创建并启动一个新容器。
    • 示例:docker run -d -p 80:80 nginx(在后台运行 Nginx,并将主机的 80 端口映射到容器的 80 端口)。
  • docker ps

    • 列出当前正在运行的容器。
  • docker ps -a

    • 列出所有容器,包括已停止的。
  • docker stop <container_id>

    • 停止运行中的容器。
    • 示例:docker stop my_container
  • docker start <container_id>

    • 启动已停止的容器。
  • docker exec -it <container_id> <command>

    • 在运行中的容器内执行命令。
    • 示例:docker exec -it my_container bash
  • docker rm <container_id>

    • 删除指定的容器。
    • 示例:docker rm my_container

4. 网络相关命令

  • docker network ls

    • 列出所有 Docker 网络。
  • docker network create <network_name>

    • 创建新的 Docker 网络。
    • 示例:docker network create my_network
  • docker network inspect <network_name>

    • 查看网络的详细信息。
  • docker network rm <network_name>

    • 删除指定的网络。

5. 卷相关命令

  • docker volume ls

    • 列出所有 Docker 卷。
  • docker volume create <volume_name>

    • 创建新的 Docker 卷。
    • 示例:docker volume create my_volume
  • docker volume inspect <volume_name>

    • 查看卷的详细信息。
  • docker volume rm <volume_name>

    • 删除指定的卷。

6. 日志和监控

  • docker logs <container_id>

    • 查看容器的日志输出。
  • docker stats

    • 实时显示容器的资源使用情况。

7. 其他有用命令

  • docker commit <container_id> <new_image_name>

    • 将容器的当前状态保存为新镜像。
  • docker save -o <file>.tar <image_name>

    • 导出镜像到 tar 文件。
  • docker load -i <file>.tar

    • 从 tar 文件导入镜像。

8. Docker Compose

  • docker-compose up

    • 启动 Docker Compose 定义的服务。
  • docker-compose down

    • 停止并删除 Docker Compose 定义的服务。

2. 数据卷

是一个虚拟的目录,宿主机目录与容器目录之间映射的桥梁。

bash 复制代码
启动容器并,并数据卷挂载 html为数据卷的名字 /usr/share/nginx/html 容器中的目录
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx



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 \
  mysql

3. 自定义映像

  1. 在当前项目目录创建 dockerfile文件。
bash 复制代码
#使用官方 Python 作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录内容到容器的 /app 目录
COPY . .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 暴露容器的端口
EXPOSE 5000

# 定义容器启动时执行的命令
CMD ["python", "app.py"]

2. 构建镜像

在包含 Dockerfile 的目录中,使用以下命令构建镜像:

bash 复制代码
docker build -t my-custom-image:latest 
  • -t 选项用于给镜像打标签(tag),格式为 <name>:<tag>
  • . 表示上下文路径,即 Dockerfile 所在的目录。

3. 运行镜像

构建成功后,可以使用以下命令运行该镜像:

bash 复制代码
docker run -d -p 5000:5000 my-custom-image:latest
  • -d 表示在后台运行容器。
  • -p 选项用于将主机的端口映射到容器的端口

4. 网络

bash 复制代码
可以直接ping net_name ,docker会帮我们找到对应的IP地址
docker run -d --name c_name -p 3306:3306  --network net_name image_name
相关推荐
JZC_xiaozhong4 小时前
数据不互通、审批慢?企业多系统智能协同与流程自动化解决方案
运维·自动化·流程管理·流程自动化·数据集成与应用集成·流程监控·流程可视化设计
爱学习的小囧4 小时前
ESXi 8.0 原生支持 NVMe 固态硬盘吗?VMD 配置详解教程
linux·运维·服务器·esxi·esxi8.0
lUie INGA4 小时前
在2023idea中如何创建SpringBoot
java·spring boot·后端
坚持就完事了4 小时前
Linux中的变量
linux·运维·服务器
hERS EOUS4 小时前
nginx 代理 redis
运维·redis·nginx
geBR OTTE4 小时前
SpringBoot中整合ONLYOFFICE在线编辑
java·spring boot·后端
Porunarufu4 小时前
博客系统UI自动化测试报告
java
Cat_Rocky5 小时前
利用Packet Tracer网络实验
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志5 小时前
Linux 驱动实战:SR501 人体红外传感器驱动开发与调试全记录
linux·运维·驱动开发
正点原子5 小时前
【正点原子Linux连载】第三章 U-Boot使用 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南
linux·运维·驱动开发