Docker 容器使用学习笔记

什么是 Docker?

Docker 是一个开源的应用容器引擎,可以帮助开发人员将应用程序打包成独立的、可移植的容器,从而实现快速部署和扩展。

Docker 容器基础

容器定义

Docker 容器是一个独立运行的执行单元,包含应用程序及其所有依赖项。容器与虚拟机相似,但更轻量级,更快捷,更适合快速部署应用程序。

镜像定义

Docker 镜像是构建容器的蓝本,包含了启动容器所需的一切组件,包括代码、系统工具、库等。

容器与镜像关系

容器是基于镜像创建的独立实例。每个容器都有自己的文件系统、网络和进程空间,容器与容器之间相互隔离,互不干扰。

Docker 容器部署

获取镜像

首先需要获取所需的镜像,可以通过 docker pull 命令从 Docker Hub 或其他镜像仓库中获取。例如,获取 Ubuntu 镜像:

shellCopy Code
docker pull ubuntu

创建并启动容器

创建并启动容器需要使用 docker run 命令,例如,启动一个 Ubuntu 容器:

shellCopy Code
docker run -it --name my-ubuntu ubuntu

其中,-it 参数表示交互式终端,--name 参数指定容器名称,最后的 ubuntu 是基于的镜像名称。

进入容器

可以使用 docker exec 命令进入已经启动的容器,例如进入 my-ubuntu 容器:

shellCopy Code
docker exec -it my-ubuntu bash

复制文件

通过 docker cp 命令可以将文件从主机复制到容器中或从容器中复制到主机。例如,将主机上文件 index.html 复制到 my-ubuntu 容器 /var/www/html 目录下:

shellCopy Code
docker cp index.html my-ubuntu:/var/www/html/

停止与重启

停止容器需要使用 docker stop 命令,例如停止 my-ubuntu 容器:

shellCopy Code
docker stop my-ubuntu

重启容器需要使用 docker start 命令,例如重启 my-ubuntu 容器:

shellCopy Code
docker start my-ubuntu

Docker 实例

部署 Web 应用

  1. 获取 Nginx 镜像:
shellCopy Code
docker pull nginx
  1. 创建并启动 Nginx 容器:
shellCopy Code
docker run --name my-nginx -p 80:80 -d nginx

其中,-p 80:80 表示将主机的 80 端口映射到容器的 80 端口。

  1. 将 Web 应用文件复制到容器中:
shellCopy Code
docker cp index.html my-nginx:/usr/share/nginx/html/
  1. 访问 Web 应用:

在浏览器中输入 http://localhost 即可访问部署在 Docker 容器中的 Web 应用。

安装 MySQL 数据库

  1. 获取 MySQL 镜像:
shellCopy Code
docker pull mysql
  1. 创建并启动 MySQL 容器:
shellCopy Code
docker run --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

其中,-e MYSQL_ROOT_PASSWORD=123456 表示设置 root 用户的密码为 123456。

  1. 进入 MySQL 容器并登录:
shellCopy Code
docker exec -it my-mysql bash mysql -uroot -p
  1. 在 MySQL 中创建数据库并用户:
Copy Code
CREATE DATABASE test; CREATE USER 'test'@'%' IDENTIFIED BY 'test123'; GRANT ALL PRIVILEGES ON test.* TO 'test'@'%';
  1. 在主机上安装 MySQL 客户端并连接到 MySQL 服务器:
shellCopy Code
sudo apt-get install mysql-client mysql -h127.0.0.1 -P3306 -utest -ptest123 test

至此,我们成功地在 Docker 容器中部署了一个 MySQL 数据库。