0


Docker-构建Ubuntu镜像篇

  • 1)搜索可用版本

    方式一:(不太直观具体tag是多少)

docker search ubunut

方式二:直接网站上搜索:

参考:
https://hub.docker.com/_/ubuntu/tags?page=&page_size=&ordering=-name&name=

根据所需版本复制即可

  • 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 protected]>
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
    
标签: docker ubuntu eureka

本文转载自: https://blog.csdn.net/w_melody/article/details/140364696
版权归原作者 w_melody 所有, 如有侵权,请联系我们删除。

“Docker-构建Ubuntu镜像篇”的评论:

还没有评论