docker使用

Docker 获取镜像,eg:

  • docker pull ubuntu:16.04
    在这里插入图片描述

查看当前电脑有哪些镜像,eg:

  • docker images
    在这里插入图片描述
    共有5个属性,分别时所属仓库、标签、镜像id、创建时间和镜像大小

从镜像运行一个容器:

docker run 命令可以从一个镜像运行一个包含一个主进程进程的容器:在这里插入图片描述
eg:

  • docker run -ti --name ubuntu_system ubuntu:16.04 bash
命令解释:
  • docker run:是从一个镜像运行一个容器的指令;
  • -ti:terminal interactive,这个参数可以让我们进入容器的交互式终端;
  • –name:指定容器的名称,后面的ubuntu_system就是给这个容器起的名字;
  • ubuntu:16.04:指定从哪个镜像运行容器,ubuntu是仓库名,16.04是标签;
  • bash:指明使用bash终端
Docker run做了哪些事情:
  • 检查本地是否存在指定的镜像,不存在就从公共仓库下载;
  • 利用镜像创建并启动一个容器;
  • 给容器包含一个主进程(docker原则之一:一个容器一个进程,只要这个进程还存在,容器就会继续运行);
  • 为容器分配文件系统、ip,从宿主机配置的网桥接口中桥接一个虚拟接口等;

退出容器:

直接执行 exit 命令即可,此时容器并没有被删除,只是被终止了而已,运行以下命令可以查看当前的容器,eg:

  • docker ps -a在这里插入图片描述

删除容器:

  • docker rm kind_bose
    注:下面很多 docker run的命令,如果有容器名字重复的(如:ubuntu_system),都需要先执行下exit和删除容器操作;

查看当前容器:

  • docker ps -a

将容器提交为一个新的镜像:

把刚才的ubuntu_system提交为一个新的镜像,其中myimage:v1.0分别是仓库名和版本号;

  • docker commit ubuntu_system myimage:v1.0在这里插入图片描述
    在这里插入图片描述
    注:这种方式创建镜像的习惯不好,使用docker开发的时候应避免这种从容器提交镜像的方法。

后台运行容器:

如果想要容器在宿主机的后台运行,需要在docker run的命令上加上 -d 参数(-d means detach),eg:

  • Docker run -d --name ubuntu_system ubuntu:16.04 bash -c "echo hello world"在这里插入图片描述此时不会把输入结果打印到宿主机的终端上,不带 -d 参数时则会将输出结果打印到终端上,eg:
  • docker run --name ubuntu ubuntu:16.04 bash -c “echo hello world”在这里插入图片描述

进入容器和终止容器:

进入容器一般有3种方法:
  • ssh登录
  • attach和exec(docker自带的命令)
  • Nesenter
attach和exec进入容器,eg:
  • docker exec -ti ubuntu bash
    在这里插入图片描述
    此时在该终端下面创建一个txt文件,在另外一个终端使用以下命令也可以看到刚才创建的txt文件:
    docker exec -ti ubuntu 或 docker attach ubuntu(attach需要按两次回车才可进入容器)
    在这里插入图片描述
attach和exec的区别:
  • Docker run 指令会给容器分配一个进程,并且 Docker 的哲学之一就是:一个容器一个进程!所以attach 实际就是进入容器的主进程,所以无论你同时 attach 多少,其实都是进入了主进程。比如,在两个终端分别使用 attach 进入同一个容器,然后我在一个 attach 里面运行的指令也会在另一个 attach 里面同步输出,因为它们两个 attach 进入的根本就是一个进程!
  • 在 attach 进入的容器(前提是你退出了 exec),使用“ps -ef”指令可以看出,我们的容器只有一个 bash 进程和 ps 命令本身;而 exec 就不一样了,exec 的过程其实是给容器新开了一个进程,比如我们使用 exec 进入容器后,使用 ps -ef 命令查看进程,你会发现,我们除了 ps 命令本身,还有两个 bash 进程,究其原因,就是因为我们 exec 进入容器的时候实际是在容器里面新开了一个进程。
  • 这就涉及到了另一个问题,如果你在 exec 里面执行 exit 命令,你只是关掉了 exec 命令新开的进程,而主进程依旧在运行,所以容器并不会停止;而在 attach 里面运行 exit 命令,你实际是终止了主进程,所以容器也就随之被停止了。总结一下,attach 的使用不会在容器开辟新的进程;exec 主要用在需要给容器开辟新进程的情况下。

终止一个运行的容器:

  • docker kill ubuntu

查看docker日志:

  • docker logs ubuntu

查看容器详细信息:

  • docker inspect ubuntu

查看容器最近一个进程:

  • docker top ubuntu

停止一个正在运行的容器:

  • docker stop ubuntu

运行一个已经停止的容器:

  • docker start ubuntu

继续运行一个被停止的容器:

  • docker restart ubuntu

暂停一个容器的进程:

  • docker pause ubuntu

取消暂停:

  • docker unpause ubuntu

终止一个容器:

  • docker kill ubuntu

容器使用的总结和建议:

容器的生命周期:

在这里插入图片描述

使用容器的建议:
  • 要在容器里面保存重要文件,因为容器应该只是一个进程,数据需要使用数据卷保存;
  • 尽量坚持“一个容器,一个进程”的使用理念,当然,在调试阶段,可以使用exec命令为容器开启新进程。

更多关于镜像的操作:

删除镜像:
  • docker rmi hello-world
查看镜像操作记录:
  • docker history ubuntu:16.04
给镜像设置一个新的 仓库:版本
  • docker tag myimage:v1.0 ubuntu1604:v0.1
    运行之后会得到一个新的镜像,和原来的镜像一模一样;在这里插入图片描述
查看镜像详细信息:
  • docker inspect ubuntu1604:v0.1

仓库:

集中存放镜像的地方;
docker官方维护着一个公共仓库Docker store,可以方便的在Docker store查找自己想要的镜像;Docker store 地址:
https://hub.docker.com/search?type=image在这里插入图片描述

终端登录:
  • docker login
    输入用户名和密码后,就可以在共有仓库种搜索想要的镜像了:
  • docker search ubuntu

更多命令查看

  • docker --help
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值