Docker容器

Docker部署实战:新手入门教程

本文主要是介绍Docker部署实战:新手入门教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述

本文详细介绍了Docker部署实战的相关知识,包括Docker的基础概念和安装方法,以及如何进行镜像管理、容器操作和网络设置等。通过实战案例,展示了如何部署Web应用、数据库服务和小型项目。希望帮助读者快速掌握Docker部署实战技巧。Docker部署实战涵盖了从基础到高级的各个方面,适合新手入门。

Docker部署实战:新手入门教程
Docker基础概念与安装

什么是Docker

Docker是一个开源的应用容器引擎,它使得开发者能够将应用及其依赖打包在一个轻量级、可移植的容器中。这些容器可以在任何安装了Docker的机器上运行,无论是本地开发环境、测试环境还是生产环境。Docker的核心理念是将应用及其依赖以一种标准化的方式打包在一起,使得开发者可以专注于开发代码,而不是环境的配置。

Docker利用了Linux内核中的容器技术(例如cgroups和命名空间),使得容器可以在同一主机上彼此隔离地运行,并且可以共享主机的资源。Docker不仅支持Linux系统,还支持Windows和macOS等其他操作系统。

Docker的安装方法

安装Docker的过程因操作系统不同而有所区别。以下是针对不同操作系统的安装步骤,这里主要介绍针对Linux(Ubuntu 18.04)的安装步骤,其他操作系统的安装方法可以访问Docker官方网站获取。

Ubuntu安装Docker

  1. 更新并升级系统包:
    sudo apt-get update
    sudo apt-get upgrade
  2. 安装所需的软件包:
    sudo apt-get install -y 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. 设置Docker APT源:
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  5. 安装Docker CE:
    sudo apt-get update
    sudo apt-get install -y docker-ce
  6. 验证Docker是否安装成功:
    sudo docker --version
  7. 设置Docker启动时自启:
    sudo systemctl enable docker

Docker的常用命令

  • docker version:查看Docker版本信息。
  • docker info:显示系统信息。
  • docker images:列出本地镜像。
  • docker ps:列出正在运行的容器。
  • docker ps -a:列出所有容器。
  • docker run:运行一个新的容器。
  • docker start:启动一个已经停止的容器。
  • docker stop:停止一个正在运行的容器。
  • docker rm:删除一个或多个容器。
  • docker rmi:删除一个或多个镜像。
  • docker exec:在运行的容器中执行命令。
  • docker logs:查看容器运行日志。

Docker常用命令详解

  • docker run -it --name my-apache-container my-apache-app:启动一个名为my-apache-container的容器,使用镜像my-apache-app,进入交互模式。
  • docker ps:列出所有正在运行的容器。
  • docker ps -a:列出所有容器(包括停止的)。
  • docker start my-apache-container:启动名为my-apache-container的容器。
  • docker stop my-apache-container:停止名为my-apache-container的容器。
  • docker rm my-apache-container:删除名为my-apache-container的容器。
Docker镜像管理

搜索与下载镜像

Docker镜像是一个容器的模板,包含了运行一个容器所需的所有文件。用户可以从Docker Hub搜索和下载镜像。例如,为了下载官方的Ubuntu镜像,可以执行以下命令:

docker pull ubuntu

下载完成后,可以通过docker images命令查看镜像列表,如下:

docker images

输出示例:

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
ubuntu        latest    d9df9820878c   2 weeks ago  55.2MB

构建Docker镜像

用户可以根据需要构建自己的镜像。构建镜像通常需要一个Dockerfile文件,该文件包含了构建镜像所需的命令。以下是一个简单的Dockerfile示例:

# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest

# 更新软件包列表并安装Apache2
RUN apt-get update && apt-get install -y apache2

# 将容器的80端口映射到主机的8080端口
EXPOSE 80

# 设置容器启动时运行的命令
CMD ["apache2ctl", "start"]

使用以下命令构建镜像:

docker build -t my-apache-app .

镜像的保存与上传

Docker镜像不仅可以从Docker Hub下载,也可以上传到Docker Hub或者本地保存。

  1. 保存Docker镜像到本地文件

    docker save -o my-apache-app.tar my-apache-app

    这将创建一个名为my-apache-app.tar的文件,其中包含了镜像。

  2. 上传Docker镜像到Docker Hub

    首先需要登录Docker Hub:

    docker login

    然后可以使用docker push命令上传镜像:

    docker tag my-apache-app <用户名>/<仓库名>:<标签>
    docker push <用户名>/<仓库名>:<标签>
Docker容器操作

创建与运行容器

可以使用docker run命令来创建并运行一个新的容器。例如:

docker run -it --name my-apache-container my-apache-app

这里,-it表示以交互模式运行容器,--name用于指定容器的名字。容器运行后,可以通过以下命令查看运行中的容器:

docker ps

容器的启动、停止、删除

  • 启动容器

    如果容器已经停止,可以使用docker start命令来启动它:

    docker start my-apache-container
  • 停止容器

    使用docker stop命令来停止一个正在运行的容器:

    docker stop my-apache-container
  • 删除容器

    使用docker rm命令删除一个容器。如果容器还在运行,请先停止它:

    docker rm my-apache-container

容器的配置与环境变量设置

可以通过环境变量来配置容器。环境变量可以使用-e选项来设置。例如,下面的命令启动一个设置了环境变量MY_ENV_VARmy-value的容器:

docker run -e MY_ENV_VAR=my-value -it --name my-apache-env my-apache-app
Docker网络与端口映射

Docker网络类型详解

Docker支持多种网络类型,如桥接网络(bridge)、主机网络(host)、容器网络(container)、无连接网络(none)等。每种网络类型都有其特定的功能和用途。

  • 桥接网络(bridge):这是默认的网络模式,每个容器都会被分配一个独立的网络接口和IP地址。
  • 主机网络(host):容器共享主机的网络栈,容器中没有自己的网络命名空间,这使得容器可以直接使用主机的网络接口。
  • 容器网络(container):容器可以连接到另一个容器的网络栈。
  • 无连接网络(none):容器不会连接到任何网络栈,这意味着容器不会被分配IP地址或网卡设备。

服务间通信与端口映射

容器之间可以通过网络进行通信。如果容器需要访问外部网络,可以通过端口映射来实现。例如,将容器的80端口映射到主机的8080端口:

docker run -p 8080:80 -it --name my-apache-container my-apache-app

自定义网络设置

Docker允许创建自定义网络,这样可以在多个容器之间定义网络连接。例如,创建一个桥接网络:

docker network create my-net

然后启动容器时,可以将容器连接到这个网络:

docker run -d --name my-apache-app --network my-net my-apache-app
Docker数据卷管理

数据卷的作用与创建

数据卷是Docker容器间共享数据的一种机制,它可以在容器之间共享或重新映射。数据卷的数据完全独立于容器,因此在容器被删除或重新构建时,数据卷中的数据仍然存在。这使得数据卷非常适合用于持久化存储和共享数据。

创建数据卷时可以使用docker volume create命令,例如:

docker volume create my-vol

数据卷容器与持久化存储

数据卷容器(也称为数据容器)的主要功能是持久化存储数据,可以被多个其他容器共享。例如,创建一个数据容器:

docker run -d -v /mydata --name my-data-container busybox

然后,创建另一个容器,将数据容器中的数据挂载到该容器:

docker run -it --name my-app-container --volumes-from my-data-container busybox

数据卷的备份与恢复

数据卷的备份可以通过存档文件来实现,创建一个数据卷的备份:

docker run --rm --volumes-from my-app-container -v /mybackup:/backup busybox tar cvf /backup/mybackup.tar /mydata

恢复备份数据时,只需将存档文件解压到数据卷中:

docker run --rm --volumes-from my-app-container -v /mybackup:/backup busybox tar xvf /backup/mybackup.tar -C /mydata
Docker部署实战案例

Web应用部署实战

使用Docker部署Web应用,例如Apache,步骤如下:

构建Docker镜像

编写并构建Dockerfile:

FROM ubuntu:latest

RUN apt-get update && apt-get install -y apache2

EXPOSE 80

CMD ["apache2ctl", "start"]

使用命令构建镜像:

docker build -t my-web-app .

运行容器

启动容器并映射端口:

docker run -p 8080:80 -d --name my-web-container my-web-app

访问http://localhost:8080,可以看到Apache的默认页面。

数据库服务部署实战

使用Docker部署数据库服务,例如MySQL,步骤如下:

构建Docker镜像

编写并构建Dockerfile:

FROM mysql:5.7

ENV MYSQL_ROOT_PASSWORD=rootpassword
ENV MYSQL_DATABASE=mydatabase
ENV MYSQL_USER=myuser
ENV MYSQL_PASSWORD=mypassword

EXPOSE 3306

使用命令构建镜像:

docker build -t my-mysql-db .

运行容器

启动容器:

docker run -p 3306:3306 -d --name my-mysql-container my-mysql-db

连接到MySQL数据库并执行SQL命令:

docker exec -it my-mysql-container mysql -u myuser -p

小型项目部署实战

假设要部署一个简单的Web应用,包含前端和后端服务。前端服务使用Nginx,后端服务使用Python Flask。

构建Docker镜像

创建两个Dockerfile,一个用于Nginx,一个用于Flask。

Dockerfile for Nginx:

FROM nginx:latest

COPY ./dist /usr/share/nginx/html

Dockerfile for Flask:

FROM python:3.7-slim

WORKDIR /app
COPY ./app /app
RUN pip install -r requirements.txt

EXPOSE 5000
CMD ["python", "app.py"]

使用命令构建镜像:

docker build -t my-nginx-app ./nginx
docker build -t my-flask-app ./flask

运行容器

启动Nginx容器:

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

启动Flask容器:

docker run -p 5000:5000 -d --name my-flask-container my-flask-app

通过浏览器访问http://localhost:8080,可以看到前端页面,通过访问http://localhost:5000,可以看到后端服务提供的接口。

以上是Docker部署的基础概念、安装、常用命令,以及如何进行镜像管理、容器操作、网络设置、数据卷管理、实战案例等内容。希望本文能帮助你快速掌握Docker的基本操作和部署方法,并应用于实际的开发环境中。

这篇关于Docker部署实战:新手入门教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!