Skip to content

Latest commit

 

History

History
145 lines (131 loc) · 4.87 KB

File metadata and controls

145 lines (131 loc) · 4.87 KB

Docker简介

本文档摘录Docker环境创建,及使用技巧,备忘!

环境安装

  • Mac OS X
    官网镜像包安装
        
配置仓库/registry
图标docker -> preferences -> Docker Engine
{
   "registry-mirrors": [ //增加的部分
      "https://registry.docker-cn.com"
   ],
    

:

   "debug": true,        //老配置
   "experimental": false
}
    

Dockerfile

参考 文件格式

一般利用 Dockerfile 定义如何构建容器

  • 文件命名默认为 Dockerfile
  • 构建命令 docker build -t myapp:0.1.0 -f /path/to/a/Dockerfile .
FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

如何替换已有容器的1号进程

  • 通过-v映射新的可执行文件
    将外部的执行文件映射进去,覆盖原镜像的执行文件,如python程序
        
  • docker cp
    将完毕程序拷贝覆盖原容器镜像, 并重启docker
        

    :

    docker cp /path/src container-id:/dest/path/
    如果/dest/path存在src目录将被覆盖,不存在则新建src目录,内容为/path/src
        

Docker Compose

参考 官网链接 参考 文件格式

利用yaml文件定义应用运行环境,管理多个容器

  • 利用 Dockerfile 定义app环境
  • 利用 docker-compose.yml 定义app服务
  • 执行命令 docker-compose up 启动app服务
###docker-compose.yml 示例
version: '2.0'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

常用指令

  • docker-compose –help
docker-compose up -d
后台启动
docker-compose -f xxx.yml up -d
制定yml文件
docker-compose up -d xxx
仅启动某xxx服务
docker-compose stop
停止后台运行的服务
docker-compose stop xxx
仅停止某xxx服务
docker-compose ps
查看运行的容器
docker-compose run
执行一次性命令

CI

参考 文件格式

用于自动集成、自动测试等功能

常用命令

  • 总体
    docker info              //安装、配置信息
    docker --version         //版本号
        
  • 容器操作
    docker ps                //正在运行
    docker ps --all          //所有
        

    :

    docker rm container_id   //删除容器
    docker rm container_name
        

    :

                             //等同于Dockerfile文件的作用,利用运行的容器制作镜像
    docker commit -m "just for test" -a "autor name" container_id Repository:tag
        
  • 镜像操作
    docker search centos     //查询docker hub中的镜像
        

    :

    docker image ls          //查看全部镜像
    docker images
        

    :

    docker rmi nginx         //删除镜像(<TK!!!>必须先删除其对应的容器)
        

    :

                             //拉取镜像
    docker pull Repository:tag
        

    :

                             //上传镜像
    docker tag Repository:tag  <remote server>/Repository:tag
    docker push <remote server>/Repository:tag
        

    :

    docker save -o cc.tar bb:v1.0
    docker load < cc.tar     //打包镜像, 并重新导入镜像
        
  • 跑镜像
    docker run -it --name my_container_name ubuntu     #CTRL+P+Q使其后台运行
    docker run --rm -it --name my_container_name ubuntu
    docker run --network=xxx -it ubuntu                #挂接到自创建网络xxx
    docker run --net=none/host -it ubuntu              #指定网络模式
    docker exec -it my_container_name /bin/bash        #挂接后台运行的container
    docker start my_container_name                     #重启已停止的container
    docker stop my_container_name
    docker kill my_container_name                      #关停container
    docker restart my_container_name                   #重启container
        
  • 网络相关
    docker network ls           #查看当前的docker网络
    docker network create xxx   #创建网络, 默认网桥模式
    docker network inspect xxx  #查看网络信息
        
  • 手工绑定容器网卡
    docker run --net=none -it --rm ubuntu              #无网络启动
    pid=docker inspect -f '{{.State.Pid}}' container   #查看容器PID
    mkdir -p /var/run/netns
    ln -s /proc/${pid}/ns/net /var/run/netns/${pid}
    ip link add veth_0 type veth peer name eth0
    brctl addif docker0 veth_0
    ip link set veth_0 up
    ip link set eth0 netns ${pid}
                                                       #操控docker网络
    ip netns exec ${pid} ip link set dev eth0 name xxx
    ip netns exec ${pid} ip link set xxx up
    ip netns exec ${pid} ip addr add 172.17.0.100/24 dev xxx
    ip netns exec ${pid} ip route add default via 172.17.0.1
        
  • 日志
    docker logs 容器名/id                              #查看容器日志