### 在/etc/apk/repositories插入官方链接
echo "https://dl-cdn.alpinelinux.org/alpine/v3.11/main" > /etc/apk/repositories
echo "https://dl-cdn.alpinelinux.org/alpine/v3.11/community" >> /etc/apk/repositories
### 官方链接替换成国内TUNA源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
### 直接插入国内TUNA源
echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/main" > /etc/apk/repositories
echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/community" >> /etc/apk/repositories
# 在 alpine 之中,libc 是要单独安装的
apk add libc-dev
# 安装 gcc 编译器
apk add gcc
ln 命令:创建文件链接
文件权限就被修改为 777(可读可写可执行) && chmod 777 /root/start.sh \
# 插入下个代码块的内容
vi Dockerfile
# 根据Dockerfile构建自定义镜像 (path为`.`时为相对路径,读取当前路径下的Dockerfile文件)
docker build -t <name>:<tag> <path>
# 根据自定义镜像创建容器
docker run -d --name <container name> -p <本机端口,需打开防火墙>:22 <image name>:<image tag>
# 若为运行可手动运行
docker start <container name>
# 进入容器 (此方式进入无验证)
docker exec -it <container name> /bin/sh
# 拷贝文件并执行
docker cp /tmp/docker-cp/test.c <container name>:/tmp/test.c
gcc test.c -o a.out
./a.out
FROM alpine:latest
# env
ENV TZ=Asia/Shanghai
ENV PASSWORD=210713
RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.9/main/" > /etc/apk/repositories \
&& echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.9/community/" >> /etc/apk/repositories \
&& apk update \
&& apk upgrade \
&& apk add --no-cache bash bash-doc bash-completion \
&& apk add --no-cache openssh tzdata libc-dev gcc \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone \
&& sed -i 's/#Port 22/Port 22/g' /etc/ssh/sshd_config \
&& sed -i 's/#ListenAddress 0.0.0.0/ListenAddress 0.0.0.0/g' /etc/ssh/sshd_config \
&& sed -i 's/#ListenAddress ::/ListenAddress ::/g' /etc/ssh/sshd_config \
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
&& sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config \
&& ssh-keygen -A \
&& echo root:$PASSWORD | chpasswd \
&& rm -rf /var/cache/apk/* /tmp/*
# 开放端口
EXPOSE 22
# 容器启动时执行ssh启动命令
CMD ["/usr/sbin/sshd", "-D"]
FROM alpine:latest
# env
ENV TZ=Asia/Shanghai
ENV PASSWORD=210713
RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.9/main/" > /etc/apk/repositories \
&& echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.9/community/" >> /etc/apk/repositories \
&& apk update \
&& apk upgrade \
&& apk add --no-cache bash bash-doc bash-completion \
&& apk add --no-cache openssh tzdata libc-dev gcc \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
&& echo $TZ > /etc/timezone \
&& sed -i 's/#Port 22/Port 22/g' /etc/ssh/sshd_config \
&& sed -i 's/#ListenAddress 0.0.0.0/ListenAddress 0.0.0.0/g' /etc/ssh/sshd_config \
&& sed -i 's/#ListenAddress ::/ListenAddress ::/g' /etc/ssh/sshd_config \
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
&& sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config \
&& ssh-keygen -t dsa -P "" -f /etc/ssh/ssh_host_dsa_key \
&& ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key \
&& ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key \
&& ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key \
&& echo root:$PASSWORD | chpasswd \
&& rm -rf /var/cache/apk/* /tmp/*
# 开放端口
EXPOSE 22
# 容器启动时执行ssh启动命令
CMD ["/usr/sbin/sshd", "-D"]
-
安装docker:runoob
-
新建任意名称文件夹,存放Dockerfile文件
$ docker pull alpine #安装最小linux镜像
$ docker images # 查看已安装镜像
$ cd /
$ mkdir source/gcc-sys # 存放Dockerfile文件
$ vi source/gcc-sys/Dockerfile
# 拷贝 3.1 或 3.2 中的代码块于这个文件中
- 根据Dockerfile构建自定义镜像 (path为
.
时为相对路径,读取当前路径下的Dockerfile文件)
docker build -t <name>:<tag> <path>
- 根据自定义镜像创建容器
docker run -d --name <container name> -p <本机端口,需打开防火墙>:22 -e xxxx=xxxx <image name>:<image tag>
- 若未运行可手动运行
docker start <container name>
- 进入容器 (此方式进入无验证)
docker exec -it <container name> /bin/sh
- 拷贝文件并执行测试
docker cp /tmp/docker-cp/test.c <container name>:/tmp/test.c
gcc test.c -o a.out
./a.out