Docker常用命令

1. Docker命令

  1. service docker start: 启动docker
  2. service docker stop: 停止docker
  3. service docker restart:重启docker
  4. service docker status: 查看docker状态
  5. systemctl enable docker: 开机启动
  6. docker info:查看docker概要信息
  7. docker --help:查看docker帮助文档

2. 镜像常用命令

  1. docker images:列出docker下的所有镜像
  2. docker search XXXX:从dockerhub上搜索镜像的名字
  3. docker pull XXXX: 下载镜像(从换过的源),可以从dockerhub上搜索结果复制命令。注意: docker pull tomcat:latest 加版本号,默认latest
  4. docker tag 当前镜像名:TAG 仓库地址/镜像名称:TAG: 镜像打tag
  5. docker push仓库地址/镜像名称:TAG:镜像上传仓库
  6. docker rmi 镜像ID:删除镜像,注意:(1)如果后台有容器运行,需要docker rmi -f 镜像ID 强制删除(2)docker rmi h1 h2 删除多个,用空格分开

3. 容器常用命令

  1. docker run [optinos] IMAG:新建并启动容器,如果本地仓库有image则直接生成容器实例,没有则从dockerhub拉取下来再生成容器实例。
    options:
    -d:后台 运行容器 // 注意,这里直接单独-d如果没有程序在运行会立即自杀,必须有前台应用才会存活
    --name: 指定名字
    -P: 随机指定端口
    -p: 指定映射端口,eg:docker run -it -p 8888:8080 iamge (小写p,主机端口:容器端口)
    -i :以交互模式启动
    -t:为容器分配一个伪终端(-it 配合使用)
  2. docker ps:查看所有正在运行容器
    options:
    -a:查看所有的容器,包括当前正在运行的和曾经运行过的
    -l:查看上一个容器
    -q :只显示容器id
  3. 在容器的命令行终端中,exit:关闭容器并退出;Ctrl+P+Q:不关闭容器,退出(退出后怎么再次进入到容器的终端中,请看11)
  4. docker start 容器id或者容器名:启动容器(docker ps -a可以查看所有容器id,找到想要启动的容器id)
  5. docker restart 容器ID或者容器名:重启容器
  6. docker stop 容器ID或者容器名:停止容器
  7. docker kill 容器ID或者容器名:强制停止容器,
  8. docker rm 容器ID或者容器名:删除已停止的容器
    options:
    -f:强制删除容器,不管容器是否在运行
    如果想一次性删除所有容器,可以使用: docker rm -f $( docker ps -aq) //用ps查出所有id,传给rm 全部删除
  9. docker logs -f -t --tail 容器ID:查看容器日志,(-t加入时间戳 ,-f 刷新日志)
  10. docker top 容器ID : 查看容器内部进程
  11. 进入正在后台运行的容器,有两种方式:
    (1)docker attach 容器ID
    (2)docker exec 容器ID /bin/bash
    两者的区别在于:docker attach 容器ID会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止进程;docker exec 容器ID /bin/bash会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。
    此外,docker exec实质上的作用是在运行的容器中执行命令,可以不进入容器就对容器执行相应的指令,
    eg: docker exefc ID ls //不进入,执行ls命令
  12. docker cp /目录/文件名 容器ID:容器目录:复制文件至容器
  13. docker cp 容器ID:文件路径 本地路径: 复制容器文件至本地

4. DockerFile

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  1. 从已经创建的容器中更新镜像,并且提交这个镜像。比如说当我们run一个容器后,对容器内容进行了修改时,可以保存此容器,作为一个新的镜像,具体的命令使用方式可以参照这样:docker commit -m="描述" -a="作者" 容器ID 目标镜像名字:[标签名]

  2. 使用 Dockerfile 指令来创建一个新的镜像

4.1 Dockerfile常用指令
指令描述指令描述
FROM构造的新镜像是基于哪个镜像例如:FROM centos:v1COPY拷贝文件或者目录到镜像,用法同ADD例如:COPY ./startup.sh /startup.sh
MAINTAINER维护者信息例如:MAINTAINER yanglinENTRYPOINT运行容器时执行的shell命令例如:ENTRYPOINT ["/bin/bash","-c","/startup.sh"]ENTRYPOINT /bin/bash -c ‘/startup.sh’
RUN构建镜像时运行的shell命令,例如:RUN [“yum”, “install”, “http”] RUN yum install httpdVOLUME指定容器挂载点到宿主机自动生成的目录或者其他容器例如:VOLUME ["/path/to/dir"]
CMD运行容器时执行的shell命令,例如:CMD ["-c","/startup.sh"] CMD ["/usr/sbin/sshd","-D"] CMD /usr/sbin/sshd -DUSER为RUN,CMD,ENTRYPOINT执行命令指定运行用户例如:USER www镜像构建完成后,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户。
EXPOSE指定于外界交互的端口,即容器在运行时监听的端口EXPOSE 8081 8082WORKDIR为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录例如:WORKDIR /data
ENV设置容器内环境变量例如:ENV MYSQL_ROOT_PASSWORD 123456HEALTHCHECK健康检查HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/
ADD拷贝文件或者目录到镜像,如果是URL或者压缩包会自动下载或者自动解压例如:ADD hom* /mydir/ ADD test relativeDir/ARG在构建镜像时指定一些参数例如:FROM centos:6ARG age=100

形象说明:

FROM它的妈妈是谁(基础镜像)
MAINTAINER告诉别人,你创造了它(维护者信息)
RUN你想让它干啥(把命令前面加上RUN)
ADD往它肚子里放点东西(COPY文件,会自动解压)
WORKDIR我是cd(当前工作目录)
VOLUME给我一个存放行李的地方(目录挂载)
EXPOSE我要打开的门是啥(端口)
RUN奔跑吧

一图片概括,图片来自哔哩哔哩尚硅谷视频教程
在这里插入图片描述

4.2 构建步骤

总体步骤:

编写Dockerfile文件 -----> 编写DockerFile文件
docker build      -----> 构建镜像
docker run        -----> 使用镜像启动容器

DockerFile就是镜像的描述文件
  1. 构建DockerFile文件
FROM swr.cn-east-3.myhuaweicloud.com/algorithm-seed/algorithm-base

RUN mkdir /app

copy quartz.py /app

WORKDIR /app

CMD ["python","quartz.py"]

  1. 构建镜像
# 编译dockerfile,生成镜像
docker build -f /filepath/file -t namespace/name .
4.3 镜像导出
# 例如: docker save -o 要保存的文件名 要保存的镜像
docker save -o python-test.tar python-test-1
4.4 容器卷

容器卷简单来说就是保存容器中数据,使数据持久化,实现容器之间,主机与容器之间,共享数据。相当于挂载,可以使得主机与容器内同步更新!
创建容器卷的两种方式:
(1)直接使用命令,在创建镜像时直接添加容器卷。
eg:
docker run -it -v /主机绝对路径:/容器内目录 镜像名
docker run -it -v /主机绝对路径:/容器内目录:ro 镜像名 只读
(2)在dockerfile中编写,使用VOLUME指令
VOLUME ["/file1","/file2","/file3"] 该命令指定的是容器挂载点目录,而非是宿主机目录,该挂载点对应的宿主机目录为自动生成,这样是为例可移植性。

4.4.1 容器间传递共享

docekr run --volumes-from 容器名 镜像名
eg:

eg: docker run it --name dc02 --volumes-from dc01 zxd/centos       //dc02  与dc01 共享文件!!

//思考:当dc01被kill ,文件是否还存在?——存在,且共享均保持
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值