Docker 容器篇

<1>. Docker run

1.参数:

    -i : 使得用户可以与容器进行交互

    -t :用于在容器中分配一个新的终端

    -d:将容器置于后台运行,使其成为daemon进程

    -P:将容器中的端口映射到主机的端口

    -p:可以自行指定容器和主机之间的端口映射关系

    --name:指定容器名称

    --always=restart :总是重启

    --rm:(与-d不能共同使用)在当你想临时开启一个测试容器,并不需要保存这些数据时使用

2.使用

#docker run -it ubuntu:14.04 /bin/bash   拉取ubuntu:14.04镜像并在其中运行bash应用

#docker run -d -P training/webapp python app.py       拉取training/webapp镜像并以daemon进行形式在容器中运行python app.py,并将容器中的端口映射到主机的端口

#docker run -d -p 80:5000 training/webapp python app.py   拉取training/webapp镜像并以daemon进行形式在容器中运行python app.py,并将容器中的5000端口映射到主机和上的80端口

<2> 进入容器

                    2.1 docker attach 容器名

                    2.2 docker exec -it [容器名] /bin/bash             

<3> docker ps [-a]

<4> docker logs [-f] 容器名

<5> docker port 容器名

<6> docker create 容器名

                     :使用docker create命令创建的容器处于停止状态,可以使用docker start来启动它

<7> docker start 容器名

<8> docker stop 容器名

<9> docker restart 容器名

<10> docker rm 删除容器

         -f:强制终止并删除一个运行中的容器

         -l:删除容器的所有连接,但保留容器

         -v:删除容器挂载的数据卷

<11> docker export [容器ID]  > xxx,tar        

                       :容器的导出

<12> cat xxx.tar  | docker import  - test/ubuntu:v1.0                                       

                        :将容器xxx.tar导入并生成一个test/ubuntu:v1.0的镜像

<think>好的,用户的问题是关于如何通过编译泰山源码来创建Docker容器。首先,我需要明确“泰山”具体指的是什么,可能是一个项目或者软件,但根据用户提供的引用内容,看起来可能和Android源码编译有关,因为引用[1]提到了Android8.0的Docker编译步骤。不过用户提到的是“泰山”,这可能是一个特定的项目名称,需要进一步确认。但根据现有信息,我会假设用户想将某个源码(比如Android)在Docker容器中编译,并创建镜像。 首先,用户提供的引用[1]中的命令是创建一个Docker容器,挂载主机目录到容器中,并进入bash环境。这可能用于在容器内编译源码。而引用[2]则是使用Maven和Jib插件构建Docker镜像的例子。用户可能希望结合这些步骤,将源码编译和容器创建整合起来。 接下来,我需要整理步骤:首先准备Docker环境,包括安装Docker和编写Dockerfile。然后挂载源码目录到容器中,进行编译。最后,将编译后的结果打包成镜像。可能需要分阶段构建,比如使用多阶段Dockerfile来减少镜像大小。 需要注意的是,用户提到的“泰山”可能需要特定的编译环境,比如Java、Maven或其他依赖项,因此在Dockerfile中需要安装这些工具。同时,用户可能希望将编译后的应用打包成镜像,以便部署,这时候可以使用类似Jib的工具,或者手动复制构建产物到镜像中。 可能的疑问点:用户是否已经拥有泰山的源码,以及具体的编译步骤是什么?由于信息有限,可能需要假设通用的步骤,比如使用Maven编译Java项目,然后构建Docker镜像。此外,用户可能希望优化镜像大小,使用多阶段构建,或者在编译过程中缓存依赖项以提高效率。 最后,根据用户提供的引用,引用[1]中的命令使用了-v参数挂载目录,这可能用于在容器内访问源码。而引用[2]展示了使用Jib插件直接构建镜像,无需Dockerfile。因此,可能需要提供两种方法:一种是基于挂载源码并在容器内编译,另一种是使用构建工具直接生成镜像。</think>### 通过泰山源码编译创建Docker容器的分步指南 #### 一、环境准备 1. **安装Docker** ```bash curl -fsSL https://get.docker.com | bash -s docker ``` 验证安装:`docker --version` 2. **创建源码目录** ```bash mkdir -p /mnt/taishan/src && cd /mnt/taishan ``` #### 二、创建Docker编译环境 1. **编写Dockerfile** ```dockerfile FROM ubuntu:20.04 RUN apt-get update && \ apt-get install -y build-essential git openjdk-11-jdk maven WORKDIR /app ``` > 说明:根据泰山实际需求调整基础镜像和依赖项[^1] 2. **构建基础镜像** ```bash docker build -t taishan-builder . ``` #### 三、挂载源码与编译 1. **启动交互式容器** ```bash docker run -v /mnt/taishan/src:/app/src -it taishan-builder /bin/bash ``` 2. **容器内编译操作** ```bash cd /app/src mvn clean package # 假设使用Maven构建 ``` #### 四、构建生产镜像(多阶段构建) ```dockerfile # 阶段1:构建环境 FROM taishan-builder as builder COPY . /app/src RUN cd /app/src && mvn package # 阶段2:运行时环境 FROM openjdk:11-jre-slim COPY --from=builder /app/src/target/*.jar /app/taishan.jar EXPOSE 8080 CMD ["java", "-jar", "/app/taishan.jar"] ``` #### 五、自动化构建(Jib插件方案) 在Maven项目中添加配置: ```xml <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.2.1</version> <configuration> <to> <image>taishan-image</image> </to> </configuration> </plugin> ``` 执行构建: ```bash mvn compile jib:dockerBuild # 直接生成Docker镜像[^2] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值