docker常用命令

docker常用命令

  1. 帮助类启动类命令
    • 启动docker ——systemctl start docker
    • 停止docker ——systemctl stop docker
    • 重启docker ——systemctl restart docker
    • 查看docker状态 ——systemctl status docker
    • 开机启动docker ——systemctl enable docker
    • 查看docker命令帮助文档——docker 具体命令 –help
  2. 镜像命令
    • 列出本地主机的镜像:docker images -a列出所有的镜像(包含历史镜像层)
    • 查找某个镜像:docker search 某个XXX镜像名字
    • 下载某个镜像:docker pull 某个XXX镜像名字
    • 查看镜像/容器/数据卷所占的空间:docker system df
    • 删除镜像:
    • 删除单个:docker rmi -f <�容器 id>
    • 删除多个:docker rmi -f 镜像名1:tag 镜像名2:tag
    • 删除全部:docker rmi -f $(docker images -qa)
      面试题:docker的虚悬镜像是什么?
      仓库名、标签都是的镜像,俗称虚悬镜像dangling image
  3. 容器命令
    • 列举所有的容器:docker ps
    • 启动已停止运行的容器:docker start 容器id或者容器自定义名
    • 停止容器:docker stop <�容器 id>
    • 重启容器:docker restart <�容器 id>
    • 退出容器两种方式:
    • exit退出,容器停止
    • ctrl+p+q退出,容器不停止
    • 删除容器:docker rm <�容器 id>
    • 强制一次删除多个容器实例:
    • docker rm -f $(docker ps -a -q)
    • docker ps -a -q | xargs docker rm
    • 查看docker容器日志:docker logs <�容器 id>
    • 启动的案例:
    • 前台交互启动:docker run -it <�容器名或id>
    • 后台守护启动:docker run -d <�容器名或id>
    • 查看容器内部进程:docker top <�容器 id>
    • (现在不常用)查看容器内部细节:docker inspect <�容器 id>
      将容器转为镜像
      docker commit 容器id 镜像名称:版本号
      注:转为镜像后曾经挂载的目录会消失
      将镜像转为压缩文件
      docker save -o 压缩文件名称 镜像名称:版本号
      将压缩文件解压回容器
      docker load -i 压缩文件名称
      Dockerfile编写案例
  • 启动案例:
  • 启动一个Nginx:docker run -d –name nginx -p 80:80 nginx:latest
  • 从镜像导出tar包:docker save -o images/nginx_webapp_1.0.0.tar nginx_webapp:1.0.0
    把tar包导入成镜像
  • docker load [options]
  • 接下来我们导入刚才上传的镜像。
  • docker load -i dockerdemo.tar
  • 若是只想备份images,使用save、load即可
  • 若是在启动容器后,容器内容有变化,需要备份,则使用export、import
    root@ubuntu:/lzc/dockerumages# docker run -d -it -p 9506:3306 –name=’mysql8′ ad3783848857 /bin/bash
    9b5941bd7cc0aa5c9fcab756be8a9b72bd798e1ff5490fd246e1cab44a628828
    root@ubuntu:/lzc/dockerumages# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    9b5941bd7cc0 ad3783848857 "/bin/bash" 13 seconds ago Up 11 seconds 0.0.0.0:9506->3306/tcp, :::9506->3306/tcp mysql8
    root@ubuntu:/lzc/dockerumages#
  • 进入正在运行的容器并用命令行交互:
    • docker exec -it 容器ID /bin/bash #(推荐使用)
    • 启动一个远程Shell:docker exec -it –name="自定义名称" <�容器 id> /bin/bash
    • docker attach 容器ID
  • 上上述两个的区别:
    • attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。
    • exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止。
      1. 从容器拷贝资料到主机:
    • dockercp容器ID:/容器内路径 /目的主机路径
    • 案例:docker cp 29b55e52a907:/tmp/lzc.txt /liuzc/
      [root@VM-4-11-centos ~]# docker cp 29b55e52a907:/tmp/lzc.txt /liuzc/ [root@VM-4-11-centos ~]# cd /liuzc [root@VM-4-11-centos liuzc]# ll total 24 -rw-r–r– 1 root root 0 Aug 4 00:23 lzc.txt -rw——- 1 root root 40 Jul 26 10:19 nohup.out drwxr-xr-x 2 root root 4096 Jul 7 23:18 project drwxr-xr-x 2 root root 4096 Jul 26 22:33 text -rw-r–r– 1 root root 116 Jul 26 10:17 text.sh drwxr-xr-x 3 root root 4096 Jul 17 15:15 vue_api_server -rw-r–r– 1 root root 300 Jul 26 10:23 xiazai.sh [root@VM-4-11-centos liuzc]#

      1. 导出导入容器到主机
  • export导出容器的内容留作为–个tar归档文件[对应import命令]
  • import从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
    案例:
  • 容器导出主机:docker export 容器id > 自定义文件名.tar
  • 从主机备份的镜像导入:cat 文件名.tar | docker import-镜像用户/镜像名:镜像版本号
    导入的案例:cat liuubuntu.tar | docker import – xiaoliu/ubuntu:3.7
    [root@VM-4-11-centos liuzc]# cat liuubuntu.tar | docker import – xiaoliu/ubuntu:3.7
    sha256:a81903cff14effbfe29738c31c613ba5b784e6b879a8585e5cfa7d9d843cb274
    [root@VM-4-11-centos liuzc]#
    [root@VM-4-11-centos liuzc]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    xiaoliu/ubuntu 3.7 a81903cff14e About a minute ago 77.8MB
    redis latest 3e42dd4e79c7 28 hours ago 117MB
    nginx latest b692a91e4e15 35 hours ago 142MB
    ubuntu latest df5de72bdb3b 39 hours ago 77.8MB
    [root@VM-4-11-centos liuzc]#

再运行导入的镜像文件,查看和之前的一样的文件都在。

[root@VM-4-11-centos liuzc]# docker run -it a81903cff14e /bin/bash
root@c26d29bfec50:/# cd /tmp/;ls
lzc.txt
root@c26d29bfec50:/tmp#

  1. docker镜像commit操作案例;
    在ubuntu容器中安装vim
    先更新我们的包管理系统:apt-get update
    然后在安装我们需要的vim:apt-get -y install vim

    • docker commit提交容器副本使之成为一个新的镜像
    • docker commit -m="提交的描述信息" -a="作者"容器ID要创建的目标镜像名:[标签名]
      [root@VM-4-11-centos ~]# docker commit -m="vim cmd add ok" -a="liuzc" 237917e83775 atlzc/myubuntu:1.2
      sha256:b384d6e50925b9814043a1d7c3c48c44a38ab56adbbbd1409735abc23626f571
      [root@VM-4-11-centos ~]# docker images
      REPOSITORY TAG IMAGE ID CREATED SIZE
      atlzc/myubuntu 1.2 b384d6e50925 10 seconds ago 173MB
      xiaoliu/ubuntu 3.7 a81903cff14e 24 hours ago 77.8MB
      redis latest 3e42dd4e79c7 2 days ago 117MB
      nginx latest b692a91e4e15 2 days ago 142MB
      ubuntu latest df5de72bdb3b 2 days ago 77.8MB
      [root@VM-4-11-centos ~]#
  2. docker本地镜像推送到腾讯云
    • 登录腾讯云容器镜像服务 Docker Registry
    • docker login ccr.ccs.tencentyun.com –username=100021607864
    • 从 Registry 拉取镜像
    • docker pull ccr.ccs.tencentyun.com/atlzc/mylzc:[tag]
    • 向 Registry 中推送镜像
    • docker tag [imageId] ccr.ccs.tencentyun.com/atlzc/mylzc:[tag]
    • docker push ccr.ccs.tencentyun.com/atlzc/mylzc:[tag]
      案例:
    • 登录腾讯云容器镜像服务
    • [root@VM-4-11-centos ~]# docker login ccr.ccs.tencentyun.com –username=100021607864
    • 从 Registry 拉取镜像
    • [root@VM-4-11-centos ~]# docker pull ccr.ccs.tencentyun.com/atlzc/mylzc:1.2
    • 向 Registry 中推送镜像
    • [root@VM-4-11-centos ~]# docker tag b384d6e50925 ccr.ccs.tencentyun.com/atlzc/mylzc:1.2
    • [root@VM-4-11-centos ~]# docker push ccr.ccs.tencentyun.com/atlzc/mylzc:1.2
  3. docker本地镜像推送到私有库
    • 下载私有库:docker pull registry
    • 运行本地私有库registry,相当于本地有个私有docker hub,运行命令:
    • docker run -d -p 5000:5000 -v /zzyyuse/myregistryl/:/tmp/registry –privileged=true registry
      默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
    • 容器ubuntu安装ifconfig命令:apt-get install net-tools
    • 制成新的镜像:docker commit -m="ifconfig cmd add ok" -a="atlzc" 0772accd60e4 lzcubuntu:1.3
      [root@VM-4-11-centos ~]# docker commit -m="ifconfig cmd add ok" -a="atlzc" 0772accd60e4 lzcubuntu:1.3

[root@VM-4-11-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lzcubuntu 1.3 eb59051a2894 8 seconds ago 174MB
ccr.ccs.tencentyun.com/atlzc/mylzc 1.2 b384d6e50925 2 days ago 173MB
xiaoliu/ubuntu 3.7 a81903cff14e 3 days ago 77.8MB
redis latest 3e42dd4e79c7 5 days ago 117MB
nginx latest b692a91e4e15 5 days ago 142MB
ubuntu latest df5de72bdb3b 5 days ago 77.8MB
registry latest d1fe2eaf6101 2 weeks ago 24.1MB
[root@VM-4-11-centos ~]#

  • 将新镜像lzcubuntu1.3修改符合私服规范的Tag

    • 按照公式:docker tag 镜像:Tag Host:Port/Repository:Tag
    • 自己host主机IP地址,填写同学你们自己的,不要粘贴错误
    • 案例:
    • docker tag lzcubuntu:1.3 110.42.144.210:5000/lzcubuntu:1.3
  • 修改配置使得支持http

    • cat /etc/docker/ daemon. j son
    • 往里面添加这个:" insecure- registries": [ " 110.42.144.210: 5000"]
  • 上述理由: docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。====>修改完后如果不生效,建议重启docker

  • dockerfile制作新的镜像
    FROM # 基础镜像
    MAINTAINER # 镜像是谁写的, 姓名+邮箱
    RUN # 镜像构建的时候需要运行的命令
    CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被覆盖。
    ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
    COPY # 只将宿主机文件拷贝到镜像中
    ADD # 拷贝加解压缩
    WORKDIR # 镜像的工作目录(刚进入容器,进入的目录)
    VOLUME # 挂载的目录
    EXPOSE # 暴露端口配置(对外发布的端口)
    ONBUILD # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。
    ENV # 构建的时候设置环境变量(定义一个变量,在后面可以多次复用)

原文链接:https://blog.csdn.net/Friendsofthewind/article/details/122004619

docker常用命令

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top
桂ICP备2023008908号-1