【Docker】Docker常用命令

一 安装

参考官网

https://docs.docker.com/engine/install/centos/#install-using-the-repository

https://www.runoob.com/docker/docker-container-usage.html

查看历史

docker ps -a

创建 redis3.2版本的容器,并且运行redis服务端

docker run -d redis:3.2 redis-server

进入容器运行redis客户端

docker exec -it 613bbbe0eec4 redis-cli

使用80端口下载运行nginx

// 第一个80是宿主机80端口,第二个80是映射的docker容器80端口

docker run -d -p 80:80 nginx

docker pull nginx

docker create nginx

docker ps

docker start 8afaf0325375

如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:

docker pull ubuntu

使用 ubuntu 镜像启动一个容器

docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash

要退出终端,直接输入 exit:

root@ed09e4490c57:/# exit

启动已停止运行的容器

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

docker ps -a

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

docker start b750bbbcfd88

后台运行

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

docker run -itd --name ubuntu-test ubuntu /bin/bash

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)。

停止一个容器

停止容器的命令如下:

docker stop <容器 ID>

停止的容器可以通过 docker restart 重启:

docker restart <容器 ID>

进入容器

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

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

attach 命令

docker attach 1e560fca3906

注意: 如果从这个容器退出,会导致容器的停止。

exec 命令

docker exec -it 243c32535da7 /bin/bash

注意: 如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因。

导出和导入容器

导出容器

docker export 1e560fca3906 > ubuntu.tar

导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

cat docker/ubuntu.tar | docker import - test/ubuntu:v1

此外,也可以通过指定 URL 或者某个目录来导入,例如:

docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器

删除容器使用 docker rm 命令:

docker rm -f 1e560fca3906

下面的命令可以清理掉所有处于终止状态的容器。

docker container prune

删除镜像

docker rmi 镜像名字

暂停容器

暂停容器中所有的进程,状态为Pause(暂停对外提供服务)

docker pause 8afaf0325375

暂停后可以重新启动,暂停期间,ps可以查看

使用场景:在各个容器之间调试时使用。

取消暂停,将容器恢复为Up上线状态

docker unpause 8afaf0325375

停止容器

docker stop 8afaf0325375

docker kill 8afaf0325375

  • 被kill杀死容器,进入stopped状态被重新start后,会开启新的进程号;

  • 被stop停掉的容器,再次被重新start后,进程号不变,还是原来的。

kill命令比较生猛,不管容器死活,直接给系统发送SIGKILL的系统信号强行kill掉进程,就是要用kill -9干掉容器;

stop比较温柔,先给容器发送一个TERM信号,给容器充足时间(默认10秒)保存数据,让容器自动安全停止运行,超时后再给系统发送SIGKILL的系统信号强行kill掉进程,最后转变为stop状态。

使用docker stop -t [s, default 10],可调整超时时间(docker stop -t 20 mynginx)

设置docker内存使用参数

docker run -m 或 --memory设置内存的使用限额

docker run --memory-swap 设置内存和swap的使用限额

docker run -m 100M --memory-swap 200M

该命令表明容器允许使用的最大内存为100M,允许使用的swap最大为100M。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。

什么是swap? 临时的硬盘存储地区,腾出来的硬盘为的进程服务

swap space是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in。

CPU权重

​ 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制。Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重。如果不指定,默认值为 1024。与内存限额不同,通过 -c 设置的 cpu share 并不是 CPU 资源的绝对数量,而是一个相对的权重值。某个容器最终能分配到的 CPU 资源取决于它的 cpu share 占所有容器 cpu share 总和的比例。

Block IO 配置

​ Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论。

目前 Block IO 限额只对 direct IO(不使用文件缓存)有效。

默认情况下,所有容器能平等地读写磁盘,可以通过设置 --blkio-weight 参数来改变容器 block IO 的优先级。–blkio-weight 与 --cpu-shares 类似,设置的是相对权重值,默认为 500。在下面的例子中,container_A 读写磁盘的带宽是 container_B 的两倍。

docker run -it --name container_A --blkio-weight 600 rhel

docker run -it --name container_B --blkio-weight 300 rhel

允许在容器中使用jinfo等工具

容器启动的时候增加参数–cap-add=SYS_PTRACE

docker run --cap-add=SYS_PTRACE -d -p <port>:<port> --name <containerName> <imageName>

docker容器与宿主机文件互传

docker容器文件传给宿主机

docker cp my-container:/path/to/file /local/path

宿主机传文件给docker

docker cp /local/path my-container:/path/to/file

其中my-container是容器的名字

/path/to/file是容器里文件地址

/local/path是本地地址

docker里安装tcpdump

apt update

apt-get install tcpdump

没有aa-complain命令,自行安装

apt-get install apparmor-utils

/etc/init.d/apparmor reload

tcpdump不能工作在enforce模式下,改为使用complain模式:

aa-complain tcpdump

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值