两小时入门Docker教程实践
概述
Docker是一种轻量级容器化技术,可以将应用程序和它们的依赖项打包在一个容器中,以便在任何地方都可以安装和运行。本教程将介绍如何使用Docker,包括以下内容:
- Docker的基本概念和工作原理
- 如何安装和配置Docker
- 如何使用Docker镜像创建容器
- 如何使用Docker容器部署应用程序
- 示例:使用Docker运行一个简单的Web应用程序
- 示例:使用Docker部署一个MySQL数据库
Docker的基本概念和工作原理
Docker是一种轻量级容器化技术,可以将应用程序和它们的依赖项打包在一个容器中。Docker容器是一个完整的文件系统,包括应用程序、运行时、系统工具、系统库等。Docker容器可以在任何地方运行,在不同的操作系统、不同的云平台上,都可以用一样的方式运行。
Docker的工作原理非常简单。首先将应用程序和它们的依赖打包成一个Docker镜像。然后使用Docker命令将这个镜像运行在一个Docker容器中。每个Docker容器都是相互隔离的,它们共享主机的内核,但是拥有自己独立的文件系统、网络、进程、内存等资源。
如何安装和配置Docker
在Ubuntu操作系统上安装Docker分为两步:
第一步是安装Docker的依赖项:
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
第二步是添加Docker的官方GPG密钥,并添加Docker的APT存储库:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
然后就可以安装Docker了:
$ sudo apt-get install docker-ce
安装完成后,使用以下命令检查安装是否成功:
$ docker version
如何使用Docker镜像创建容器
使用Docker镜像创建一个容器,首先要有一个Docker镜像。Docker Hub是一个公共的镜像集市,有各种各样的Docker镜像可以使用。我们以一个简单的Ubuntu镜像为例来创建容器。
首先,使用以下命令在本地下载Ubuntu镜像:
$ docker pull ubuntu
下载完成后,使用以下命令启动一个Ubuntu容器:
$ docker run -it ubuntu /bin/bash
这个命令的意思是,在一个新的Docker容器中,启动一个以Ubuntu镜像为基础的容器,运行/bin/bash命令。这个命令会进入到Ubuntu容器的命令行界面。
如何使用Docker容器部署应用程序
使用Docker容器部署应用程序有两种方式:构建自己的Docker镜像,或者使用已有的Docker镜像。
构建自己的Docker镜像
构建自己的Docker镜像需要编写一个Dockerfile文件,描述Docker镜像的构建过程。例如,我们构建一个包含一个简单的Web应用程序的Docker镜像:
FROM ubuntu
RUN apt-get update \
&& apt-get install -y apache2 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY index.html /var/www/html/
EXPOSE 80
CMD ["apache2ctl", "-D", "FOREGROUND"]
这个Dockerfile文件描述了一个以Ubuntu镜像为基础的Docker镜像,安装了Apache2服务器,并将index.html文件复制到Apache的默认网站目录。然后暴露了80端口,并启动Apache服务器。
使用以下命令构建这个Docker镜像:
$ docker build -t my-webapp .
这个命令会在当前目录下查找Dockerfile文件,并将其构建成一个名为my-webapp的Docker镜像。
然后,使用以下命令,启动一个这个Docker容器:
$ docker run -d -p 80:80 my-webapp
这个命令的意思是,使用my-webapp镜像,启动一个守护进程式的容器,并将容器80端口映射到主机的80端口。
使用已有的Docker镜像
使用已有的Docker镜像可以直接从Docker Hub中下载镜像,并启动一个容器。例如,我们使用一个MySQL镜像来启动一个MySQL数据库容器:
$ docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:latest
这个命令的意思是,使用最新版本的MySQL镜像,启动一个名为my-mysql的容器,并设置MYSQL_ROOT_PASSWORD环境变量,来指定MySQL的root用户密码。
示例:使用Docker运行一个简单的Web应用程序
以下是一个简单的Web应用程序,它使用Node.js框架和MongoDB数据库:
// app.js
var express = require('express');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var app = express();
app.get('/', function(req, res) {
res.send('Hello World!');
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
使用以下命令,启动一个MongoDB数据库容器:
$ docker run -d --name my-mongodb mongo
然后,使用以下命令,启动一个Node.js应用程序容器:
$ docker run -d --name my-app -p 3000:3000 --link my-mongodb:mongodb -v /path/to/app:/app node:latest node /app/app.js
这个命令的意思是,使用最新版的Node.js镜像,启动一个名为my-app的容器,将主机的3000端口映射到容器的3000端口。使用--link选项将my-mongodb容器连接到my-app容器,可以通过“mongodb”主机名来访问MongoDB容器。使用-v选项将主机上的/app目录映射到容器的/app目录,以将应用程序源代码映射到容器中。
示例:使用Docker部署一个MySQL数据库
你可以使用以下Dockerfile文件来构建一个MySQL容器镜像,该镜像预先设置数据库管理员帐户:
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD=my-secret-pw
使用以下命令构建这个镜像:
$ docker build -t my-mysql .
然后,使用以下命令,启动一个MySQL容器:
$ docker run -d --name my-mysql -p 3306:3306 my-mysql
这个命令启动了一个名为my-mysql的容器,并将主机的3306端口映射到容器的3306端口。容器使用预设的MYSQL_ROOT_PASSWORD环境变量来设置数据库管理员密码,你可以使用mysql客户端来连接它:
$ mysql -h localhost -u root -p my-secret-pw
总结
本文介绍了Docker的基本概念和工作原理,以及如何安装和配置Docker;如何使用Docker镜像创建容器,以及如何使用Docker容器部署应用程序。示例中,我们演示了如何使用Docker运行一个简单的Web应用程序和如何使用Docker部署一个MySQL数据库。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:两小时入门Docker教程实践 - Python技术站