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
相关推荐
陌上花开࿈40 分钟前
调用第三方接口
java
Aileen_0v01 小时前
【玩转OCR | 腾讯云智能结构化OCR在图像增强与发票识别中的应用实践】
android·java·人工智能·云计算·ocr·腾讯云·玩转腾讯云ocr
桂月二二3 小时前
Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
java·docker·kubernetes
liuxin334455663 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
小马爱打代码3 小时前
设计模式详解(建造者模式)
java·设计模式·建造者模式
栗子~~4 小时前
idea 8年使用整理
java·ide·intellij-idea
2301_801483694 小时前
Maven核心概念
java·maven
007php0074 小时前
linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
linux·运维·服务器·ubuntu·centos·php·ai编程
人类群星闪耀时4 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
Q_19284999064 小时前
基于Spring Boot的电影售票系统
java·spring boot·后端