您好,登录后才能下订单哦!
这篇文章主要介绍“docker容器的命令及使用”,在日常操作中,相信很多人在docker容器的命令及使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”docker容器的命令及使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
docker子命令概览 
子命令分类                             子命令 
Docker环境信息              info、version 
容器生命周期管理            create、exec、kill、pause、restart、rm、run、start、stop、unpause 
镜像仓库命令                login、logout、pull、push、 search 
镜像管理                    build、images、import、load、rmi、save、tag、commit 
容器运维操作                attach、export、inspect、port、ps、rename、stats、top、wait、cp、diff、update 
容器资源管理                volume、network 
系统日志信息                events、history、logs 
获取子命令详细信息 
docker COMMAND_NAME –help
Docker容器操作 
Docker守护进程绑定到多个地址 
  -H tcp://IP:PORT –H unix:///home/docker/docker.sock 
基于基础镜像运行容器:【base registry为Ubuntu】 
docker run –i -t ubuntu /bin/bash 
           -i 保证容器中的STDIN是开启的 
           -t 为创建的容器分配一个伪tty终端 
          --name CONTAINER_NAME 容器命名 
          -d 创建守护式容器 
带标签的Ubuntu镜像 ubuntu:12.04 
容器启停 
docker start|stop CONTAINER_NAME 
docker ps 查看启动的容器 
          -a 查看所有的容器 
docker ps –n –x  会显示最后x个容器,不论容器正在运行还是已经停止 
docker attach CONTAINER_NAME  附着到指定的容器上 
docker logs COMTAINER_NAME 获取容器的日志 
           -f 参数来监控docker的日志,与tail -f类似 
           -t 每条日志加上时间戳 
           --tail N 获取日志的最后N行内容 
           --tail 0 –f  来跟踪某个容器的最新日志,不必读取整个日志 
查看容器内的进程 
docker top CONTAINER_NAME 
在容器内部运行进程 
docker exec –d CONTAINER_NAME COMMAND 
            -d 需要运行一个后台进程 
docker exec -i -t CONTAINER_NAME /bin/bash  为执行的进程创建TTY并捕获STDIN。exit后不会终止容器相当于创建一个新的bash回话。 
docker run --restart=always …. 
           --restart 会检查容器的退出代码,并据此来决定是否要重启容器,always无论容器的退出代码是什么,Docker都会自动重启该容器;on-failure还接受一个可选的重启次数参数   --restart=on-failure:5  最多重启5次 
深入容器 
docker inspect CONTAINER_NAME        会对容器进行详细的检查,然后返回其配置信息,包括名称命令、网络配置以及很多有用的数据          
                             -f|—format=’{{ .State.Runing }}’   查看日志内容,可以同时制定多个容器 
删除容器 
docker rm CONTAINER_NAME 
docker rm ‘docker ps -a -q’删除所有 
                       -q 只返回容器的ID 
Docker安装之后,/var/lib/docker存放着docker镜像,容器以及容器的配置
Docker镜像操作 
列出所有docker镜像 
docker images 
拉取镜像 
docker pull registry_name|registry_name:xxx 
查找镜像 
docker search registry_name 
Docker Hub有两种类型的仓库: 
    用户仓库和顶层仓库 
    用户仓库是docker用户创建的 
    顶层仓库是由docker内部的人来管理的 
    Jamturol/puppet 
    Jamturol: 用户名 
    puppet:仓库名
构建镜像 
使用docker commit . 登录(Docker Hub)操作构建 
使用docker build和Dockerfile文件 
     docker commit CONTAINER_NAME|ID jamturol/apache2    提交的只是创建容器的镜像与容器的当前状态之间有差异的部分
Dockerfile文件 
# version: 0.01   注释 
FROM BASE_REGISTRY    # BASE_REGISTRY 作为新镜像的基础镜像 
MAINTAINER xxx, “xxx@gmail.com” #镜像的作者及作者的邮件地址 
RUN echo ‘xxx’> /path/to/file   #每条RUN指令都会创建一个新的镜像层 
RUN 。。。   # RUN指令会在shell里使用命令包装器/bin/sh -c来执行,如果不支持shell或者不希望shell运行,可以使用exec格式的RUN指令。 RUN [ “apt-get”,”install”,”-y”,”nginx” ] 
。。。 
EXPOSE 80   # Docker该容器内的应用程序将会使用容器的指定端口。可以指定多个EXPOSE指令来向外部公开多个端口。 
docker build -t=”jamturol/static_web” .   #运行Dockerfile 
              -t 为新镜像设置了仓库和名称 
              -t=”jamturol/static_web:v1” 为镜像设置一个标签,“镜像名:标签”,如果没有指定任何标签,Docker会将自动为镜像设置一个latest标签 
              --no-cache 略过缓存功能,每个包使用最新版本 
ENV REFRESHED_AT 2017-07-05   #设置一个名为REFRESHED_AT的环境变量 
深入探求镜像是如何构建出来的 
docker history REGISTRY_NAME|ID 
从新镜像启动一个容器 
docker run –d –p 80 --name static_web jamtuol/static_web nginx –g “deamon off;” 
       以前台方式运行nginx,-p公开哪些网络端口给外部 
docker ps –l     查看端口的映射情况 
docker port ID 80  查看容器端口的映射情况 
            -P  大写公开在Dockerfile中的EXPOSE设置的所有端口 
            -p IP:PORT1:PORT2 将容器的port2端口绑定到宿主机的port1端口上 
CMD 指定容器启动时要运行的命令,   CMD [“/bin/bash”,”-l”] 
使用docker run命令可以覆盖CMD指令 
ENTRYPOINT  docker run命令行中指定的任何参数都会被当作参数再次传递给ENTRYPOINT指令中指定的命令 
ENTRYPOINT [“/usr/sbin/nginx”] 
docker run 的--entrypoint标志覆盖ENTRYPOINT指令 
WORKDIR  在容器内部设置一个工作目录,ENTRYPOINT和CMD指定的程序会在这个目录下执行,可设置多个 
docker run –w /var/log … 
                     -w 在运行时覆盖工作目录 
ENV设置的环境变量,取值为$变量名,这些变量会被持久保存到从我们的镜像创建的任何容器中 
USER  指定该镜像会以什么样的用户去运行 
USER nginx  也可以是UID,指定user和group 
USER UID 
USER user:group 
VOLUME [“/opt/project”]   基于此镜像创建的任何容器,创建一个名为/opt/project的挂载点,也可以指定多个卷  
VOLUME [“/opt/project”,”/data”] 
ADD software.lic /opt/application/software.lic   将构建环境下的文件和目录复制到镜像中,在安装应用程序时,会使用Docker通过目的地址参数末尾的字符来判断文件源是目录还是文件 
COPY conf.d /etc/apache2   把本地conf.d目录中的文件复制到/etc/apache2/目录中。copy只关心在构建上下文中复制本地文件,而不会去做文件提取和解压的工作,如果目的位置不存在,Docker会自动创建所需要的目录结构 
ONBUILD  能为镜像添加触发器,当一个镜像被使用做其他镜像的基础镜像时,该镜像中的触发器将会执行,触发器会在构建过程中插入新指令,可以认为这些指令是紧跟在FROM之后指定的,触发器可以是任何构建指令 
ONBUILD ADD . /opp/src 
ONBUILD RUN cd /app/src && make
镜像打包及导入相关操作 
打包一个镜像 
docker save REPO_NAME:TAG > filename.tar 
docker load < filename.tar  加载一个镜像 
删除镜像 
docker rmi jamtuol/static_web 
docker run –v $PWD/website:/var/www/html/website:ro …. 
           -v 指定了卷的源目录(本地宿主机的目录)和容器里的目的目录,两个目录通过:来分隔,目的目录不存在,会自动创建,ro或者rw来定读写状态 
docker run --link redis:db ... 
           --link 标志创建了两个容器间的父子连接,需要两个参数一个是要连接的容器名字,另一个是连接后容器的别名 
docker run -p 4567 --name webapp --link redis:db -t -i -v $PWD/webapp:/opt/webapp jamturol/sintra /bin/bash 
           可以强制docker只允许有连接的容器之间互相通信。需要在启动docker守护进程时加上--icc=false,关闭所有没有连接的容器间的通信。被连接的容器必须运行在同一个docker宿主机上 
docker run 中加入--dns或者--dns-search为某个容器单独配置dns 
RUN shell.sh   运行shell脚本 
可以通过多个文件来执行构建 
Dockerfile、shell.sh、var.txt等 
docker run --privileged ... 
           可以启动docker特权模式,允许以其宿主机具有的(几乎)所有能力来运行容器,包括一些内核特性和设备访问 
docker wait CONTAINER_NAME 等待程序退出得到返回码 
docker run --cidfile=/tmp/CONTAINERID.txt 
           让docker截获容器id并将其存到--cidfile选项指定的文件 
docker run --rm ...  会在容器进程运行完毕后,自动删除容器,对于只用一次的容器和用完即扔的容器很有用 
在Dockerfile中指定了VOLUME时,在run对应的镜像启动容器,容器中就有对外的挂载点。可以通过inspect看到,如果没有指定,则没有对外的挂载点 
Dockerfile使用for 
RUN for var in v{v..8};do touch $DIRS/$var; done   # DIRS是ENV指定的环境变量 
serf是一个去中心化的服务发现和编排的解决方案,特点是轻量级和高可用,同时具备容错的特性 
docker run -p 53:53/udp ...  以udp的方式 
docker run -h CONTAINER_host_name 。。。 
docker各语言支持多种SDK
到此,关于“docker容器的命令及使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。