精华内容
下载资源
问答
  • 主要介绍了Docker 常用命令整理,需要的朋友可以参考下
  • docker常用命令整理

    2018-11-19 16:55:52
    docker虚拟化开发当中整理常用命令。实用。回头再分享k8s的
  • 自己整理总结的docker命令,一般常用的都在里面,包括升级最新版本docker,建仓库,数据卷常用命令,查看,建立,删除等等。
  • 主要介绍了Docker 常用命令的知识,这里介绍了Docker 的操作容器,Image,网络操作,等内容,有需要的小伙伴可以参考下
  • 主要介绍了Docker 常用命令整理及使用注意事项总结的相关资料,这里整理了Docker 的常用命令,说明这些命令是什么意思及使用方法,需要的朋友可以参考下
  • Docker常用命令整理

    千次阅读 2020-04-11 22:06:47
    整理平时经常用到的docker命令

    整理平时经常用到的docker命令。

    1、管理型命令

    1.1 docker volume

    在宿主机创建数据卷,用于挂载到docker容器内部,可实现数据和容器相分离。相关命令及执行结果如下:

    # 创建一个数据卷
    docker volume create volumeName
    
    # 查看现有数据卷
    docker volume ls
    
    # 查看数据卷详细信息
    docker volume inspect volumeName
    
    # 带提示删除所有未使用数据卷
    docker volume prune
    
    # 强制删除所有未使用数据卷 无提示
    docker volume prune -f
    
    # 删除一个数据卷
    docker volume rm volumeName

    2、执行型命令

    2.1 docker search

    搜索镜像命令

    # 使用关键字java搜索镜像
    docker search java

    2.2 docker images

    查看本地镜像

    docker images

    2.3 docker pull

    拉取远端镜像到本地

    指令格式:docker pull [OPTIONS] imageName[:tagVersionName]

    # 拉取alpine的latest镜像到本地
    docker pull alpine
    
    # 拉取3.11.5版本alpine镜像到本地
    docker pull alpine:3.11.5

    2.4 docker run

    使用镜像创建容器并运行

    指令格式:docker run [OPTIONS] imageName [COMMAND] [ARG...]

    # -d 后台运行
    # -p 8080:80 宿主机的8080端口映射到docker内部的80端口
    # --name docker-nginx 启动后的容器名称为docker-nginx
    docker run -d -p 8080:80 --name docker-nginx nginx

    2.5 docker ps

    查看本地已创建的容器

    指令格式:docker ps [OPTIONS]

    # 查看运行中的容器
    docker ps
    
    # 查看所有容器 包括正在运行和已经停止运行的
    docker ps -a
    
    # 查看所有容器中名字含'docker'的容器
    docker ps -af name=docker

    2.6 docker kill / stop

    有kill和stop两个命令可用于停止一个或多个运行中的容器

    kill指令格式:docker kill [OPTIONS] imageName [imageName1,imageName2,imageName3...]

    stop指令格式: docker stop [OPTIONS] imageName [imageName1,imageName2,imageName3...]

    # 通过id直接关闭容器
    # docker kill a0fbf4519279
    # 通过容器名称直接关闭容器
    docker kill docker-nginx
    
    # 通过id直接容器 默认等待十秒 超时强制关闭
    # docker stop a0fbf4519279
    # 通过容器名称关闭容器 默认等待十秒 超时强制关闭  等价于 docker stop -t=10 docker-nginx
    docker stop docker-nginx

     2.7 docker start / restart

    有start和restart两个命令可用于启动或重启一个或多个容器

    start命令格式:docker start [OPTIONS] imageName [imageName1,imageName2,imageName3...]

    restart命令格式:docker restart [OPTIONS] imageName [imageName1,imageName2,imageName3...]

    # 启动容器可通过容器id或者容器名称
    # 通过容器名称启动容器,如果已启动则忽略
    docker start docker-nginx
    
    # 通过容器名称重新启动容器,如果未启动则直接启动,如果已启动则关闭再启动
    docker restart docker-nginx
    
    # 重启容器,如果容器正在运行最多等待5秒用于停止容器,不加-t参数默认最多等待10秒
    docker restart -t 5 docker-nginx

    2.8 docker cp

    从宿主机和docker容器之间复制文件,不论docker容器是否已经运行,都可以执行复制操作

    从宿主机向docker内部复制文件:docker cp [OPTIONS] <宿主机路径> containerName:<docker内文件或者文件夹路径>

    从docker内部向宿主机复制文件:docker cp [OPTIONS] containerName:<docker内文件或者文件夹路径> <宿主机路径> 

    # 将nginx容器内部的/etc/nginx文件夹复制到本机当前运行目录
    docker cp nginx:/etc/nginx ./
    
    # 将nginx容器内部的/etc/nginx/nginx.conf文件复制到本机当前运行目录
    docker cp nginx:/etc/nginx/nginx.conf ./
    
    # 将本机当前运行目录下的的test文件复制到nginx容器内部的/etc/nginx/目录下
    docker cp ./test nginx:/etc/nginx/

    ....待完善....

    展开全文
  • Docker 常用命令整理

    2020-07-31 21:24:30
    docker run ubuntu:18.04 echo hello docker表示用18.04的ubuntu镜像新建一个容器,用这个容器来执行echo命令 docker run -i -t ubuntu [bash] 表示一个运行一个最新的ubuntu容器,并且进入到这个容器的bash中(不加...

    容器

    docker run ubuntu:18.04 echo hello docker表示用18.04的ubuntu镜像新建一个容器,用这个容器来执行echo命令

    • docker run -i -t ubuntu [bash] 表示一个运行一个最新的ubuntu容器,并且进入到这个容器的bash中(不加i虽然可以进入bash,但是不可交互)。退出容器用exitctrl+D(退出时会关闭&不删除容器)
    • docker run -i -t -d ubuntu 容器后台运行,运行时的输出不会出现在宿主机的控制台上
    • docker run --name containerName -it ubuntu bash 指定容器的名称
    • docker ps 查看正在运行的容器
      • -a : 查看所有容器,包括已经创建但是不在运行中的容器
    • docker logs <id/name> 查看后台运行的容器的输出
    • docker start id/name 启动一个已经停止的容器
    • docker stop id/name 停止一个容器
    • docker top name 查看容器内部运行的进程
    • docker inspect name 查看容器的配置和状态

    进入后台运行的容器

    • docker attach 从容器中退出时,容器也会停止
    • docker exec 不会导致容器的停止
    • docker restart [-t seconds] id 重启正在运行的容器, -t表示等待的时间(秒)

    docker run -d --name containerTest3 ubuntu:18.04docker run -itd --name containerTest2 ubuntu:18.04效果不一样,前者创建后就被停止了,后者在后台保持运行状态

    容器的导入和导出

    导出容器的状态,导入后变成镜像,不会保存原始镜像的layer信息。

    导出容器

    • docker export containerid> ubuntu.tar

    导入容器

    • cat ubuntu.tar | docker import - mysystem:mytag : 导入成了一个image,可以用docker images查看,
    • docker import dockertest.tar -- centos:tag
    • docker import - 容器:tag < fileName.tar : windows下可以这样导入
    [wangchao@localhost ~]$ cat containerTest2.tar | docker import - mysystem:tags
    sha256:1c174e9fbdee72b5427701e22033105a2c41d626f418501497240902bc5667ac
    
    [wangchao@localhost ~]$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mysystem            tags                1c174e9fbdee        8 seconds ago       64.2MB
    ubuntu              18.04               2eb2d388e1a2        6 days ago          64.2MB
    nginx               latest              8cf1bfb43ff5        9 days ago          132MB
    training/webapp     latest              6fae60ef3446        5 years ago         349MB
    

    删除容器

    删除容器时容器必须已经是关闭状态

    • docker rm -f id
    • docker container prune 清理掉所有终止状态的容器

    容器连接

    端口映射

    • docker run -d -P training/webapp python app.py 映射到主机的随机端口(大P)

    • docker run -d -p 5000:5000 training/webapp python app.py 自行指定端口(小p)

    • docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py 指定主机的网络地址,将127.0.0.1:5001映射到容器的5000端口

    • docker port name [port] : 查看映射关系

    • run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py 绑定udp端口需要再端口后加上/udp

    容器互联

    新建网络

    [wangchao@localhost ~]$ docker network --help
    Usage:  docker network COMMAND
    Manage networks
    
    Commands:
      connect     Connect a container to a network
      create      Create a network
      disconnect  Disconnect a container from a network
      inspect     Display detailed information on one or more networks
      ls          List networks
      prune       Remove all unused networks
      rm          Remove one or more networks
    
    • docker network create -d bridge test-net 建立一个网络
      • -d : 指定网络类型, bridge、overlay

    运行一个容器并连接到新建的 test-net 网络:

    • docker run -itd --name netSlave1 --network testNet twilight/nginx:ali

    打开新的终端,再运行一个容器并加入到 test-net 网络:

    • docker run -itd --name netSlave2 --network testNet twilight/nginx:ali

    安装ping:

    apt-get update
    apt install iputils-ping
    

    ping netSlave2 竟然直接ping了name(hostname是他的id, 他的hosts文件中记录了另一个容器的ip)

    配置DNS

    在宿主机的 /etc/docker/daemon.json 文件增加一下内容:

    {
      "dns" : [
        "114.114.114.114",
        "8.8.8.8"
      ]
    }
    

    重启生效,DNS会被应用到所有容器上

    docker run -it --rm ubuntu cat etc/resolv.conf

    root@1718bc16f2e6:/# cat /etc/resolv.conf
    search localdomain
    nameserver 114.114.114.114
    nameserver 8.8.8.8
    

    手动指定容器的DNS:

    docker run -it --hostname slavehostname --dns=114.114.114.114 ubuntu:18.04 /bin/bash

    [root@localhost docker]# docker run -it --hostname slavehostname  --dns=114.114.114.114 ubuntu:18.04 /bin/bash
    root@slavehostname:/# cat /etc/resolv.conf 
    search localdomain
    nameserver 114.114.114.114
    

    参数说明:

    • -h HOSTNAME--hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname/etc/hosts
    • --dns=IP_ADDRESS : 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
    • --dns-search=DOMAIN : 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com

    如果在容器启动时没有指定 --dns--dns-search,Docker 会默认用宿主主机上的 /etc/resolv.conf 来配置容器的 DNS。

    镜像

    • docker images 列出本地的所有镜像
    • docker pull 下载镜像
    • docker search "" 查找相关的镜像,或者在http://hub.docker.com查看
    • docker rmi 镜像:tag 删除镜像
    • docker tag oldenv:tag 用户名/newenv:newtag 创建一个新的镜像,旧的镜像保留
    • docker push 用户名/newenv:newtag 推送自己的镜像到hub上,镜像的名字必须是用户名/envname:tag

    创建镜像

    把容器导出成镜像

    • docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 提交一个容器成为镜像

      • -m: 提交的描述信息
      • -a: 指定镜像作者
      • e218edb10161:容器 ID
      • runoob/ubuntu:v2: 指定要创建的目标镜像名
    • docker images 可以查看到提交的镜像,和容器的导入效果一样的

    [wangchao@localhost ~]$ docker commit -m "nginx with ali sources" -a "twilight" e6547d259b8f twilight/nginx:ali
    sha256:378d7ca4a813dd691df890bcb639228a81cc1b58440094cf9431883a8a9003d2
    
    [wangchao@localhost ~]$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    twilight/nginx      ali                 378d7ca4a813        8 seconds ago       229MB
    mysystem            tags                1c174e9fbdee        4 minutes ago       64.2MB
    ubuntu              18.04               2eb2d388e1a2        6 days ago          64.2MB
    nginx               latest              8cf1bfb43ff5        9 days ago          132MB
    training/webapp     latest              6fae60ef3446        5 years ago         349MB
    

    导出&导入镜像到文件

    导出镜像的所有信息,导入后的镜像和原有的镜像一致。(注意与导出容器的区别)

    • docker save centos:self -o centos.tar 导出镜像到文件
    • docker load -i imagedata.tar 导入文件成镜像
    • 可与 docker commit containerid imagename:tag 配合使用

    从零构建镜像

    Dockerfile中每一行都产生一个层都有一个id,可能多个容器之间会共享一些层,可以节省资源。

    • docker build : 构建一个镜像,需要一个Dockerfile文件
    FROM    centos:6.7
    MAINTAINER      Fisher "fisher@sudops.com"
    
    RUN     /bin/echo 'root:123456' |chpasswd
    RUN     useradd runoob
    RUN     /bin/echo 'runoob:123456' |chpasswd
    RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
    EXPOSE  22
    EXPOSE  80
    CMD     /usr/sbin/sshd -D
    
    • docker build -t runoob/centos:6.7 . 创建一个镜像
      • -t : 表示目标镜像名
      • . : 表示Dockerfile文件所在的目录

    自带的ubuntu会因为缺少证书而无法更新源,只能先用旧的源安装上缺少的证书

    The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 3B4FE6ACC0B21F32

    root@e6547d259b8f:/etc/apt# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
    Executing: /tmp/apt-key-gpghome.SysU7qEDMN/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
    gpg: key 3B4FE6ACC0B21F32: public key "Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>" imported
    gpg: Total number processed: 1
    gpg:               imported: 1
    
    展开全文
  • 1、docker命令Docker用户需要sudo权限,可以把用户加入docker用户组,避免每次都输入sudo:sudo usermod -aG docker $USER 显示、删除docker镜像# 列出本机的所有 image 文件。 docker image ls # 删除 image...

    1、docker命令:

    Docker用户需要sudo权限,可以把用户加入docker用户组,避免每次都输入sudosudo usermod -aG docker $USER

    • 显示、删除docker镜像
      # 列出本机的所有 image 文件。
      docker image ls
      
      # 删除 image 文件
      docker image rm [imageName]
      
      docker rmi [imageName] #同于上一条命令
      

    image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。

    • 获取镜像:将 image 文件从仓库抓取到本地:

      docker image pull  [imageURL]
      # eg: docker image pull library/hello-world
      
    • 运行某一个docker镜像

      docker  [container] run imageName
      # eg:docker  run hello-world
      

    docker container run hello-world命令有自动抓取image文件的功能。如果发现本地没有指定的image文件,就会自动从仓库中抓取,所以,前面的docker image pull 命令并不是必需的步骤。

    • 停止docker镜像
      有些容器不会自动停止,必须使用docker container kill命令手动终止

      docker container kill [containID]
      

    2、生成自己的image文件

    生成自己的image文件,需要用到Dockerfile 文件,它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

    5、遇到的问题

    5-1 不能删除image

    使用docker image rm hello-worlddocker rmi hello-world命令,删除docker镜像时提示:“Error response from daemon: conflict: unable to remove repository reference “hello-world” (must force) - container bca1bfca3cab is using its referenced image bf756fb1ae65”。

    • 针对于没运行的程序,强力删除,加上 -f参数,即:docker image rm -f hello-world
    • 另一种方法:
      • 删除container 名字:使用 docker ps -as 命令,查询到name(假设为backstabbing_ritchie),然后 使用docker rm backstabbing_ritchie命令移除container
      • 删除container:docker rmi imagename

    参考:【stackoverflow】

    5-2 docker改名

    如这里自己创建的docker镜像为 tensorflow-gpu-donald,太长了,准备改名为:tf-gpu-doanld
    在这里插入图片描述
    可以的方法为:

    • 使用 docker image tag c81410cf7565 tf-gpu-donald:latest进行修改,这里c81410cf7565是imageID。
    • 也可以使用docker image tag tensorflow-gpu-donald:latest tf-gpu-su:latest进行修改。

    其实,Image ID 才是镜像全名,tag只是一个human-readable的别名。一个image id可以对应多个tag,之前的名字可以使用 docker rmi tensorflow-gpu-donald进行删除。因为c81410cf7565有其他名字,所以image不会被删除。

    refer:【Docker how to change repository name or rename image?】

    5-3、运行

    • 指定端口,运行某一个镜像:docker run -dit -p 2233:22 tf-gpu-su
    • 使用docker ps找到container ID43678b43ae1c
    • 进入镜像:docker exec -it 9a37aacfd682 bash
      -d是后台运行
      -p是端口映射,本地端口:docker镜像内端口
    • 使用passwd修改密码:12…
    docker exec -it 9a37aacfd682 bash
    
    展开全文
  • docker 常用命令整理

    2018-11-17 12:06:00
    查看docker版本 docker version ...查看一个命令的使用方法和参数 docker command --help查看 docker pull 如何使用 docker pull --help 查看所有镜像 docker images 运行一个容器 docker r...
    • 查看docker版本
    docker version
    
    • 查看其它详细信息
    docker info
    
    • 查看一个命令的使用方法和参数 docker command --help
      查看 docker pull 如何使用
    docker pull --help 
    
    • 查看所有镜像
    docker images
    
    • 运行一个容器 docker run [options] image-id
      比如docker运行 hello-world 这个镜像
    docker  run hello-world
    
    • 查看正在运行的容器
    docker ps
    
    • 从docker仓库下载一个镜像 https://hub.docker.com/explore/?page=1
      查看想要的docker镜像, 点击 details 会有下载的命令和一些详细介绍, 比如下载ngnix服务器镜像
    docker pull nginx
    

    转载于:https://www.cnblogs.com/liaohui5/p/10581583.html

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,244
精华内容 2,497
关键字:

docker常用命令整理