简明docker快速入门并实践方法
简明docker快速入门并实践方法
- 前言:
- 1. 什么是Docker?
- 2. Docker的基本概念
- 3. 安装配置Docker
- 4. Docker基本命令:
- 5. 简单实践:拉取Nginx镜像-自定义配置-推送镜像
- 步骤 1:拉取Nginx镜像
- 步骤 1.5(可选):运行Nginx容器以熟悉操作
- 步骤 2:创建自定义Nginx配置文件
- 步骤 3:创建Dockerfile
- 步骤 4:构建Docker镜像
- 步骤 5:运行Docker容器
- 步骤 6(可选):登录Docker Hub并推送镜像
- 6.补充内容
- Docker网络的基本概念
- Docker网络的基本命令
前言:
这是一篇简明docker快速入门并实践方法,目的是希望大家在半个小时内对docker快速了解并进行操作。故比较简洁(不过基本的使用方法都包含了),建议和那些更详细的知识帖结合起来看。
下面有两个视频,第一个视频看完可以对docker有基本的了解。第二个视频看完可以学会一些docker的实操操作。大家可以先看第一个视频后,再根据我下面分享的知识直接进行docker
的实践操作:
- 改变软件行业的技术!程序员、软件爱好者必须掌握的Docker,到底是什么?
- 保姆级Docker入门教程:10分钟从零开始彻底掌握 Docker,0 基础到实战部署
1. 什么是Docker?
Docker是基于Linux
容器技术的一种应用,它使得开发者能够将应用程序及其依赖打包成一个轻量级、可移植的容器。从而确保该应用能够在任何环境中一致地运行。相比传统的虚拟机技术,Docker更加高效和快速,因为它不包含整个操作系统,而是共享主机操作系统的内核。
2. Docker的基本概念
- 镜像(Image):
- 用于创建容器的只读模板,包含运行某个应用所需的所有代码、库、配置文件等。
- 使用
docker pull <image_name>
从Docker Hub拉取镜像。
- 容器(Container):
- 镜像的运行实例。它可以被启动、开始、停止、删除,并且可以通过Docker命令行接口与之交互。
- 使用
docker run <image_name>
启动容器
- 仓库(Repository):
- 存储和分享Docker镜像的地方。分为公共仓库(如Docker Hub)和私有仓库。
- 使用
docker login
登录Docker Hub
,docker push <image_name>
推送镜像。
- Dockerfile
Dockerfile
定义了构建镜像的步骤,通过docker build -t <image_name> .
命令创建镜像。- 示例:
FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
3. 安装配置Docker
访问Docker官网下载适合的版本。对于Windows和macOS用户,推荐使用Docker Desktop
,它集成了Docker
引擎、Docker CLI
客户端和其他实用工具。
-
安装Docker:
- 访问Docker官网(https://www.docker.com/products/docker-desktop),根据你的操作系统(
Windows
、macOS
、Linux
)下载并安装Docker Desktop
或Docker Engine
。 - 安装完成后,通过命令行(如
Windows
的PowerShell
或Linux
的Terminal
)运行docker --version
检查安装是否成功。
- 访问Docker官网(https://www.docker.com/products/docker-desktop),根据你的操作系统(
-
基本配置:
- 登录
Docker Hub
(可选,用于拉取或推送镜像):docker login
- 配置
Docker
以使用非默认设置(如代理、存储驱动等),可参考官方文档。
- 登录
4. Docker基本命令:
- 基本命令
docker --version
:检查Docker是否正确安装及当前版本。docker pull <image-name>
:从Docker Hub下载指定的镜像。docker images
:列出本地所有的镜像。docker run <image_name>
:启动容器。docker run -it --rm <image-name>
:基于镜像启动一个新的容器,并进入其内部shell环境。docker ps
:显示正在运行的容器。docker ps -a
:查看所有容器(包括停止的)。docker stop <container-id>
:停止指定ID的容器。docker rm <container_id>
:删除指定ID的容器docker tag <镜像名>:<标签> <仓库用户名>/<镜像名>:<标签>
: 为自己设置的镜像添加标签docker push <仓库用户名>/<镜像名>:<标签>
推送镜像到仓库
5. 简单实践:拉取Nginx镜像-自定义配置-推送镜像
步骤 1:拉取Nginx镜像
首先,从Docker Hub拉取官方的Nginx镜像:
docker pull nginx:latest
确认镜像已成功拉取:
docker images
你应能在列表中看到名为nginx
且标签为latest
的镜像。
操作解释:
docker pull
命令用于从Docker Hub或其他容器镜像仓库中拉取镜像。nginx:latest
指定了要拉取的镜像名称和标签(这里是最新的稳定版)。- 使用
docker images
命令查看本地已有的镜像列表,确认nginx镜像是否已成功拉取。
步骤 1.5(可选):运行Nginx容器以熟悉操作
docker run -d -p 8080:80 --name my-test-nginx nginx:latest
-d
表示以守护进程模式运行容器。-p 8080:80
将容器的80端口映射到主机的8080端口。--name my-test-nginx
为容器指定一个名称。
现在,你可以在浏览器中访问 http://localhost:8080
,应该会看到Nginx
的默认欢迎页面。
注意:在继续下一步之前,你可以使用 docker stop my-test-nginx
停止这个容器,并使用 docker rm my-test-nginx
删除它(如果你不再需要它的话,不过这里不删)。
docker stop my-test-nginx
docker rm my-test-nginx
步骤 2:创建自定义Nginx配置文件
在创建自定义配置文件前,先了解Nginx
默认配置的关键部分。Nginx
的主配置文件通常位于/etc/nginx/nginx.conf
,它定义了Nginx
的工作方式、事件处理、HTTP
服务器设置等。
现在,我们将创建一个自定义配置文件。首先,首先,创建一个新的目录用于存放你的Nginx
配置文件和Dockerfile
文件。例如,创建名为my-nginx-config
的目录:
mkdir my-nginx-config
cd my-nginx-config
然后,在该目录中创建一个名为nginx.conf
的文件,并添加以下内容:(这是一个简化的nginx.conf
示例,它保留了Nginx
的基本功能,并且容易理解)
user nginx;
worker_processes 1; # 对于简单实践,我们可以只使用一个工作进程
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024; # 每个worker进程的最大连接数
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf; # 默认包含的配置文件目录,可以添加自定义配置
# 定义一个简单的服务器块,用于测试
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 错误页面处理
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
步骤 3:创建Dockerfile
在同一目录下(my-nginx-config
),创建一个名为Dockerfile
的文件,并添加以下内容:
# 使用官方的Nginx镜像作为基础镜像
FROM nginx:latest
# 将当前目录下的nginx.conf文件复制到容器中的/etc/nginx/nginx.conf位置.
# 注意:这里假设Dockerfile和nginx.conf在同一目录下
COPY nginx.conf /etc/nginx/nginx.conf
# 如果有其他配置文件或静态资源,也可在此处复制
# COPY default.conf /etc/nginx/conf.d/default.conf
# COPY html/ /usr/share/nginx/html/
# 暴露80端口(Nginx默认端口)
EXPOSE 80
# 启动Nginx服务,并保持在前台运行(daemon off)
CMD ["nginx", "-g", "daemon off;"]
解释:
COPY nginx.conf /etc/nginx/nginx.conf
:这条指令将本地(构建上下文)的nginx.conf
文件复制到容器内的/etc/nginx/nginx.conf
位置,替换掉容器默认的Nginx
配置文件。EXPOSE 80
:这条指令告诉Docker
,容器在运行时需要监听80
端口(虽然这不是必需的,因为Nginx
默认监听80
端口,但声明一下是个好习惯)。CMD ["nginx", "-g", "daemon off;"]
:这条指令指定了容器启动时默认执行的命令。这里使用daemon off
参数是为了让Nginx在前台运行,这样Docker容器就不会因为Nginx进入后台而立即退出。
步骤 4:构建Docker镜像
返回上一级目录(包含Dockerfile
和nginx.conf
的目录),然后构建Docker
镜像:
docker build -t my-custom-nginx .
- 这将创建一个名为
my-custom-nginx
的Docker镜像。 -t
选项用于为镜像指定标签,.
表示当前目录为构建上下文。
步骤 5:运行Docker容器
使用刚刚构建的镜像运行容器:
docker run -d -p 8080:80 --name my-custom-nginx-container my-custom-nginx
- 这将启动一个名为
my-custom-nginx-container
的容器,并将容器的80
端口映射到主机的8080
端口。 - 访问
http://localhost:8080
,你将看到基于自定义配置的Nginx页面。
步骤 6(可选):登录Docker Hub并推送镜像
首先,登录Docker Hub:
docker login
然后,为镜像打标签(如果你的Docker Hub
用户名是your-username
):
docker tag my-custom-nginx your-username/my-custom-nginx
最后,推送镜像到Docker Hub
:
docker push your-username/my-custom-nginx
至此,你已经成功地创建了一个自定义的Nginx
镜像,并将其推送到了Docker Hub
。
6.补充内容
Docker网络的基本概念
- 网络(Networking):
- Docker容器可以通过Docker网络相互通信,也可以与外部网络通信。Docker提供了多种网络模式,如bridge、host、overlay等。
- 卷(Volumes):
- Docker卷用于持久化数据,即使容器被删除,卷中的数据仍然保留。这有助于数据的备份、恢复和迁移。
- Compose(docker-compose):
- Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过
docker-compose.yml
文件,可以轻松地配置和管理多个容器的启动、停止和连接。
- Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过
Docker网络的基本命令
docker network ls
:列出所有Docker网络。docker volume ls
:列出所有Docker卷。docker-compose up
:根据docker-compose.yml
文件启动所有服务。docker-compose down
:停止并移除由docker-compose.yml
定义的所有容器、网络、卷和默认网络。