本文档摘录Docker环境创建,及使用技巧,备忘!
- Mac OS X
官网镜像包安装
- 配置仓库/registry
- 图标docker -> preferences -> Docker Engine
{ "registry-mirrors": [ //增加的部分 "https://registry.docker-cn.com" ],:
"debug": true, //老配置 "experimental": false }
参考 文件格式
一般利用 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
- 通过-v映射新的可执行文件
将外部的执行文件映射进去,覆盖原镜像的执行文件,如python程序 - docker cp
将完毕程序拷贝覆盖原容器镜像, 并重启docker:
docker cp /path/src container-id:/dest/path/ 如果/dest/path存在src目录将被覆盖,不存在则新建src目录,内容为/path/src
利用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
- 执行一次性命令
参考 文件格式
用于自动集成、自动测试等功能
- 总体
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 #查看容器日志