您的位置:首页 > 运维架构 > Docker

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

2017-10-19 14:18 656 查看
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


  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: