用了几天晚上时间、学习一下docker
首先先去官网下载windows docker 的一键安装包 https://www.docker.com/
支持win10 然后 一路下一步安装即可、最后会要求重启、开启虚拟化操作、
还要硬件开启虚拟化、开机进入bios进行cpu开启虚拟化操作 每个电脑 的开启方式 百度即可
然后官网有带你入门体验的例子,可以跟着走一遍 理解一个大概、跟着操作就行。
然后 看docker技术入门与实战这本书 的前10章 按照例子走一遍就差不多熟悉了,
然后 根据自己的平常需求 制作几个常用的镜像 上传到自己的仓库中,练习自己的项目docker 化部署等操作
第三章
获取镜像
docker pull ubuntu:18.04 镜像描述:名称:标签 ,不指定标签默认latest
等价于docker pull registry.hub.docker.com/ubuntu:18.04
docker pull hub.c.163.com/public/ubuntu:18.04
docker run -it ubuntu:18.04 bash 使用镜像创建容器 运行bash应用
查看镜像信息
docker images or docker image ls
docker images -a 列出所有镜像
docker images -q 列出镜像id
给镜像添加标签
docker tag ubuntu:latest myubuntu:latest 创建一个新的镜像标签
docker inspect ubuntu:18.04 查看相关镜像的详细信息
docker history ubuntu:18.04 查看镜像的历史信息
搜寻镜像
docker search --filter=is-official=ture nginx
docker search --filter=starts=4 tensorflow
删除和清理镜像
docker rmi or docker image rm + 标签或者id
docker rmi myubuntu:latest
docker ps -a 查看本机上所有存在的容器 运行中的容器不可以强制删除 需要加-f
一般先删除容器 再删除相关镜像
docker image prune 清理未被使用的镜像
创建镜像
1. 基于已有的容器创建
docker container commit
docker run -it ubuntu:18.04 /bin/bash
然后在里面添加一个文件后退出 代表容器内容已经更新 为了保存现场 需要再创建一个新的容器
docker commit -m "added a new file" -a "zuozhe info" 容器id test:0.1
docker images 查看
2. 基于本地模板导入
需要下载镜像模板来创建
cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04
3. 基于Dockerfile创建
利用指令描述某个父镜像创建新镜像的过程
基于debian:stretch-slim 镜像安装pyhton3环境 构建一个新的python:3镜像
Dockerfile 文件
FROM debian:stretch-slim
LABEL version="1.0" maintainer="docker user <docker_user@github>"
RUN apt-get update &&\
apt-get install -y python3 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
构建docker build -t python:3 .
存出和载人镜像
1. 存出 docker save 导出镜像到本地文件 分享给他人
docker save -o ubuntu_18.04.tar ubuntu:18.04
2. 载入镜像
docker load -i ubuntu_18.04.tar
上传镜像
docker tag test:latest user/test:latest 先添加新标签 user/test:latest
docker push user/test:latest 再将新标签的镜像上传
第四章
创建容器
1.新建容器
docker create -it ubuntu:latest 创建一个新容器 处于停止状态
2. 启动容器
docker start af 启动刚才创建的新容器
3. 新建并启动容器
docker run ubuntu /bin/echo 'hello world'
docker run -it ubuntu:18.04 /bin/bash 启动一个bash终端 并允许用户进行交互
在终端中 可以使用 ctrl+d 进行退出容器 容器也就停止了
docker container wait 容器id 可以等待容器退出、并打印退出返回结果
4. 守护态运行 -d
下面命令会在后台运行容器
docker run -d ubuntu /bin/sh -c "while ture;do echo hello world;sleep 1; done"
5. 查看容器输出
docker logs 容器id
-d -f -t ...
停止容器
1. 暂停容器
docker run --name test --rm -it ubunt bash
docker pause test 暂停
docker unpause test 恢复运行
2. 终止容器
docker stop 容器id
docker pa -qa 查看所有容器id
docker starts 容器id
docker restart 容器id 先终止在重新启动
进入容器
1. attach 不推荐
docker run -itd ubunt 但当多个窗口同时attach一个容器 则所有窗口同步显示
2. exec 命令 推荐
docker exec -it 容器id /bin/bash 打开一个新的bash终端
删除容器
docker rm 容器id 删除处于终止或者退出状态的容器
可以加 -f 使运行中的容器 终止并强行删除
导入和导出容器
容器迁移
1. 导出容器
docker export -o test_for_run.tar 容器id
或者
docker export 容器id > test_for_stop.tar
2. 导入容器
docker import test_for_run.tar -test/ububtu:v1.0
查看容器
1. 容器详情
docker container inspect 容器id
2. 查看容器内进程
docker top 容器id
3. 查看统计信息
docker stats -a 容器id
其他命令
1. 复制文件
docker cp data test:/tmp/ 将本地路径data复制到test容器的/tmp路径下
2. 查看变更
docker container diff 容器id
3. 查看端口映射
docker container port 容器id
4. 更新配置
docker update .....
第六章
数据卷
数据卷 ( Data Volumes) 是一个可供容器使用的特殊目录,
它将主机操作系统目录直接 映射进容器,类似于 Linux 中的 mount 行为。
数据卷可以提供很多有用的特性:
- 数据卷可以在容器之间共事和重用,容器间传递数据将变得高效与方便
- 对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作
- 对数据卷的更新不会影响镜像,解耦开应用和数据
- 卷会一直存在,直到没有容器使用,可以安全地卸载它
1. 创建数据卷
docker volume create -d local test
docker volume inspect | ls | prune| rm|
2. 绑定数据卷
-mount 使用数据卷
volume:普通数据卷,映射到主机/var/lib/docker/volumes 路径下;
bind:绑定数据卷,映射到主机指定路径下
tmpfs :临时数据卷,只存在于内存中
下面使用 training/webapp 镜像创建一个 Web 容器,
并创建一个数据卷挂载到容器的/opt/webapp 目录:
docker run -d -P --name web --mount type=bind,source=/webapp,destination=/opt/webapp training/webapp python app.py
上述命令等同于使用旧的 -v 标记可以在容器内创建一个数据卷:
docker run -d -P --name web -v /webapp:/opt/webapp training/webapp python app.py
数据卷容器
需要在多个容器之间共享一些持续更新的数据,
创建一个数据卷容器 dbdata, 并在其中创建一个数据卷挂载到/dbdata
docker run it -v /dbdata 口ame dbdata ubuntu
可以在其他容器中使用--volumes-from 来挂载 dbdata 容器中的数据卷,
例 如创建 dbl 和 db2 两个容器,并从 dbdata 容器挂载数据卷:
docker run -it --volumes-from dbdata -name db1 ubuntu
docker run -it --volumes-from dbdata -name db2 ubuntu
数据卷容器迁移数据
1. 备份
备份 dbdata 数据卷容器内的数据卷
docker run -volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
2. 恢复、
恢复数据到一个容器
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar