docker初步学习笔记(一)

用了几天晚上时间、学习一下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 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值