Docker 容器使用
Docker 容器是一个轻量级、可移植、自给自足的软件环境,用于运行应用程序。容器将应用程序及其所有依赖项 (包括库、配置文件、系统工具等)封装在一个标准化的包中,使得应用能够在任何地方一致地运行。
基本概念
镜像(Image)
容器的静态模板,包含了应用程序运行所需的所有依赖和文件。镜像是不可变的。
容器(Container)
镜像的一个运行实例,具有自己的文件系统、进程、网络等,且是动态的。容器从镜像启动,并在运行时保持可变。
常用命令
命令 | 功能 | 示例 |
---|---|---|
docker run | 启动一个新的容器并运行命令 | docker run -d ubuntu |
docker ps | 列出当前正在运行的容器 | docker ps |
docker ps -a | 列出所有容器(包括已停止的) | docker ps -a |
容器操作
获取镜像
如果本地没有所需的镜像,可以使用 docker pull 命令从 Docker Hub 下载:
docker pull ubuntu
启动容器
使用 ubuntu 镜像启动一个交互式容器:
docker run -it ubuntu /bin/bash
参数说明
-i
:交互式操作-t
:终端/bin/bash
:容器启动后执行的命令
后台运行
使用 -d 参数让容器在后台运行:
docker run -itd --name ubuntu-test ubuntu /bin/bash
进入容器
有两种方式可以进入运行中的容器:
使用 docker attach
docker attach container_id
注意:使用 attach 命令退出容器时,容器会停止运行。
使用 docker exec(推荐)
docker exec -it container_id /bin/bash
推荐使用此方法,因为退出容器时不会导致容器停止。
导出和导入容器
# 导出容器
docker export container_id > ubuntu.tar
# 导入容器快照
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
运行 Web 应用
以下示例展示如何运行一个 Python Flask Web 应用:
# 拉取镜像
docker pull training/webapp
# 运行容器
docker run -d -P training/webapp python app.py
# 指定端口映射
docker run -d -p 5000:5000 training/webapp python app.py
端口映射说明
-P
:随机映射端口-p 5000:5000
:将容器的 5000 端口映射到主机的 5000 端口
常见问题
权限不足问题
执行 docker 命令时出现权限不足错误:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
解决方法 1:使用 sudo
在 docker 命令前加上 sudo
解决方法 2:将用户添加到 docker 用户组
sudo groupadd docker # 添加 docker 用户组
sudo gpasswd -a $USER docker # 将当前用户加入到 docker 用户组
newgrp docker # 更新用户组
docker ps # 测试 docker 命令