容器是Docker的另一个核心概念,镜像是静态的只读文件,而容器则带有运行时需要的可写文件层。
*创建容器
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS
-a, --attach=[] 是否绑定到标准输入,标准输出和错误
--add-host=[] 在容器内添加一个主机名到IP的映射关系(通过/etc/hosts文件)
-c, --cpu-shares=0 允许容器使用CPU资源的相对权重,默认一个容器能用满一个核的CPU
--cap-add=[] 增加容器的Linux指定安全能力
--cap-drop=[] 移除容器的Linux指定安全能力
--cgroup-parent= 容器cgroup限制的创建路径
--cidfile= 将容器的ID号写入文件
--cpuset-cpus= 限制容器使用哪些CPU核心
--device=[] 映射物理机的设备到容器内
--dns=[] 自定义dns服务器
--dns-search=[] 设置 dns搜索域
-e, --env=[] 设置容器内环境变量
--entrypoint= 覆盖镜像中默认的ENTRYPOINT指令
--env-file=[] 从文件中读取环境变量到容器内
--expose=[] 暴漏一个或一组端口
-h, --hostname= 指定容器的主机名
-i, --interactive=false 保持标准输入打开(常搭配-t使用)
--ipc= 容器IPC命名空间
-l, --label=[] 以键值对方式指定容器的标签信息
--label-file=[] 从文件中读取标签信息
--link=[] 添加另一个容器的链接
--log-driver= 指定容器的日志驱动类型,可以为json-file,syslog,journald等
-m, --memory= 限制容器使用内存和交换区的总大小
--mac-address= 指定容器的mac地址
--memory-swap= 限制容器使用内存和交换内存的总大小, 设置'-1' 为禁用交换内存
--name= 为容器分配一个名字
--net=bridge 为容器设置桥接模式
-P, --publish-all=false Publish all exposed ports to random ports通过NAT机制将容器标记暴漏的端口自动映射到本地主机的临时端口
-p, --publish=[] 指定如何映射到本机端口
--pid= 指定容器的pid命名空间
--privileged=true|false 是否给容器以高权限,这意味着容器内应用将不受权限下限制,默认为false
--read-only=false 是否挂在容器文件系统为只读
--restart=no 容器的重启策略,包括no,on-failure,always,unless-stopped
--security-opt=[] 指定一些安全参数,包括权限,安全能力等
-t, --tty=false 是否分配一个伪终端(交互模式)
-u, --user= 以什么身份运行 (format: <name|uid>[:<group|gid>])
--ulimit=[] 通过此选项限制最大文件数,最大进程等
-v, --volume=[] 绑定一个数据卷
--volumes-from=[] 从某个容器绑定数据卷
-w, --workdir= 容器的默认工作目录
*启动/停止容器
docker start/stop container
docker kill 会直接发送SIGKILL信号强制终止容器
*新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run的options跟docker create一样,在此不再赘述
docker run -it ubuntu /bin/bash
用户可以按exit或者Ctrl+d退出
-d 以守护态运行
获取守护态容器的输出信息,可用
docker logs container
*连接容器
docker attach container
exec命令
docker exec -it container command arg...
docker exec -it ubuntu /bin/bash
*查看容器运行状态
docker logs container
-f, --follow=false 跟随日志输出
-t, --timestamps=false 输出日志输出
--tail=x 显示多少行
*删除容器
docker rm [OPTIONS] CONTAINER [COMMAND] ARG...
-f, --force=false 强制删除运行中的容器(发送SIGKILL)
-l, --link=false 删除容器所有的连接,但保留容器
-v, --volumes=false 删除容器挂载的数据卷
*导出容器
docker export [-o name] CONTAINER
导入容器
docker import [OPTIONS] URL|- [REPOSITORY[:TAG]]