Docker容器镜像

打算在环境构建一个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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值