############################################################# # # # Docker核心技术总结 之 主要操作命令 # # # ############################################################# 1、Docker的理念 官方宣称:“一次安装,到处运行”。也就是说,在Docker容器(集装箱)上只需要一次性配置好环境,换到别的机子上就可以一键部署好,大大简化了操作,保证了开发环境和生产环境的一致性。 2、虚拟机与Docker 虚拟机:模拟了整个操作系统,包括硬件配置和软件驱动等等。笨重,耗资源。 Docker:软件容器封装技术,只保留核心文件系统,可以简单理解为极简Linux系统。轻量,快捷。 3、安装(一般为Linux环境) 条件:64位系统,内核版本2.6.32及以上。 查看内核版本:uname -r 查看官方文档 CentOS:https://docs.docker.com/engine/install/centos/ Debian:https://docs.docker.com/engine/install/debian/ 4、Docker三要素 镜像:一个只读的模板,类似于语言中的Class类。镜像一般是分层的,基于前一层但又相互独立。 容器:用镜像创建的应用实例,类似于语言中的实例对象。它可以被启动、停止、删除。每个容器都可看成极简Linux系统,且相互隔离。 仓库:存储镜像文件的场所。 5、国内镜像加速 1)先注册账号或者使用淘宝账号,登录搜索“镜像”关键字,点击第一个【容器镜像服务】,再点【管理控制台】,进入后左侧选择镜像加速器,复制加速地址。 2)可以通过修改daemon配置文件 /etc/docker/daemon.json 来使用加速器,加入以下内容: {"registry-mirrors": ["https://你的阿里云加速地址"]} # 如https://rv0ermrw.mirror.aliyuncs.com 3)重启Docker,$sudo service docker restart 4)查看是否使用了镜像加速,ps -ef|grep docker 6、Docker帮助命令 docker version:查看版本 docker info:显示Docker系统信息,包括镜像和容器数 docker --help:查看命令帮助 7、镜像命令 1)docker images [options]:列出本地镜像 options: -a:所有镜像文件(包含中间层镜像) -q:只显示镜像ID 2)docker search imgname:搜索Docker Hub上的镜像文件 3)docker pull imgname [:tag]:下载镜像文件 tag:镜像版本号,默认最新latest 4)docker rmi [options] imgID|imgname:删除镜像 # 操作镜像时,推荐用镜像ID options: -f:强制删除 docker rmi -f $(docker images -aq):删除所有镜像 8、容器命令 1)docker run [options] imgID|imgname:tag [command]:运行容器 options: -i:以交互式模式运行容器,通常与-t同时使用,即-it -t:为容器分配伪终端,通常与-i同时使用,即-it -p:指定端口映射,hostPort:containerPort -d:后台运行容器(注意:若后面没接命令语句,则会自动退出容器) --name:容器命名 2)docker ps [options]:列出正在运行的容器 options: -a:列出所有容器,包括历史运行的 -q:只显示容器ID -l:显示最近创建的容器 3)exit:退出容器,并停止运行 Ctrl + P + Q:退出容器,并后台运行 docker attach contID|contname:重进容器 docker exec -it contID|contname [command]:不进入容器情况下执行一些命令 4)docker stop contID|contname:停止容器 # 操作容器时,推荐用容器ID docker kill contID|contname:强制停止容器 docker start contID|contname:启动容器 docker restart contID|contname:重启容器 5)docker rm [options] contID|contname:删除容器 options: -f:强制删除 docker rm -f $(docker ps -aq):删除所有容器 6)docker logs [options] contID|contname:查看容器日志 options: -t:显示时间 -f:一直刷新显示 --tail n:显示尾部n行日志 docker top contID|contname:查看容器进程信息 docker inspect contID|contname:查看容器内部细节(如数据卷信息等) 7)docker cp contID|contname:容器内部路径 目标主机路径:将Docker文件拷贝到主机上 8)docker commit -a="作者" -m="提交信息" 容器ID 新镜像名[:版本]:提交容器副本,成为一个新的镜像文件 9、数据卷 容器产生的数据进行持久化。主机与容器、容器与容器之间实现数据共享,双向数据同步。可形象比喻成U盘。 生命周期:直到容器删除。 docker run -it -v 宿主机绝对路径:容器绝对路径[:options] imgID|imgname:运行容器,并添加数据卷 options: :rw:可读可写(默认) :ro:只读 docker run -it --volumes-from contID|contname imgID|imgname:运行容器,并从另一个容器上关联数据卷 10、DockerFile docker build -f /mydockerfile -t myimgname:tag . :构建镜像文件。注意最后有个“.”,表示在mydockerfile同目录下 编写DockerFile指令(大写): FROM:基础镜像,当前镜像是基于哪个镜像的。基础镜像scratch MAINTAINER:作者姓名和邮箱 RUN:镜像构建时会执行的命令。注意,每个RUN命令都会生成一层镜像,最好用"&"来连接多个RUN EXPOSE:对外暴露的端口 WORKDIR:运行容器后进入的工作目录 ENV:设置环境变量。可用$引用这个变量 COPY:纯拷贝到镜像 ADD:拷贝,会自动解压 VOLUME:添加数据卷 CMD:容器启动时会执行的命令。会被docker run后面的command覆盖 ENTRYPOINT:容器启动时会执行的命令。会被docker run后面的command追加 ONBUILD:当本镜像被继承时,会触发的操作 例: -------------------------------------------------------------------------- FROM centos MAINTAINER wangchunwang ENV path /usr/local WORKDIR $path RUN yum update # 换行符,&命令连接符 & yum install vim # 安装vim & yum install net-tools # 安装ifconfig EXPOSE 80 ENTRYPOINT echo $path ENTRYPOINT echo OK,成功 ENTRYPOINT /bin/bash # 如果前面用了ENTRYPOINT,这里就不能用CMD,否则容器不会启动!? -------------------------------------------------------------------------- 11、镜像导入导出 导出:docker save imgID|imgname:tag > imgfile.tar 导入:docker load < imgfile.tar 12、容器导入导出 导出:docker export contID|contname > contfile.tar 导入:docker import contfile.tar imgname:tag
至此。转载请注明出处,记得扫码打赏支持哦,谢谢!