zoukankan      html  css  js  c++  java
  • 程序员常用docker命令

    docker作为非常省事方便的工具,熟练使用docker的各种命令是一个运维必备的技能。作为普通算法程序员,我认为,只需要掌握一下部分常用命令即可(安装部分请自行问度娘,本文不再重复叙述):

    • 拉取(获取)镜像
    • 启动容器
    • 停止容器
    • 进入容器
    • 导出和导入容器
    • 容器后台运行,开机自运行
    • 删除容器
    • 删除镜像

    docker拉取容器命令: 

    # ubuntu终端运行,拉取一个ubuntu的镜像
    $ docker pull ubuntu

    docker 启动容器命令:

    以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

    # -i: 交互式操作。
    # -t: 终端。
    # ubuntu: ubuntu 镜像。
    # /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
    # 要退出终端,直接输入 exit:
    $ docker run -it ubuntu /bin/bash

    docker停止容器命令:

    $ docker stop <容器 ID>

    docker 启动容器命令:

    查看所有的容器命令如下:

    $ docker ps -a

    使用 docker start 启动一个已停止的容器:

    #  其中b750bbbcfd88是容器id
    $ docker start b750bbbcfd88 

    docker 进入容器命令:

    在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

    • docker attach

    • docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

    $ docker attach 1e560fca3906 
    # 1e560fca3906是容器id,对于正在运行的容器,使用该命令可以进入容器,输入exti会停止容器
    
    $docker exec -it 243c32535da7 /bin/bash
    # 使用exec进入容器,当使用exit退出时,容器不会停止,需要停止输入:
    $docker stop 243c32535da7
    # 就可以停止容器,只有停止的容器才能删除

    docker 导出和导入容器命令:

    知道容器id就可以导出容器:

    $ docker export 1e560fca3906 > ubuntu.tar
    # 1e560fca3906是容器id
    # ubuntu.tar是导出后的名称,默认会存在主目录下

    导入容器为镜像,有上面那个.tar文件就可以导入了

    $ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
    # docker/ubuntu.tar是容器快照文件的目录
    # test/ubuntu:v1是导入后镜像的名称,v1可以理解为版本,其实可以是其他字符或者连冒号带版本号都不输入也可以

    还有一种导出的方法,将容器注册为镜像文件,再导出镜像文件,导入的时候将镜像文件load下了即可

    $docker commit a404c6c174a2 mymysql:v1 
    # a404c6c174a2 容器id
    # mymysql:v1创建成镜像后的名称和版本,:v1这个不写也可以,v1还可以换成别的自定义字符
    # 执行这一句以后就在本地又生成了一个镜像名为mymysql:v1

    生成了镜像,就有把镜像导出来成本地镜像快照文件

    $docker save -o images_file.zip mysql:v1
    # images_file.zip保存成本地快照文件的名称
    # mysql:v1镜像的名称和版本
    # 执行这一句就会在本地主目录下生成一个本地快照文件images_file.zip

    导出镜像文件后怎么导入成其他设备上的镜像文件呢?毕竟我是为了方便部署嘛,能方便导入才是我们的目的所在:

    $docker load -i images_file.zip
    # images_file.zip本地快照文件
    # 执行玩就会在当前设备上生成新的镜像,可以输入:
    $docker images
    # 命令进行查看

    docker 容器后台运行&开机自运行命令:

    $docker run --restart always --name pyt_v5 -p 10010:10010 -v /home/ymc/yolov5:/home -it images_file /bin/bash /home/auto_service.sh
    # 解释一下, --restart always表示无论什么关闭了(断电莫名退出等情况)都重启docker
    # --name pyt_v5 将这个容器命名为pyt_v5
    # -p 10010:10010 将容器中的端口映射到本机,访问本机ip+端口号就能直接访问到容器暴露的端口服务了
    # -v /home/ymc/yolov5:/home将本机/home/ymc/yolov5映射到容器中,这样方便的将代码拷到容器又及时查看到容器中做了什么改变(增删改)
    # -it 交互模式
    # /bin/bash 打开方式
    # /home/auto_service.sh容器开启就运行的脚本

    其中/home/auto_service.sh 文件内容如下:

    cd /home
    export PYTHONIOENCODING=utf-8
    nohup python3 flask_server.py

    也不需要过多解释,就是进入容器/home目录下

    编码方式utf-8

    执行python3 flask_server.py

    docker 删除容器命令:

    $docker stop 54ads56f4a6ds4
    $docker rm 54ads56f4a6ds4
    # 如果容器已经停止了就不需要stop停止容器那一句
    # rm 就是删除容器的关键
    # 执行完查看一下容器没有那个id的容器就表示完成了,查看存在的容器命令为:
    $docker ps -a
    
    # 查看正在运行的容器为:
    $docker ps
    
    # 查看本机的所有容器命令为:
    $docker images

    docker 删除镜像命令:

    $docker rmi 4asd24f3aas32
    # 4asd24f3aas32镜像的id

    后面的我晚点再更新其他内容,有问题评论区交流哈!!

  • 相关阅读:
    sql语句左链接left join--3张表关联
    combobox下拉框
    sql in()批量操作
    spring事务传播特性实验(2):PROPAGATION_REQUIRED实验结果与分析
    【kubernetes】kubectl logs connection refused
    k8s1.4.3安装实践记录(3)下载基础镜像
    k8s1.4.3安装实践记录(2)-k8s安装
    k8s1.4.3安装实践记录(1)-etcd、docker、flannel安装配置
    python爬虫常用数据整理函数
    django-xadmin常用内容记录
  • 原文地址:https://www.cnblogs.com/yanmc/p/13188939.html
Copyright © 2011-2022 走看看