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