目录
允许当前用户操作Docker(可选,避免每次使用docker都需要sudo)
介绍
Docker 是一个开源平台,用于自动化应用程序的构建、部署和运行。它通过容器技术将应用及其依赖打包在一个独立的、可移植的单元中,从而简化了跨环境的一致性和可靠性。
主要功能和特点
-
容器化:将应用及其所有依赖(如库和配置文件)打包成容器,使得应用可以在任何支持 Docker 的环境中一致运行。
-
镜像:容器的运行时实例是从 Docker 镜像创建的,镜像是一个包含应用及其所有依赖的只读模板。
-
轻量级:容器共享宿主机的操作系统内核,相比虚拟机,容器启动更快,占用资源更少。
-
可移植性:容器能够在不同的开发、测试和生产环境中无缝迁移,确保环境一致性。
-
隔离性:容器提供进程和文件系统的隔离,保证不同容器间不会互相影响。
-
版本控制:镜像可以版本控制,方便回滚到之前的版本或更新到新的版本。
常用组件
- Docker Engine:运行 Docker 容器的核心组件,包括守护进程和客户端接口。
- Docker Hub:官方的镜像仓库,用户可以在此下载公共镜像或上传自己的镜像。
- Docker Compose:工具,用于定义和运行多容器 Docker 应用,使用 YAML 文件来配置应用的服务、网络和卷。
安装Docker
卸载旧版本Docker(如果有的话)
sudo apt-get remove docker docker-engine docker.io containerd runc
更新apt包索引
sudo apt-get update
安装Docker所需的包
sudo apt-get install ca-certificates curl gnupg lsb-release
添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
设置Docker仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装最新版本Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
验证Docker是否安装成功
sudo docker run hello-world
或者
sudo docker --version
允许当前用户操作Docker(可选,避免每次使用docker都需要sudo)
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
在Docker中安装Nginx
拉取Nginx镜像
docker pull nginx
运行Nginx容器
docker run --name my-nginx -p 80:80 -d nginx
-p <主机端口>:<容器端口>
是 Docker 的端口映射选项,用于在主机和容器之间建立端口映射。- 在这个命令中,
nginx
容器内部的 Web 服务器默认运行在 80 端口。-p 80:80
使得你可以通过主机的 IP 地址和 80 端口访问 Nginx 服务,例如,通过浏览器访问http://localhost
就会请求到容器内运行的 Nginx 服务。如果你将端口号更改为其他值,例如
-p 8080:80
,那么主机的 8080 端口将映射到容器的 80 端口,这样你需要通过http://localhost:8080
来访问容器内的 Nginx 服务。
验证Nginx是否正常运行
打开浏览器访问 http://localhost 或服务器IP,如果看到Nginx的默认欢迎页面,则说明运行成功。
Docker 设置时区
在查看docker logs容器日志时,发现日志时间不准确
在运行容器时通过-e指定环境变量
docker run -e TZ=Asia/Shanghai image
在Dockerfile中设置ENV指令
ENV TZ=Asia/Shanghai
使用 --env-file 读取环境变量文件
先将环境变量写到一个文件中,例如env.list:
VAR1=value1
VAR2=value2
TZ=Asia/Shanghai
然后在运行容器时使用 --env-file 指定该文件
docker run --env-file env.list image
修改容器的环境变量(针对运行中的容器)
docker exec -it <容器ID> env | grep <变量名> # 查看当前变量值
docker exec -e <变量名>=<新值> <容器ID> env # 修改变量值