首页 互联网文章正文

docker制作镜像方法是怎样的?docker研发日常制作镜像操作是怎样的?

互联网 2024年10月11日 18:11 5 admin

doCKer制作镜像方法是怎样的?docker研发日常制作镜像操作是怎样的?

分类:虚机资讯 编辑:IT观察 浏览量:169 2021-04-20 10:48:58    docker包含了三个概念,分别是镜像,仓库和 容器,其中镜像是docker运行容器的一个重要的前提,更是docker的核心,仓库就是存放镜像的地方。docker镜像就好像是一个特殊的文件系统,它除了提供容器运行的程序,资源配置和库等的文件之外,还包括了一些需要的配置参数,那么docker制作镜像方法是怎样的?docker研发日常制作镜像操作是怎样的呢?下面 新网就给朋友们详细的来说明一下这些问题
  docker制作镜像方法是怎样的?
  docker制作镜像一般有2种方法:
  使用hub仓库中已有的环境安装自己使用的软件环境后完成iMage创建。
  通过Dockerfile,完成镜像image的创建。
  第一种:使用hub仓库中已有的环境,安装自己使用的软件环境后完成image创建。
  制作自己的Docker镜像环境,里面包括:
  (1)centos
  (2)golang
  1、docker pull centos(pull最新的centos系统)
  2、docker run -it centos /bin/bash(运行进入容器)
  3、在centos环境中创建work用户
  [root@132aaafe685d /]# useradd work
  [root@132aaafe685d /]# su - work
 
docker制作镜像
  4、下载go的Linux安装包,解压,配置环境变量
  [work@132aaafe685d ~]$ mkdir go APP && cd goapp && wget https://studygolang .com/dl/golang/go1.14.1.linux-amd64.tar.gz
  [work@132aaafe685d goapp]$ tar zxvf go1.14.1.linux-amd64.tar.gz
  [work@132aaafe685d goapp]$ vim ~/.bash_profile
  [work@132aaafe685d go]$ source ~/.bash_profile
  [work@132aaafe685d go]$ go version
  go version go1.14.1 linux/amd64
  [work@132aaafe685d go]$ echo $GOPATH
  /home/work/goapp
  [work@132aaafe685d go]$ echo $HOME
  此时,go的最基础环境就算配置好了,让我们写一个go程序,运行一下吧。
  5、go 实现"Hello World!"
  [work@132aaafe685d ~]$ vim /home/work/goapp/src/mAIn.go
  6、go run main.go
  [work@132aaafe685d ~]$ go run /home/work/goapp/src/main.go
  Hello World!
  7、docker commit -m "xxx" -a "authorName" containerID hub的称/镜像名称:tag
  8、docker commit && push到远端仓
  C:\Users\Administrator>docker commit -m "centos and go env" -a "wenhan" 132aaafe685d zhangwenhan/gobox:v1
  sha256:2f74c2d19210cC38da7267e5e8922dbafc1f33d9bf26FF01b27f335d9e6e8dec
  C:\Users\Administrator>docker login
  Authenticating with existing credentiAls...
  Login SUCceeded
  9、查看https://hub.docker.com/里的个人仓,push的image已入库
  10、如果要打包报错到本地
  docker save -o D:\DockerDesktop\vm-data\DockerDesktop\ebox\sunny_gobox.tar zhangwenhan/gobox:v1.0
  第二种:通过Dockerfile,完成镜像image的创建。
  1、创建镜像所在文件夹+Dockerfile文件
  (1)mkdir ebox && cd ebox
  (2)touch Dockerfile
  2、在Dockerfile文件中写入指令
  FROM ubuntu
  RUN apt-get update && apt-get install -y ruby ruby-dev
  格式说明:
  每行命令都是以 INSTRUCTION statement 形式,就是命令+ 清单的模式。命令要大写,“#”是注解。
  FROM 命令是告诉docker 我们的镜像什么。
  RUN 命令是在镜像内部执行。就是说他后面的命令应该是针对镜像可以运行的命令。
  3、创建镜像
  命令:docker build -t zhangwenhan/ebox:v2 .
  docker build 是docker创建镜像的命令
  -t 是标识新建的镜像属于 zhangwenhan的
  ebox是仓库的名称
  :v2 是tag
  "."是用来指明 我们的使用的Dockerfile文件当前目录
  4、创建完成后,从镜像创建容器
  docker run -t -i zhangwenhan/ebox:v2 /bin/bash
  Docker研发日常制作镜像操作
  一、编写NginxDemo Dockerfile
  # Version 0.1
  # 基础镜像
  FROM nginx
  # 维护者信息
  MAINTAINER Mr.Hao@51hsw.com
  # 将容器的工作目录设置为/app(当前目录,如果/app不存在,WORKDIR会创建/app文件夹)
  WORKDIR /app
  # 镜像操作命令
  RUN xxxx
  # 容器启动命令
  #指定nginx配置项目,--from=builder 指的是从上一次 build 的结果中提取了编译结果(FROM node:alpine as builder),即是把刚刚打包生成的dist放进nginx中
  COPY --from=builder app/nginx.conf /etc/nginx/nginx.conf
  #暴露容器80端口
  EXPOSE 80
  二、编译、安装日常操作
  编译
  # xx项目 1.0 tag(标签或版本)
  docker build -t xx:1.0
  查看
  #待上面命令执行完成
  docker images |grep xx
  #查看全部镜像
  docker images
  运行
  #使用xx-project进行运行 8080:本机使用访问的端口 80:Docker内启动的端口 xx-project-docker:指定启动之后容器名称 xx-project:1.0 镜像名称(由上面命令获得或者第一个命令 -t 的参数值)
  docker run -p 8080:80 -d --name xx-project-docker xx-project:1.0
  打包为tar
  docker save -o xx-project.tar xx-project:1.0
  加载tar包到其它docker环境
  #执行load,将.tar压缩文件加载到线上镜像
  docker load --input /home/root/xx-project.tar
  推送docker镜像到harbor
  #初始
  docker tag xx-project:1.0 core.harbor.domain:5000/xx-project/xx-project:1.0
  #推送
  docker push core.harbor.domain:5000/xx-project/xx-project:1.0
 
docker制作镜像
  三、停止、删除相关操作
  查看所有运行的容器
  #列出所有的容器 ID
  docker ps -aq
  #列表进程
  docker ps -a
  杀掉某个容器
  #kill 指定容器
  docker kill 容器ID 容器ID 容器ID ...
  #stop 指定容器
  docker stop 容器ID 容器ID 容器ID ...
  #停止所有容器
  docker stop $(docker ps -aq)
  删除容器
  #删除指定容器
  docker rm 容器ID
  #强删除
  docker rm -f 容器ID
  #删除所有容器
  docker rm $(docker ps -aq)
  #强删除所有容器
  docker rm -f $(docker ps -aq)
  删除镜像
  #查询所有镜像
  docker images
  #删除指定镜像
  docker rmi 镜像ID
  #强删除
  docker rmi -f 镜像ID
  #删除所有镜像
  docker rmi $(docker images -q)
  #强删除所有镜像
  docker rmi -f $(docker images -q)
  其它清空快捷操作
  # 清空所有不使用的镜像
  docker image prune --force --all
  # 或
  docker image prune -f -a
  # 清空所有停止的容器
  docker container prune -f
  awk删除操作
  #停止容器
  docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
  #删除容器
  docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
  #删除镜像
  docker rmi $(docker images | grep "none" | awk '{print $3}')
  管理image镜像难吗? 需要哪些依赖?
  管理image镜像难吗?
  docker cli提供了丰富的api接口, 可以非常方便地操作image镜像。
  需要哪些依赖?
  安装docker的系统(Windows或者Linux)。
  一旦容器从镜像启动后,二者之间就变成了互相依赖的关系,并且在镜像上启动的容器全部停止之前,镜像是无法被删除的。尝试删除镜像而不停止或销毁使用它的容器,会导致出错。
  docker制作镜像方法是怎样的?大家在使用docker制作镜像的时候,就可以按照上面的步骤去操作,这个步骤有些复杂,需要一点点的去理解和操作,对于docker研发日常制作镜像操作方法,我们也可以去了解一下,如果大家还有什么不明白的问题,都可以咨询新网的专业工作人员。


声明:免责声明:本文内容互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发

送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。本站原创内容未经允许不得转载,或转载时

需注明出处:新网idc知识百科

亿网科技新闻资讯门户 Copyright 2008-2025 南京爱亿网络科技有限公司 苏ICP备14058022号-4 edns.com INC, All Rights Reserved