Docker常用命令(持续更新)

Docker的相关API地址:http://docs.docker.com/reference/api/remote_api_client_libraries/


1. docker run -i -t  ubuntu:14.04 /bin/bash        

    #创建一个容器,-t是临时终端 -i 表示保持STDIN的打开,即使不连接。

    docker run -d --name mytest ubuntu:14.04 /bin/bash 后台启动一个容器。

    #启动这个容器使用命令:

            #docker ps -l          //查看一下结束容器的ID 

            #docker start -i <容器ID>        //来启动

    #链接到这个容器的终端,使用命令:docker attach mytest


2.docker ps -a 

    #查看当前Docker运行的所有容器。如果需要删除已经结束的容器命令为:

docker rm $(docker ps -a -q) #删除所有容器  
docker rm <容器名or ID> #删除单个容器  
docker rmi <ID> #删除单个镜像  
docker rmi$(docker images | grep none | awk '{print $3}' | sort -r)


3.docker images

    #列出当前容器中所有的镜像。

4.docker start/stop 

    #容器管理

docker stop <容器名or ID> #停止某个容器  
docker start <容器名or ID> #启动某个容器  
docker kill <容器名or ID> #杀掉某个容器

5.创建自己的镜像

    tar -c . | docker import - yourImageName    #tar -c .执行的时候需要切换到主目录下,镜像打包。“|”命令是管道,docker import - youImageName 创建一个空的镜像文件系统,并且引入tar 打包的内容,然后进行标签。

    也可以使用命令:docker load < /home/youTarFile.tar 来创建。

6.docker export [OPTIONS] container / docker save [OPTIONS] image [image]

    #docker export导出文件系统的内容生成一个tar归档文件到标准的输出。也就是说,导出镜像为tar文件 。但是不会保留历史和层。无法回滚到之前的层。

    #docker save 可以做到层的回滚(layer),用于持久化镜像。

        ##显示镜像的所有层(layer)  命令为:docker images --tree


        比如,你要基于ubuntu14.04来建立自己的镜像。可以使用save命令。

        $ docker save -o myUbuntu14.04.tar ubuntu:14.04

        


docker import 的方式,是导入一个容器快照到本地仓库。容器快照将丢弃所有的历史记录和元数据信息(仅仅保持容器当时的快照状态)

另一个导入方式是:docker load < myUbuntu14.04.tar

7.通过超级终端类似的SSH工具来登录Docker ;

    #默认的用户名和密码是:docker/tcuser 。摆脱cmd / 平台的困扰。


8.docker 容器中安装JDK

    首先确认是否有wget 。。。如果没有。通过命令来安装。apt-get install wget.

    接下来下载JDK。。由于Oracle公司对JDK的下载做了签名。所以需要选择并点击需要下载的JDK,并且得到他可以下载的签名地址,留意该地址后面带有授权参数,如果没有。则wget下载会出错。



9.总结一下常用命令:

  • docker version 查看docker的版本号,包括客户端、服务端、依赖的Go等
  • docker info 查看系统(docker)层面信息,包括管理的images, containers数等
  • docker search <image> 在docker index中搜索image
  • docker pull <image> 从docker registry server 中下拉image
  • docker push <image|repository> 推送一个image或repository到registry
  • docker push <image|repository>:TAG 同上,指定tag
  • docker inspect <image|container> 查看image或container的底层信息
  • docker images TODO filter out the intermediate image layers (intermediate image layers 是什么)
  • docker images -a 列出所有的images
  • docker ps 默认显示正在运行中的container
  • docker ps -l 显示最后一次创建的container,包括未运行的
  • docker ps -a 显示所有的container,包括未运行的
  • docker logs <container> 查看container的日志,也就是执行命令的一些输出
  • docker rm <container...> 删除一个或多个container
  • docker rm `docker ps -a -q` 删除所有的container
  • docker ps -a -q | xargs docker rm 同上, 删除所有的container
  • docker rmi <image...> 删除一个或多个image
  • docker start/stop/restart <container> 开启/停止/重启container
  • docker start -i <container> 启动一个container并进入交互模式
  • docker attach <container> attach一个运行中的container
  • docker run <image> <command> 使用image创建container并执行相应命令,然后停止
  • docker run -i -t <image> /bin/bash 使用image创建container并进入交互模式, login shell是/bin/bash
  • docker run -i -t -p <host_port:contain_port> 将container的端口映射到宿主机的端口
  • docker commit <container> [repo:tag] 将一个container固化为一个新的image,后面的repo:tag可选
  • docker build <path> 寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image
  • docker build -t repo[:tag] 同上,可以指定repo和可选的tag
  • docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image
  • docker port <container> <container port> 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到
  • docker top <containerId> 查看docker 容器内部运行的进程


10.docker 设置Java环境变量(并且在容器停止后再次运行环境变量依然存在)

    #由于在容器内部去设置环境变量,当容器退出后,再次进入,会丢失环境变量设置的情况。每次都要手动去执行source /etc/profile 。这样做法很不合理。于是看了下官方文档,使用Makefile的方式来设置环境变量,再次进入环境变量依然存在!!

    具体方式:新建Makefile文件。。。

        #touch Makefile

        新建完成后,使用vi 来编写内容.为了测试,我的编写内容如下:

        

#环境变量保持测试
#author Rayn
#email liuwei412552703@163.com

FROM ubuntu:14.04

MAINTAINER Rayn "liuwei412552703@163.com"
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd

# 设置root ssh远程登录密码为123456
RUN echo "root:123456" | chpasswd


#此处为需要设置的环境变量
ENV JAVA_HOME /usr/share/jdk1.7.0_75
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

#容器开发端口设置,我这里设置22 和8080端口
EXPOSE 22 8080

需要注意:

#ENTRYPOINT,表示镜像在初始化时需要执行的命令,不可被重写覆盖,需谨记CMD,表示镜像运行默认参数,可被重写覆盖ENTRYPOINT/CMD都只能在文件中存在一次,并且最后一个生效 多个存在,只有最后一个生效,其它无效!需要初始化运行多个命令,彼此之间可以使用 && 隔开,但最后一个须要为无限运行的命令,需切记!
# 设置Tomcat7初始化运行,SSH终端服务器作为后台运行
ENTRYPOINT service tomcat7 start && /usr/sbin/sshd -D

文件编辑完毕之后。

在命令行执行命令来构建镜像,命令如下:

    #docker build -t ubuntu:myTestJdkEnv .

    ##这里需要注意的是,“."这个是当前目录,并且与Makefile所在的目录要一致。ubuntu:myTestJdkEnv 为自己要建立镜像的name和tag.





转载于:https://my.oschina.net/Rayn/blog/397813

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值