docker入门

来源:互联网 发布:mac如何切换任务 编辑:程序博客网 时间:2024/06/07 07:01

《我的第一本docker书》

创建管理容器

  • docker info # 查看程序是否存在,功能是否正常
  • man docker-run
  • docker help run
  • docker run -i -t ubuntu:14.04 /bin/bash # 创建新容器
    -i 标志容器中STDIN是开启的,-t 创建一个伪tty
    [docker会先检查本地是否有ubuntu镜像,没有的话会连接官方维护的Docker Hub Registry查看Docker Hub中是否存在该镜像]
    {主机的控制台附着到新的shell会话上}
  • docker ps -a
  • docker ps -l
  • exit
  • docker start container_name
  • docker attach ID/name /bin/bash #进入一个容器,但attach并不好用,它进入的容器当关闭时会在不同的终端同时操作
  • docker exec -it ID/name /bin/bash #推荐进入容器的命令

  • docker rm name 删除容器

  • docker rmi 镜像id 删除镜像

创建守护式容器

  • docker run –name fox -d ubuntu:14.04 /bin/sh -c “while true; do echo hello world; sleep 2; done”
    -d 放在后台运行 ;循环打印hello world
    {仅仅返回一个容器id,没有讲主机控制台附在新的shell上}
  • docker stop fox/container_id 停止一个守护式容器

  • docker logs fox 获取容器的日志

  • docker logs -f fox 查看日志尾部
  • docker logs -ft fox 加上时间戳
  • docker logs –tail 10 fox 查看最后10行
  • docker logs –tail 0 -f fox 跟踪最新的日志
  • ctrl + c 退出日志

  • docker exec -d fox touch /etc/new_file

  • exec在容器内部额外启动新进程
  • docker exec -t -i fox /bin/bash 在fox内创建一个新的bash会话,可以在这个容器中运行其他命令

  • docker run –restart=always –name fox2 -d ubuntu:14.04 /bin/sh -c “while true;do echo hello;sleep 2;done;” 自动重启容器

  • docker inspect fox2 对容器做详细检查,返回配置信息

  • docker inspect –format ‘{{ .State.Running }}’ fox2 查看指定参数

使用镜像和仓库

  • docker images 列出所有镜像
  • docker images image_name 查看指定镜像名
    本地镜像都保存在docker宿主机的/var/lib/docker 目录下
    root的文件系统永远是只读, 写时复制
  • docker search image_name 在Docker Hub搜索镜像
  • docker pull 用户名/仓库名 拉取镜像到本地
  • docker run -it puppet/puppetserver /bin/bash构建一个容器
  • docker commit 构建镜像(不推荐)
  • docker build 和Dockerfile文件 构建镜像(推荐)【编写dockerfile之后执行docker build】
    (1) commit 方法创建镜像
    在容器里安装一个Apache, docker commit 容器id 镜像仓库/镜像名 eg: docker commit … sunnily/apache2
    docker commit -m “A new custom image” –author=”Amy” 966656ed5bdf sunnily/apache2:webserver
    -m 提交信息 –author镜像作者信息 :webserver添加镜像的标签
    (2)build创建镜像
    mkdir static_web -> cd static_web -> touch Dockerfile
    “””
    Version: 0.0.1 注释
    FROM ubuntu:14.04 基础镜像
    MAINTAINER Amy “sunny_lyr@163.com” 镜像的作者和邮件地址
    RUN apt-get update
    RUN apt-get install -y nginx
    RUN echo ‘Hi, I am in upir container’ > /usr/share/nginx/html/index.html
    EXPOSE 80 告诉docker该容器内的应用程序将会使用容器的指定端口
    “””
    cd static_web -> docker build -t=”sunnily/static_web:v1” . 仓库名/镜像名:标签
    docker run -d -P 80 –name static_web sunnily/static_web nginx -g “daemon off” 从新镜像启动容器
    docker port 容器id 容器端口号 容器的端口映射情况

  • docker指令
    CMD 指定一个容器启动时要运行的命令
    Dockerfile中只能指定一条CMD,如果指定了多条,会执行最后一句
    ENTRYPOINT 类似CMD, 不容易在启动容器时被覆盖

  • 从容器安装Registry
    docker run -p 5000:5000 registry

在测试中使用docker

  • 在nginx的配置文件中,daemon off;选项阻止Nginx进入后台,强制其在前台运行,这是因为要想保持Docker容器的活跃状态,需要其中运行的进程不能中断。
原创粉丝点击