Mongo 随笔-生活工作点滴

docker 容器操作

2019-07-08  本文已影响11人  爱吃豆包

1.创建容器

docker [container] create [option] {镜像名称:标签}// 新建一个容器

例子:

docker create -it centos:latest // 创建一个 centos 容器

通过命令创建容器后,通过 docker ps -a 是可以看到这个容器的状态,发现它是停止状态
,可以通过 docker [container] start 命令来启动它

其他参数 [option]

'-a,  --attach=[]'  : 是否绑定到标准输出、输入和错误
'-d, --detach=true | false' : 是否在后台运行容器,默认为否
'--detach-keys=""' : 从 attach 模式退出的快捷键
'--entrypoint=""'  : 镜像存在入口命令时,覆盖为新的命令
'--expose=[]' : 指定容器会暴露出来的端口或端口范围
'--group-add=[]' : 运行容器的用户组
'-i, --interactive=true | false' : 保持标准输入打开,默认为 false
'--ipc=""' : 容器 IPC 命令空间,可以为其他容器或主机
'--isolation="default"' : 容器使用的隔离机制
'--log-driver="json-file"' : 指定容器的日志驱动类型,可以为 json-file、 syslog、journald、gelf、fluentd、awslogs、splunk、etwlogs、gcplogs 或 none
'--log-opt=[]' : 传递给日志驱动的选项
'--net="bridge"' : 指定容器网络模式,包括 bridge、none、其他容器内容器、host的网络或某个现有网络等
'--net-alias=[]' : 容器在网络中的别名
'-p, --publish-all=true | false' : 通过NAT机制将容器标记暴露的端口自动映射到本地主机的临时端口
'-P, --publish=[]' : 指定如何映射到本地主机端口,例如 -p 11234-12234:1234-2234
'--pid=host' : 容器的PID命令空间
'--userns=''' : 启用 userns-remap 是配置用户命名空间的模式
'--uts=host' : 容器的PID命令空间
'--restart="no"' : 容器的重启策略,包括 no、on-failure[:max-retry]、always
unless-stopped
'--rm=true | false' : 容器退出后是否自动删除,不能跟 -d 同时使用
'-t, --tty=true | false' : 是否分配一个伪终端,默认为 false
'--tmpfs=[]' : 挂载临时文件系统到容器
'-v | --vlume[=[HOST-DIR:]CONTAINER-DIR[:OPTION]]]' : 挂载主机上的文件卷到容器内
'--volume-driver=''' : 挂载文件卷的驱动类型
'--volumes-from=[]' : 从其他容器挂载卷
'-w, --workdir=''' : 容器内的默认目录
'--add-host=[]' : 在容器内添加一个主机名到IP地址的映射关系(通过/etc/hosts文件)
'--device=[]' : 映射物理机上的设备到容器内
'--dns-search=[]' : DNS搜索域
'--dns-opt=[]' : 自定义的DNS选项
'--dns=[]' : 自定义的DNS服务器
'-e, --env=[]' : 指定容器内环境变量
'--env-file=[]' : 从文件中读取环境变量到容器内
‘-h, --hostname=""’ : 指定容器的 主机名
'--ip=''' : 指定容器的IPv4地址
'--ip6=''' : 指定容器的IPv6地址
'--link=[<name or id>:alias]' : 链接到其他容器
'--mac-address=""' : 指定容器的Mac地址
'--name=""' : 指定容器的别名
'--blkio-weight=10~1000' : 容器读写块设备的 I/O 性能权重,默认为0
'--blkio-weight-device=[DEVICE_NAME:WEIGHT]' : 指定各个块设备的 I/O 性能权重
'--cpu-shares=0' : 允许容器使用CPU资源的相对权重,默认一个容器内用满一个核的CPU
'--cap-add=[]' : 增加容器的Linux指定安全能力
'--cap-drop=[]' : 移除容器的 Linux 指定安全能力
'--cgroup-parent=""' : 容器 cgroups 限制的创建路径
'--cidfile=''' : 指定容器的进程ID号写到文件
'--cpu-period=0' : 限制容器在CFS调度器下的CPU占用时间片
'--cpuset-cpus=''' : 限制容器能使用哪些CPU核心
'--cpuset-mems=''' : NUMA架构下使用哪些核心的内存
'--cpu-quota=0' : 限制容器在 CFS 调度器下的 CPU 配额
'--device-read-bps=[]' : 挂载设备的读吞吐率(以bps为单位)限制
'--device-write-bps=[]' : 挂载设备的写吞吐率(以bps为单位)限制
'--device-read-iops=[]' : 挂载设备的读速度率(以每秒 I/O 次数为单位)限制
'--device-write-iops=[]' : 挂载设备的写速度率(以每秒 I/O 次数为单位)限制
'--health-cmd=''' : 指定检查容器监控状态的命令
'--health-interval=0s' : 执行健康检查的间隔时间,单位可以为ms、s、m 或 h
'--health-retries=int' : 监控检查失败重试次数,超过则认为不健康
'--health-start-period=0s' : 容器启动后减小健康检查的等待时间,单位可以为ms、s、m 或 h
'--health-timeout=0s' : 健康检查的执行超时,单位可以为ms、s、m 或 h
'--no-healthcheck=true | false' : 是否禁用健康检查
'--init' : 在容器中执行一个init进程,来负责响应信号和处理僵尸状态子进程
'--kernel-memory=''' : 限制容器使用内核的内存大小,单位可以是b、k、m 或者 g
'-m, --memory=''' : 限制容器内应用使用的内存,单位可以是b、k、m 或 g
‘--memory-reservation=''’ : 当系统中内存过低时,容器会被强制限制内存到给定值,默认情况下等于内存限制值
'--memory-swap="LIMIT"' : 限制容器使用内存和交换区的总大小
'--oom-kill-disable=true | false' : 内存耗尽时是否杀死容器
'--oom-score-adj=''' : 调整容器的内存耗尽参数
'--pids-limit=''' : 限制容器的pid个数
'--privileged=true | false' : 是否给容器高权限,表示容器内应用将不受权限的控制,一般不推荐
'--read-only=true | false' : 是否让容器内的文件系统只读
'--security-opt=[]' : 指定一些安全参数,包括权限、安全能力、apparmor等
'--stop-signal=SIGTERM' : 指定停止容器的系统信号
'--shm-size=''' : /dev/shm 的大小
'--sig-proxy=true | false' : 是否代理收到的信号给应用,默认为true,不能代理 SIGCHLD、SIGSTOP 和 SIGKLL信号
'--memory-swappiness="0~100"' : 调整容器的内存交换区参数
'-u, --user=''' : 指定在容器内执行命令的用户信息
'--userns=''' : 指定用户命名空间
'--ulimit=[]' : 通过 ulimit 来限制最大文件数,最大进程数等

2.启动容器

docker [container] start // 启动一个已经停止的容器

例子:

docker start {容器名称 | 镜像ID} // 启动一个镜像, 镜像名称可以通过 docker ps -a 查看

3.新建并启动容器

docker [container] run // 创建并启动容器

例子:

docker run -it -d centos:laster // 运行一个 centos ,并在后台守护态运行

-d 表示容器以守护态运行,也就是在后台运行

4.查看容器输出

docker [container] logs  [option] // 查询输出

例子:

docker logs {容器ID}

其他参数[option]

'-details' : 打印详情信息
'-f, -follow': 持续保持输出
'-since' string : 输出从某个时间开始的日志
'-tail' string : 输出最近的若干日志
'-t, -timestamps' : 显示时间戳信息
'-until' string : 输出某个时间之前的日志

5.停止容器

暂停容器

docker [container] pause CONTAINER [CONTAINER...] // 停止容器

例子:

//  启动一个centos容器,并且name指定为centos7
docker run -d --name centos7 centos:laster
// 暂停容器,通过容器名称
docker pause centos7

恢复容器运行

docker [container] unpause CONTAINER [CONTAINER...]  // 恢复容器到运行状态

例子:

docker unpause centos7 // 恢复centos7

终止容器

docker  [container] stop  [CONTAINER...] // 终止一个容器

例子:

docker stop centos7 // 停止一个名称为centos7的容器

6.删除容器

docker [container]  rm [option] // 删除处于终止或退出状态的容器

例子:

docker rm centos7 // 删除一个容器

其他参数

'-f, --force=false' : 是否强制终止并删除一个运行中的容器
'-l, --link=false' : 删除容器的连接,但保留容器
'-v, --volumes=false' : 删除容器挂载的数据卷

7.进入容器

容器在运行的时候,在有些情况下需要进入容器
有两个命令:docker attach 和 docker exec

attach和exec的区别
1.attach直接进入容器启动的终端,不会启动新的进程;
2.exec可以在容器中打开新的终端,也可以启动新的进程;
3.如果想查看容器启动时的命令可以用attach,其他的全部使用exec;

这里建议使用 exec 命令!

docker exec -it <container> bash // 进入这个容器,并创建一个伪终端

例子:

docker exec -it {容器名称 | 容器ID} bash

8.查看容器

docker container inspect CONTAINER [CONTAINER ...]  // 查看容器

例子:

docker container inspect {容器名称 | 容器ID} // 查看容器信息 

会返回容器的具体信息,比如 容器id,创建时间,路径,状态,镜像,配置等
以JSON输出

{
   {
      "Id":"容器ID",
      "Created":"创建时间",
      "Path":"路径",
      "Args": [], // 配置信息
      "State": {
          一些状态信息
      }
    }
}

9.查看容器内进程

// 查看容器内进程
docker [container] top [OPTIONS] CONTAINER [CONTAINER ...]

例子:

docker top centos // 查看docker里面的运行的 centos 进程

10.一些其他比较有用的命令

比如往容器内复制文件
有些情况下,我们是把配置文件准备好了,然后直接替换容器内的配置文件

// 往容器内复制文件
docker [container] cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

例子:

docker [container] cp /desc/a.txt centos:/etc/

查看容器的端口映射,本地机器和docker内的端口映射

docker container port CONTAINER [PRIVATE_PORT[/PROTO]]

例子:

// 查看nginx的端口映射
docker container port nginx

输出:

9000/tcp  ->  0.0.0.0:9000

9000/tcp 是容器内的端口,0.0.0.0:9000 是本地机器的端口

上一篇 下一篇

猜你喜欢

热点阅读