为了账号安全,请及时绑定邮箱和手机立即绑定

Docker学习:从入门到实践的全面指南

标签:
Docker 容器
概述

本文提供了全面的Docker学习指南,涵盖了从安装到基本命令使用的所有内容。详细介绍了Docker的优点、安装步骤、基本概念以及常用命令。通过实践案例,读者可以学习到如何构建自己的Docker镜像和部署多容器应用。Docker学习将帮助你更好地管理和运行应用程序。

Docker学习:从入门到实践的全面指南
Docker简介与安装

什么是Docker

Docker是一种开源的应用容器引擎,它可以让开发人员将应用程序及其依赖项打包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器或Windows机器,以及任何公有或私有云上。Docker是基于开源项目libcontainer制作的,它遵循了Unix容器格式和运行时。

Docker的优点

  1. 快速启动:Docker容器可以在秒级启动。
  2. 轻量级:Docker容器的启动速度和资源占用比传统虚拟机更快、更轻量。
  3. 一致的环境:Docker保证了开发、测试和生产环境的一致性。
  4. 易于分发:Docker容器可以很容易地打包、分发和安装。
  5. 高效利用资源:Docker容器可以在同一台机器上运行多个应用程序,每个容器都有自己的环境,但共享主机的操作系统。

Docker的安装步骤

在Ubuntu上安装Docker

  1. 更新现有的包索引:
    sudo apt-get update
  2. 安装一些依赖包,以便apt能通过HTTPS来使用仓库:
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  3. 添加Docker的官方GPG密钥:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. 使用下面的命令来设置稳定的仓库:
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  5. 再次更新包索引:
    sudo apt-get update
  6. 安装Docker CE:
    sudo apt-get install docker-ce
  7. 验证Docker安装是否正确:
    sudo docker run hello-world

在Windows或macOS上安装Docker

  1. 访问Docker官方下载页面下载适用于Windows或macOS的Docker Desktop。
  2. 按照安装向导进行安装。
  3. 打开Docker Desktop,点击“Start”启动Docker。
  4. 验证Docker安装是否正确:
    docker run hello-world
Docker基本概念

镜像(Images)

Docker镜像是一个只读的模板,它定义了一个Docker容器的环境。一个容器镜像包含了运行应用程序所需的所有文件、库和依赖项。

获取镜像

可以从Docker Hub公共仓库或私有仓库中获取镜像。例如,获取Ubuntu 18.04镜像:

docker pull ubuntu:18.04

构建镜像

可以使用Dockerfile来构建镜像。例如,创建一个简单的Dockerfile

# 使用Ubuntu 18.04作为基础镜像
FROM ubuntu:18.04

# 更新包列表并安装vim
RUN apt-get update && apt-get install -y vim

# 设置容器启动时执行的命令
CMD ["vim"]

构建镜像:

docker build -t my-vim-image .

容器(Containers)

容器是镜像的运行实例。容器是轻量级的、独立的、可移植的执行环境,它们从镜像中创建。

运行容器

运行一个容器:

docker run -it --name my-container ubuntu:18.04

启动和停止容器

启动容器:

docker start my-container

停止容器:

docker stop my-container

仓库(Repositories)

仓库是一个存储和共享镜像的地方。Docker Hub是一个公共的仓库,可以用来存储和分享镜像。

登录Docker Hub

docker login

打标签并推送镜像

打标签:

docker tag my-vim-image username/my-vim-image:latest

上传到Docker Hub:

docker push username/my-vim-image:latest
Docker基本命令

使用Docker命令行操作镜像和容器

列出所有镜像

docker images

列出所有容器

docker ps -a

删除镜像

docker rmi image_id

删除容器

docker rm container_id

进入容器

docker exec -it container_id /bin/bash

复制文件

从主机复制文件到容器:

docker cp /path/to/local/file container_id:/path/to/container

从容器复制文件到主机:

docker cp container_id:/path/to/container /path/to/local

常用命令详解

docker run命令详解

docker run命令用于创建并启动一个新的容器。其基本语法如下:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • --name:指定容器名称。
  • -d:后台运行容器。
  • -p:端口映射。
  • -v:挂载数据卷。
  • --env:设置环境变量。

示例:

docker run -d --name my-web-server -p 8080:80 nginx

docker ps命令详解

docker ps命令用于列出运行中的容器。其基本语法如下:

docker ps [OPTIONS]
  • -a:列出所有容器,包括停止的容器。
  • -q:只显示容器的ID。
  • --filter:过滤容器。

示例:

docker ps -a
Dockerfile入门

Dockerfile的作用

Dockerfile是一个文本文件,包含了一条条的指令,每一行的命令都用来构建镜像。Dockerfile通常由以下几个部分组成:

  1. 基础镜像:使用FROM指令指定基础镜像。
  2. 维护信息:使用MAINTAINER指令指定镜像的维护者信息。
  3. 环境设置:使用ENV指令设置环境变量。
  4. 运行命令:使用RUN指令运行命令。
  5. 工作目录:使用WORKDIR指令设置工作目录。
  6. 容器启动命令:使用CMDENTRYPOINT指定容器启动时运行的命令。
  7. 文件拷贝:使用COPYADD指令将文件从本地拷贝到镜像中。
  8. 容器暴露端口:使用EXPOSE指令指定容器使用的端口。

编写简单的Dockerfile

假设要创建一个包含Python和Flask的Docker镜像:

# 使用官方Python镜像作为基础镜像
FROM python:3.7-alpine

# 设置工作目录
WORKDIR /app

# 复制应用程序代码到镜像
COPY . /app

# 安装应用依赖
RUN pip install -r requirements.txt

# 暴露应用端口
EXPOSE 5000

# 设置环境变量
ENV NAME World

# 设置容器启动命令
CMD ["python", "app.py"]

构建镜像:

docker build -t my-flask-app .

运行容器:

docker run -p 5000:5000 -e NAME="World" my-flask-app
Docker网络与数据卷

Docker网络模式

Docker支持多种网络模式,包括bridgehostcontainernone

Bridge模式

默认模式,将容器连接到一个虚拟网桥,容器可以与其他容器或主机通信。

docker run -d --name my-nginx -p 8080:80 nginx

Host模式

容器使用主机的网络堆栈,而不是使用Docker的虚拟网桥。

docker run -d --network host --name my-nginx nginx

Container模式

容器可以连接到另一个容器的网络堆栈上。

docker run -d --name my-nginx --network container:my-nginx nginx

None模式

不配置网络,容器无法通过网络进行通信。

docker run -d --network none --name my-nginx nginx

数据卷的使用

数据卷是Docker中一个持久化存储的机制,它允许数据在容器间共享和重用。

创建数据卷

docker volume create my-volume

挂载数据卷

docker run -d --name my-nginx -v my-volume:/data nginx

检查数据卷

docker volume ls

删除数据卷

docker volume rm my-volume
Docker实践案例

构建自己的Docker镜像

假设要创建一个包含MySQL和WordPress的Docker镜像。

创建Dockerfile

# 使用WordPress官方镜像作为基础镜像
FROM wordpress:latest

# 设置环境变量
ENV WORDPRESS_DB_HOST db:3306
ENV WORDPRESS_DB_NAME wordpress
ENV WORDPRESS_DB_USER root
ENV WORDPRESS_DB_PASSWORD password

# 设置WordPress数据目录
VOLUME /var/www/html

# 设置WordPress配置文件
COPY wp-config.php /var/www/html/wp-config.php

# 暴露WordPress端口
EXPOSE 80

创建wp-config.php文件:

<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'db');
?>

构建并运行MySQL容器

docker run -d --name db -e MYSQL_ROOT_PASSWORD=password mysql

构建并运行WordPress容器

docker build -t my-wordpress-app .
docker run -d --name wordpress -p 8080:80 --link db:mysql my-wordpress-app

多容器应用部署

使用docker-compose来部署一个包含WordPress和MySQL的多容器应用。

创建docker-compose.yml文件

version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: root
      MYSQL_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress
    depends_on:
      - db

volumes:
  db_data:

启动应用

docker-compose up -d

查看容器

docker-compose ps

停止并清理应用

docker-compose down

通过以上步骤,你可以学到如何使用Docker构建和部署多容器应用,从而更好地管理和运行你的应用程序。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消