Docker-构建Ubuntu镜像篇

  • 1)搜索可用版本
方式一:(不太直观具体tag是多少)
docker search ubunut
方式二:直接网站上搜索:
根据所需版本复制即可
  • 2)  方法一: 镜像仓库中 拉取镜像
docker pull ubuntu:20.04
  • 2.1)查看本地镜像
docker images
  • 2.2)docker镜像更名(根据其IMAGE ID 对应tag修改,即也是拷贝一份的作用)
docker image tag 5f5250218d28 my_ubuntu:20.04
  • 2.3)将本地的ubuntu镜像复刻到Docker镜像中(可选)
直接拷贝文件系统方式(前提条件切到root权限)
cd /
# 直接排除不想打包的目录就行
tar -cvpf /tmp/system-amd64.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
# 拷贝系统文件到docker镜像中
cat /tmp/system-amd64.tar | docker import - [REPOSITORY]:[TAG]
  • 2.4)运行Docker
# 后面必须带bash(退出数据会丢失)
docker run -itd --name ubuntu-test my_ubuntu:20.04 bash
# 固化数据(-v将本地目录映射到docker内)
docker run -itd -v /home/xlwu:/home/xlwu --name ubuntu-test my_ubuntu:20.04 bash
# 查看运行状态
docker ps -a
  • 2.5)进入docker
# 查看运行的docker
docker container ls
# 或者
docker ps
# 进入对应容器
docker exec -it <CONTAINER ID> bash
  • 2.6)打包镜像
docker save -o test_unbuntu.tar my_ubuntu:20.04
  • 2.7)其他宿主机引用
docker load -input test_unbuntu.tar
注意: 运行时可能会遇到以下错误
通过查看所有运行的docker容器
docker ps -a
如果存在容器手动删除
docker rm -f ubuntu-test
  • 3)方法二:自己制作新镜像
    • 3.1) Dockerfile 介绍
Dockerfile 是用来定义 Docker 镜像构建过程的文本文件。它包含了一系列的指令和参数,用来告诉 Docker 如何组装一个镜像。以下是 Dockerfile 的详细介绍和常见指令解释:
Dockerfile 基本结构:
一个基本的 Dockerfile 可以包含以下几个部分:        
1.基础镜像声明:指定新镜像基于哪个已有的基础镜像
# 基础镜像是 Ubuntu 20.04(可使用本地已存在的镜像作为基础)
FROM ubuntu:20.04
2.维护者信息(可选):标记维护这个 Dockerfile 的人员信息
MAINTAINER Your Name <email@example.com>
3. 镜像构建指令:一系列指令按照顺序来构建镜像,这些指令可以包括复制文件、安装软件包、设置环境变量等
# RUN:用于在镜像内部执行命令,例如安装软件包或运行脚本
RUN apt-get update && apt-get install -y nginx
# COPY 和 ADD:用于将文件从构建环境复制到镜像中。
COPY ./app /app
# WORKDIR:设置工作目录,后续的指令会在这个目录下执行
WORKDIR /app
# ENV:设置环境变量
ENV NODE_ENV=production
# EXPOSE:声明容器在运行时监听的端口
EXPOSE 80
CMD 和 ENTRYPOINT:用于定义容器启动后执行的命令或者入口点
CMD ["nginx", "-g", "daemon off;"]
  • 3.2) Dockerfile 编辑
vim ./Dockerfile
# 基于本地my_ubuntu:20.04镜像构建
FROM my_ubuntu:20.04

# 创建一个名为"test1"的新用户
RUN useradd -m test1

# 设置myuser用户的密码
RUN echo 'test1:123456' | chpasswd

# 赋予sudo权限
RUN echo 'test1 ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# 切换工作目录
WORKDIR /home/test1

# 默认使用非特权用户运行应用(非root权限) 
USER test1

# 容器启动时执行的命令 
CMD ["bash"]

  •  3.3) 构建和使用 Dockerfile
# 将在当前目录中的 Dockerfile 构建一个名为 my-ubuntu-image 的镜像
docker build -t my-ubuntu-image .
  • 3.4)运行docker容器
docker run -itd --name ubuntu-test1 my-ubuntu-imag bash
  • 3.5)进入docker容器
# 不指定用户名称则为test1(二选一)
docker exec -it ubuntu-test1 bash
#指定特定用户进入docker(二选一)
# * -d :分离模式: 在后台运行
# * -i :即使没有附加也保持STDIN 打开
# * -t :分配一个伪终端
docker exec -it --user test2 -w /home/user2 ubuntu-test1 bash
  • 3.6)打包与引用
    同方法1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值