docker创建image方法以及常用指令介绍

docker -help    # 显示帮助
docker COMMAND -help    # 帮助信息更详细
docker start “容器名称”    # 启动一个或多个容器
docker stop “容器名称”    # 停止一个或多个运行的容器
docker images    # 列表docker镜像列表
docker info    # 显示系统的dokcer信息
docker ps    # 列表运行的容器
docker version    # 展示docker的版本信息
docker rm “CONTAINER ID”    # 删除指定的容器
docker rmi “CONTAINER ID”    # 删除指定的image
docker rmi -f “CONTAINER ID”    # 强制删除指定的image
docker pull “镜像名称”    # 获取docker镜像(从docker hub上获取)
docker push “images name:tag”    # 推送image到docker hub上(登录后才可以push)
docker diff “CONTAINER ID”    # 检查容器系统文件的改变
docker build    # 构建image(在提供Dockerfile的前提下)
docker login    # 登录docker注册中心(dockerhub)
docker logout    # 登出docker注册中心
docker export    # 根据容器id,导出指定压缩文件,(docker export 容器id > test.tar)
docker import    # 导入容器快照
    从本地文件导入:cat test.tar| docker import - test/demo:v0.1
    从远程文件导入:docker import http://xxx.xxx/domo.tar demo:v0.1
docker exec    # 运行镜像时执行command指令
    使用方法:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
    domo: docker exec -i -t “CONTAINER ID” /bin/bash
    docker exec的参数:
        --help    # 打印使用方法
        -d(--detach)    # command后台运行
        -e(--env list)    # 设置环境变量
        -i(—interactive)    # 保持打开标准输出,在没有附加参数的情况
        -t(—tty)    # 分配一个伪终端(-t通常和-i一起使用) 
docker run “images name:tag”    # 在一个新容器中运行一个command
    使用方法:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
         demo : docker run -it “image name:tag” --name “指定一个名称” /bin/bash    # 运行image
    docker run 的参数:
        -p    # 将容器的端口映射到本地
        -i(—interactive)    # 保持打开标准输出,在没有附加参数的情况
        -t(—tty)    # 分配一个伪tty(-t通常和-i一起使用)
        --name        执行一个名称 
 
 
制作docker镜像有两个方法,一个是使用docker commit;另外一种是使用Dockerfile 
commit制作image的demo:
例如:要在image(docker.xxx.me/xxx/onebox-dev:v0.1)上做一个定制的jenkins image,
1、首先在制作一个docker镜像时需要获取一个基础image
docker pull docker.xxx.me/xxx/onebox-dev:v0.1    # 获取镜像

2、启动images
docker run -it —name -p 8080:8080 jenkins docker.xxx.me/xxx/onebox-dev:v0.1 /bin/bash 

3、在浏览器中打开jenkins,访问地址为:http://127.0.0.1:8080,然后根据自己需求配置jenkins,
4、jenkins配置好后,查看容器的进程,根据容器id检查容器系统中变更的文件,最后提交文件变更,生成一个新的容器
    docker ps    #查看docker容器进程

    docker diff “CONTAINER ID”    #查看容器系统中变更的文件(A:新增的文件;C:修改的文件;D:删除的文件)

    docker commit -m “备注” 新容器名称:tag    #commit时可以使用-m添加备注,要指定生成的容器的名字以及tag
    docker images    #查看image列表,新生成的image会显示出来    

 

Dockerfile制作image的demo:
首先介绍下Dockerfile的常用指令:
COPY:复制文件指令;
    格式:COPY <源路径(本地路径)> <目标路径(image中路径)>
    demo:COPY start.sh /root/start.sh
ADD:ADD和COPY的性质和格式是一样的,ADD新增了一些功能,比如ADD会自动解压被复制的压缩文件,ADD的源路径可以是                   url,ADD会尝试去下载需要的资源;
    格式:ADD <源路径(本地路径)> <目标路径(image中路径)>
    demo:ADD start.tar.gz /root/start.sh
CMD:容器启动指令,用户可以容器运行时执行CMD命令来代替image中设置的指令;
    shell格式:CMD <shell 命令>
    exec格式:CMD [“可执行文件”,“参数一”,“参数二”。。。]
ENTRYPOINT:ENTRYPOINT和CMD命令一样,都是指定容器启动程序及参数,ENTRYPOINT也可以在容器运行时替换image内部的指令,需要—entrypoint来指定替换;当指定了ENTRYPOINT时,CMD将不再是可以指定的命令,只是做ENTRYPOINT的一个参数存在;如:ENTRYPOINT "<CMD>”
    格式:ENTRYPOINT [“可执行文件”,“参数一”,“参数二”...]
ENV:设置环境变量;可以在容器运行和构建过程中使用
    格式:ENV <key> <value>
         ENV <key1>=<value1> <key2>=<value2>...
ARG:构建参数,只能在image过程中使用
    格式:ARG <参数名>[=<默认值>]
EXPOSE:声明端口
    格式:EXPOSE <端口号1> <端口号2>
USER:指定当前用户
    格式:USER <用户名>
RUN:构建时运行指令
    格式:RUN <指令1>&&<指令2>

 例如,现在需要在centos7-java:v1(本地已存在)镜像的基础上使用Dockerfile制作一个image,Dockerfile如下:

FROM centos7-java:V1

ENV http_port=10001

# 创建data目录,赋予全部权限
RUN mkdir -p /data/configserver && chmod -R 777 /data/configserver

# 复制编译好的包到镜像中
COPY magina.tar.gz /data/configserver/magina.tar.gz

# 解压工程文件
RUN cd /data/configserver && tar -zxvf magina.tar.gz

# 删除工程压缩包
RUN rm -rf  /data/configserver/magina.tar.gz

# 暴露服务端口号
EXPOSE ${http_port}

ENTRYPOINT ["/data/configserver/start.sh"]
进入到Dockerfile文件的目录中,执行构建命令:
docker build -t image-name:tag .    # 会在终端中输出构建步骤
最后使用docker images指令查看是否有新生成的image 
docker build -t image-name:tag .    # 会在终端中输出构建步骤
最后使用docker images指令查看是否有新生成的image

  

 

转载于:https://www.cnblogs.com/veitch-623/p/7692242.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值