打算在环境构建一个Ubuntu镜像
1,创建 Dockerfile
touch Dockerfile
2,编写 Dockerfile
# 使用官方的 Ubuntu 基础镜像
FROM ubuntu:latest
# 设置时区为中国上海
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 更新软件包列表并安装一些基本工具
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
vim \
net-tools \
iputils-ping \
nano \
htop \
unzip \
openjdk-11-jdk \
--no-install-recommends
# 清理 apt 缓存
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# 设置工作目录
WORKDIR /app
# 暴露端口(如果有需要)
# EXPOSE 80
# 定义默认执行的命令
CMD ["bash"]
3,构建 Docker
切换在Dockerfile文件所在目录
docker build -t my-ubuntu-image .
执行这个操作可能会遇到以下问题
[+] Building 10.0s (2/2) FINISHED docker:default => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 671B 0.0s => ERROR [internal] load metadata for docker.io/library/ubuntu:latest 10.0s ------ > [internal] load metadata for docker.io/library/ubuntu:latest: ------ Dockerfile:2 -------------------- 1 | # 使用官方的 Ubuntu 基础镜像 2 | >>> FROM ubuntu:latest 3 | 4 | # 设置时区为中国上海 -------------------- ERROR: failed to solve: ubuntu:latest: failed to resolve source metadata for docker.io/library/ubuntu:latest: failed to do request: Head "https://registry-1.docker.io/v2/library/ubuntu/manifests/latest": dial tcp: lookup registry-1.docker.io on 8.8.8.8:53: read udp IP:55951->8.8.8.8:53: i/o timeout
- 建议用阿里云的镜像工具下的镜像加速器,注册使用,会有一个加速器地址
- 编辑 Docker 的配置文件,/etc/docker/daemon.json
{ "registry-mirrors": ["阿里云加速地址"], "dns": ["223.5.5.5", "223.6.6.6"],#可能是无法解析 "dns-opts": ["timeout:2", "attempts:2"], "ipv6": false }
- 执行命令判断某些是否生效
#阿里云镜像加速是否正确配置 docker info | grep -A 10 "Registry Mirrors #配置成功应该会有 #Registry Mirrors: #https://阿里云镜像加速ip.mirror.aliyuncs.com/
数字签名验证失败 的问题Sending build context to Docker daemon 623.9 MB Step 1/7 : FROM ubuntu:latest Trying to pull repository docker.io/library/ubuntu ... missing signature key
操作:一般是docker的版本太低导致,我卸载重新下载安装了最新版本的
#1. 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine #2. 安装依赖工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #3. 添加官方 Docker CE 仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #4. 安装最新版 Docker sudo yum install -y docker-ce docker-ce-cli containerd.io #5. 启动并设置开机自启 sudo systemctl enable --now docker #6. 验证版本 docker --version #7. 查看docker是否启动 sudo systemctl status docker
4,运行Docker
需要限制CPU核
--cpus=8
内存
--memory=32g
端口映射(为了与别的服务器的tcp连接)这样的话默认是bridge
-p 宿主机端口:容器端口
-v 映射宿主机:容器内地址(防止压测情况下,磁盘内存不够)
host模式
--network=host
挂载卷
-v /宿主机/路径:/容器/路径
docker run -it --cpus=8 --memory=32g --name my-ubuntu-container my-ubuntu-image
判断cpu核是否生效,docker内安装stress
#在容器内安装压力测试工具 apt update && apt install -y stress #运行压力测试(尝试占满线程)这里的数字根本外面本机的cpu核来 stress --cpu 128 --timeout 60s
在宿主机观察 CPU 使用率
docker stats my-ubuntu-container
将宿主机的压缩包放入 Docker 容器内
# 语法:docker cp <宿主机文件路径> <容器名或ID>:<容器内目标路径> docker cp /path/on/host/file.zip my-ubuntu-container:/tmp/