docker

Tip加速: dokcer -> Preferences -> Advanced -> Registry mirrors

目标

  • docker介绍
  • 如何制作一个镜像
  • 如何持久化容器数据
  • 如何分享一个镜像

架构图

初识 docker

  • 第一个 docker 服务

    $ docker run ubuntu echo hello docker
    
  • 第二个 docker 服务

    $ docker run -p 8080:80 -d nginx
    04907b26c8a3756a449be983be09aac6ddd61b67e0fde4d49e04efd200e20b4d
    # -p(--publish list): Publish a container's port(s) to the host 即端口映射
    # -d(--detach): Run container in background and print container ID 后台运行
    
    # 修改 nginx 默认显示
    $ echo <html><h1>hello docker!</h1><html> tmp/index.html
    $ docker cp tmp/index.html 04907b26c8a3://usr/share/nginx/html
    
    # 停止
    $ docker stop 04907b26c8a3
    
    # 保存刚刚的修改,生成一个新的 image
    $ docker commit -m 'fun' 04907b26c8a3 nginx-fun
    $ sha256:f8cbe4b06e8237a68e2d806736682c99eb3138a2aa949527aa56782665bdf271
    

制作一个 docker 镜像

  • 第一个 dockerfile

    编写一个 Dockerfile 文件

    FROM alpine:latest
    MAINTAINER wh
    CMD echo 'hello docker'
    

    打包:docker build -t hello_docker 得到一个新的 image

  • 第二个 dockerfile

    FROM ubuntu
    MAINTAINER wh
    RUN apt-get update
    RUN apt-get install -y nginx
    COPY index.html /var/www/html
    ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
    EXPOSE 80
    

    每一个语句都会生成一个新的 images

持久化方案

  • Volume 提供独立于容器之外的持久化存储

    # 映射
    $ docker run -p 8080:80 -d -v $PWD/html:/usr/share/nginx/html nginx
    
    # 创建一个容器
    $ docker create -v $PWD/data:/vaar/mydata --name my ubuntu
    
    # 创建一个容器并继承上一个容器的挂载
    $ dokeer run -it --volumes-from my unbuntu /bin/bash
    
  • Registry 共享仓库

    docker search xxx
    docker pull xxx
    
    docker login
    docker push
    

其他命令

# 查看日志
docker logs -f xxx

# 打包镜像 -t(--tag) 起名字  -f(--file) 指定文件
docker build -t xxx:1.0 -f /root/Dockfile

# 到容器内部
docker exec -it xxx /bin/bash
上次更新: 6/5/2020, 3:22:23 AM