Docker使用

获取镜像

  • 在Docker Hub公共镜像源查找Ubuntu的镜像,使用docker pull获取
  • 例如: docker pull ubuntu:16.04

列出镜像

  • 使用docker images可以列出本机所有镜像

删除镜像

  • 使用命令docker rmi

存储镜像

  • 使用命令:docker save
    例如: docker save -o ubuntu_16.04.tar ubuntu:16.04

载入镜像

  • 使用命令docker load
    例如:docker load --input ubuntu_16.04.tar
    或:docker load < ubuntu_16.04.tar

启动容器

  • 新建一个容器并启动(docker run):
    例如:docker run ubuntu:16.04 /bin/echo "hello"
    这是新建一个容器输出hello后就终止这个容器。

  • docker run -t -i ubuntu:16.04 /bin/bash
    这是启动一个bash终端允许用户交互,-t是分配一个伪终端,-i是将容器的标准输入保持打开。
    使用exit命令可以退出伪终端。

  • 使用docker ps -a可以看到处于终止状态的容器
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    53f785c1c7cb ubuntu:16.04 "/bin/bash" 13 minutes ago Up 9 minutes confident_benz

  • docker logs获取容器输出信息,例如:
    docker logs confident_benz

  • 启动一个处于终止状态的容器
    例如:docker start confident_benz

实例
docker  run -it --privileged=true --name ubuntu -v  /d/docker_samba:/share --net=host ubuntu18:v3 /bin/bash

#docker run之后执行多条命令
docker run --privileged --restart=always --name media-server -v /etc/localtime:/etc/localtime -v /home/xzw:/share --net host -itd media:v1 sh -c "cd /share/platform/ && ./streaming_media"

终止容器

  • docker stop confident_benz
    docker restart 会将一个出于运行态的容器先终止后启动

进入容器

  • 命令:docker attach
    例如:confident_benz容器在后台运行,我们可以使用
    docker attach confident_benz进入容器。

  • 命令docker exec

    区别

    • attach 直接进入容器 启动命令 的终端,不会启动新的进程。
    • exec 则是在容器中打开新的终端,并且可以启动新的进程。
    • 如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec

导出容器

  • 使用 docker export 命令
    例如: docker export confident_benz > ubuntu.tar

导入容器

  • 使用docker import命令docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
    例如:docker import Ubuntu.tar ubuntu:xzw

删除容器

  • 使用docker rm来删除一个出于终止态的容器,加上-f可以删除运行态的容器

重命名

docker rename 原容器名 新容器名

查看镜像或容器详细信息

docker inspect 容器名或镜像名

使用dockerfile创建一个自定义的image

  • 使用命令docker build

    docker build -t alg:v1 -f Dockerfile .
    

本地传文件到容器

根据容器id传

docker cp 本地文件路径 ID全称:容器路径

获取容器的短ID或者指定的name。

PS C:\Users\Administrator> docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
0d1560821314        ubuntu:16.04        "/bin/bash"         5 hours ago         Exited (127) 6 seconds ago                       elastic_agnesi

然后根据这两项的任意一项拿到ID全称。

docker inspect -f '{{.Id}}' 0d1560821314


PS C:\Users\Administrator> docker inspect -f '{{.Id}}' 0d1560821314
0d1560821314ddc38af8c991fc35c4dda959a1c1db241610abd9227cafac1257

 docker cp C:\Users\Administrator\Desktop\easydarwin 0d1560821314ddc38af8c991fc35c4dda959a1c1db241610abd9227cafac1257:/home/

根据容器名传

也可以:

docker cp 本地文件路径 容器名:容器路径

容器传文件到本地

​ docker cp ID全称:容器文件路径 本地路径

​ docker cp 容器名:容器文件路径 本地路径

将容器保存为镜像

​ docker commit elastic_agnesi sky:v0

​ docker commit -m "添加注释" elastic_agnesi sky:v0

修改已存在容器参数

  1. 停止 docker 引擎服务,systemctl stop docker 或者 service docker stop
  2. 配置文件路径为:/var/lib/docker/containers/容器ID
  3. 修改hostconfig.json和 config.v2.json

查看日志

例如只限制最后100条的日志,并持续更新日志显示
docker logs -f --tail=100 CONTAINER_ID

参数

privileged

--privileged  

使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。

v

-v

譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:

docker run -it -v /test:/soft centos /bin/bash

--restart

  • --restart=no : 容器退出时不要自动重启。这个是默认值。
  • --restart=on-failure: 只在容器以非0状态码退出时重启。
  • --restart=always : 不管退出状态码是什么始终重启容器。当指定always时,docker daemon将无限次数地重启容器。容器也会在daemon启动时尝试重启,不管容器当时的状态如何。
  • --restart=unless-stopped : 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

--net

  • host模式,使用--net=host指定。
  • container模式,使用--net=container:NAME_or_ID指定
  • none模式,使用--net=none指定
  • bridge模式,使用--net=bridge指定,默认设置

--name

指定 容器名称

-d

后台运行容器

-e

设置环境变量

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×