Docker 容器使用学习笔记
什么是 Docker?
Docker 是一个开源的应用容器引擎,可以帮助开发人员将应用程序打包成独立的、可移植的容器,从而实现快速部署和扩展。
Docker 容器基础
容器定义
Docker 容器是一个独立运行的执行单元,包含应用程序及其所有依赖项。容器与虚拟机相似,但更轻量级,更快捷,更适合快速部署应用程序。
镜像定义
Docker 镜像是构建容器的蓝本,包含了启动容器所需的一切组件,包括代码、系统工具、库等。
容器与镜像关系
容器是基于镜像创建的独立实例。每个容器都有自己的文件系统、网络和进程空间,容器与容器之间相互隔离,互不干扰。
Docker 容器部署
获取镜像
首先需要获取所需的镜像,可以通过 docker pull
命令从 Docker Hub 或其他镜像仓库中获取。例如,获取 Ubuntu 镜像:
shellCopy Codedocker pull ubuntu
创建并启动容器
创建并启动容器需要使用 docker run
命令,例如,启动一个 Ubuntu 容器:
shellCopy Codedocker run -it --name my-ubuntu ubuntu
其中,-it
参数表示交互式终端,--name
参数指定容器名称,最后的 ubuntu
是基于的镜像名称。
进入容器
可以使用 docker exec
命令进入已经启动的容器,例如进入 my-ubuntu
容器:
shellCopy Codedocker exec -it my-ubuntu bash
复制文件
通过 docker cp
命令可以将文件从主机复制到容器中或从容器中复制到主机。例如,将主机上文件 index.html
复制到 my-ubuntu
容器 /var/www/html
目录下:
shellCopy Codedocker cp index.html my-ubuntu:/var/www/html/
停止与重启
停止容器需要使用 docker stop
命令,例如停止 my-ubuntu
容器:
shellCopy Codedocker stop my-ubuntu
重启容器需要使用 docker start
命令,例如重启 my-ubuntu
容器:
shellCopy Codedocker start my-ubuntu
Docker 实例
部署 Web 应用
- 获取 Nginx 镜像:
shellCopy Codedocker pull nginx
- 创建并启动 Nginx 容器:
shellCopy Codedocker run --name my-nginx -p 80:80 -d nginx
其中,-p 80:80
表示将主机的 80 端口映射到容器的 80 端口。
- 将 Web 应用文件复制到容器中:
shellCopy Codedocker cp index.html my-nginx:/usr/share/nginx/html/
- 访问 Web 应用:
在浏览器中输入 http://localhost
即可访问部署在 Docker 容器中的 Web 应用。
安装 MySQL 数据库
- 获取 MySQL 镜像:
shellCopy Codedocker pull mysql
- 创建并启动 MySQL 容器:
shellCopy Codedocker run --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
其中,-e MYSQL_ROOT_PASSWORD=123456
表示设置 root 用户的密码为 123456。
- 进入 MySQL 容器并登录:
shellCopy Codedocker exec -it my-mysql bash mysql -uroot -p
- 在 MySQL 中创建数据库并用户:
Copy CodeCREATE DATABASE test;
CREATE USER 'test'@'%' IDENTIFIED BY 'test123';
GRANT ALL PRIVILEGES ON test.* TO 'test'@'%';
- 在主机上安装 MySQL 客户端并连接到 MySQL 服务器:
shellCopy Codesudo apt-get install mysql-client mysql -h127.0.0.1 -P3306 -utest -ptest123 test
至此,我们成功地在 Docker 容器中部署了一个 MySQL 数据库。