在编译时经常会发生依赖关系难以处理的问题,此时在容器中去编译就能一部分解决这种问题,本文将在Docker中搭建一个基本的容器用于编译。
安装Docker
请参看本站文章Docker 手记(持续更新)。
创建容器
创建镜像
- 创建一个文件夹用于存放
dockerfile和其他的脚本文件。 - 创建一个文件
dockerfile:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai
ADD sources.list /root/sources.list
RUN mv /etc/apt/sources.list /etc/apt/sources.list_bak
RUN cp /root/sources.list /etc/apt/sources.list
RUN apt update && apt install -y nano wget curl openssh-server git
RUN mkdir -p /var/run/sshd
RUN echo root:mypassword | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN curl -sLk https://raw.githubusercontent.com/nodesource/distributions/master/deb/setup_16.x | bash -
RUN apt update && apt install -y nodejs
ADD run.sh /run.sh
RUN chmod 755 /run.sh
EXPOSE 22 80 443
CMD ["/run.sh"] - 创建换源文件,在Ubuntu 软件仓库镜像使用帮助中选择自己的版本,然后把里面文本框的内容直接输入到
sources.list文件中,然后把这个文件和上面的dockerfile放在同一个文件夹里面即可。 - 创建入口脚本:将该文件保存为
1
2#!/bin/bash
/usr/sbin/sshd -Drun.sh然后和上面的dockerfile保存到同一个文件夹即可。 - 从
dockerfilebuild镜像:其中1
docker build -t myenv:1.0 .
myenv:1.0分别为镜像名和tag,可根据自身需求进行更改。
启动容器
使用如下命令启动容器:
1 | docker run -d \ |
启动后使用ssh连接对应的端口即可。
参考dockerfile
ubuntu 18.04
见上方。
CentOS 7.9
1 |
|