Docker在服务器linux下配置及打包【bash指令】

本文详细介绍了如何在服务器上进行Docker用户管理,包括创建、列出镜像和容器,启动、进入、退出容器,安装依赖包,创建虚拟环境,打包镜像以及文件传输等关键操作,适合IT技术人员学习和参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.管理员将用户设置为docker用户 (注意:这里需要服务器管理员进行设置此句)

sudo gpasswd -a ${user} docker

2.列出docker镜像

docker images

3.列出正在运行的docker容器

docker ps

4.0.创建一个容器

docker pull python=3.10
docker pull python
docker images
# 运行基于python镜像的新容器
docker run -itd python:latest bash # -it 想运行一个 Python 容器并在前台与其交互   
# -d 后台运行容器并打印容器ID   
# bash: 这是你想在容器内运行的命令

### 以上创建的容器的id和name是系统生成的


# 创建时命名容器名和镜像名
docker run --name <container_name> <image_name> -itd python:latest bash

4.启动容器

docker start <container id/name>

5.进入容器(用attach的话,每次从container退出,container也跟着退出了。)

docker attach <container id/name>

6.进入容器(用exec的话,想要退出container但是让container继续在后台运行,就用exec)

docker exec -it <container name> /bin/bash

7.拉取python镜像

docker pull python=3.8 #这里python版本可根据自己的需求设置

8.安装依赖包(可以直接pip install 所用包)

但是这里建议安装venv虚拟环境进行安装所需包

# 切换到root用户
su -
# 安装sudo
apt-get update
apt-get install sudo

# 安装venv模块
sudo apt-get install python3-venv

# 创建虚拟环境
python -m venv myenv

# 激活虚拟环境
source myenv/bin/activat

# 激活了虚拟环境就可以安装需要的python包,假设需要numpy包
pip install numpy

#退出虚拟环境
deactivate

9.退出容器

exit # 也可以直接按ctrl+D

10.将容器打包成镜像

docker commit <comtainer id/name>  <image name>:<版本号>

11.将镜像打包成tar文件

docker save -o tar包名称.tar 待打包镜像名称:待打包镜像版本

# 将镜像tar打包到特定的文件夹下
docker save -o /path/to/save/tar包名称.tar 待打包镜像名称:待打包镜像版本

12.将tar包名称.tar传输到另一台服务器上(如果另一台服务器没有免密需要输入密码)

scp tar包名称.tar root@172.17.31.174:/data/

13.删除创建的镜像

docker rmi <镜像名称>:<创建时镜像版本号>

14.删除创建的容器

# 停止正在运行的容器
docker stop <container_id_or_name>
docker rm <container_id_or_name>

# 如果你想一步删除正在运行的容器,可以使用-f或--force选项:
docker rm -f <container_id_or_name>

参考连接:

Docker|从镜像到container|打开、进入、退出container_docker进入container-CSDN博客

docker部署计算任务(numpy测试)_docker python numpy-CSDN博客

【如何使用Docker将容器打包成镜像】_docker容器打包成镜像-CSDN博客

Linux这么在两个服务器直接传文件?_linux服务器之间传输文件-CSDN博客

<think>好的,我现在需要帮助用户了解如何使用DockerLinux服务器上创建安卓编译环境。首先,我得回顾用户提供的引用内容,确保正确引用相关信息。 用户提到了几个引用,比如引用[1]提到使用Docker命令创建Ubuntu容器并安装JDK和Gradle,但后来需要改用Dockerfile。引用[2]和[5]提到了使用Dockerfile构建镜像,包括安装SDK和平台工具。引用[3]和[4]涉及容器内的文件拷贝和权限问题,以及Jenkins的集成。 接下来,我需要组织步骤。通常,使用Dockerfile创建环境的基本步骤包括:选择基础镜像、安装依赖、配置环境变量、拷贝必要文件、构建镜像并运行容器。需要确保所有Android编译所需的工具如JDK、Android SDK、Gradle都被正确安装。 用户的问题可能涉及如何编写Dockerfile,如何处理权限问题,以及如何优化镜像大小。比如,引用[4]提到用户没有sudo权限,所以必须确保所有安装步骤在Dockerfile中以root身份完成,无需sudo。引用[5]中的sdkmanager命令可能需要自动确认,所以使用yes命令管道传递。 另外,要注意缓存问题。引用[2]提到使用--no-cache选项避免缓存,这可能在某些情况下需要,比如确保每次都获取最新的包。 可能还需要考虑如何将代码复制到容器中,如引用[3]的docker cp命令,但在Dockerfile中更常见的是使用COPY指令。不过用户可能需要挂载卷或者在构建时复制代码。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何与CI工具集成、优化构建速度、处理依赖冲突等。</think>### 如何使用 Docker 创建 Android 编译环境 #### **步骤 1: 编写 Dockerfile** 创建名为 `Dockerfile` 的文件,内容如下: ```dockerfile # 基础镜像选择 Ubuntu 20.04 FROM ubuntu:20.04 # 设置环境变量(避免交互式提示) ENV DEBIAN_FRONTEND=noninteractive # 安装基础依赖 RUN apt-get update && apt-get install -y \ curl \ unzip \ git \ openjdk-8-jdk \ && rm -rf /var/lib/apt/lists/* # 下载并安装 Android SDK 命令行工具 RUN mkdir -p /opt/app/android-sdk && cd /opt/app/android-sdk \ && curl -OL https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip \ && unzip commandlinetools-linux-7583922_latest.zip \ && rm commandlinetools-linux-7583922_latest.zip # 配置 Android SDK 环境变量 ENV ANDROID_HOME=/opt/app/android-sdk ENV PATH=${PATH}:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools # 安装指定 Android 平台和构建工具 RUN yes | sdkmanager --licenses \ && sdkmanager "platforms;android-30" "build-tools;30.0.3" "platform-tools" # 安装 Gradle(可选,若项目使用本地 Gradle 可跳过) RUN curl -OL https://services.gradle.org/distributions/gradle-7.4.2-bin.zip \ && unzip gradle-7.4.2-bin.zip -d /opt/app \ && rm gradle-7.4.2-bin.zip ENV GRADLE_HOME=/opt/app/gradle-7.4.2 ENV PATH=${PATH}:${GRADLE_HOME}/bin # 设置工作目录 WORKDIR /app ``` #### **步骤 2: 构建 Docker 镜像** ```bash docker build --no-cache -t android-builder:1.0 . ``` - `--no-cache` 确保每次构建时获取最新依赖[^2]。 #### **步骤 3: 运行容器并挂载代码目录** ```bash docker run -it --privileged -v /path/to/local/code:/app android-builder:1.0 /bin/bash ``` - `--privileged` 赋予容器权限(某些编译任务可能需要)[^3]; - `-v` 挂载本地代码到容器内的 `/app` 目录。 #### **步骤 4: 在容器内执行编译** 进入容器后,执行 Gradle 或命令行编译: ```bash gradle assembleRelease # 或使用 SDK 工具直接编译 ``` --- ### **关键点说明** 1. **基础镜像选择** Ubuntu 20.04 提供稳定的依赖库,适合 Android 编译环境[^1]。 2. **依赖安装** - JDK 8 是 Android 官方推荐的 Java 版本; - 使用 `sdkmanager` 安装指定 Android 版本,例如 `android-30`[^5]。 3. **权限与挂载** - `--privileged` 解决容器内设备访问问题; - 挂载代码目录避免重复拷贝[^3]。 4. **镜像优化** - 合并 `RUN` 命令减少镜像层; - 清理临时文件(如 `rm -rf /var/lib/apt/lists/*`)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值