1、docker的介绍python
1. Docker是什么?web
Docker 是一个开源的应用容器引擎,让开发者能够打包他们的应用以及依赖包到一个可移植的容器中,而后发布到任何流行的Linux机器上,也能够实现虚拟化,容器是彻底使用沙箱机制,相互之间不会有任何接口。docker
详情参考:https://baike.baidu.com/item/Docker/13344470?fr=aladdin数据库
2. Docker与vm(虚拟机)的区别ubuntu
在比较虚拟机和容器时,请考虑此图:安全
虚拟机运行来宾操做系统 - 请注意每一个框中的操做系统层。此项为资源密集型,而且生成的磁盘镜像和应用状态与操做系统设置、系统安装的依赖项、操做系统安全补丁以及其余容易丢失且难以复制的临时配置相关联。bash
容器能够共享单个内核,而且须要存在于容器镜像中的惟一信息是可执行文件及其软件包依赖项,这些都不须要在主机系统上安装。这些进程的运行方式相似于原生进程,而且您能够经过运行 docker ps
等命令来逐一管理它们 - 如同您在 Linux 上运行 ps
以查看活动进程同样。最后,因为它们包含全部依赖项,所以不存在配置关联;容器化应用“能够随处运行”。网络
详情参考:https://docs.docker.com/get-started/#containers-and-virtual-machinesapp
3. Docker与VM比较有什么优点webapp
2、镜像操做
1. 下载和删除镜像
# 下载 docker pull <镜像名称>
# 删除 docker rmi <镜像ID>
2. 查看镜像信息
# 查看有两种方式:
--->查看所有镜像信息。包括仓库名、标签信息、镜像ID、建立时间、镜像大小 docker images --->查看特定镜像详细信息 docker inspect <镜像ID>
3. 搜索镜像
# 搜索镜像 docker search <镜像名称>
4. 建立镜像
# 建立镜像有三中方式 --->利用已有的镜像容器建立新的镜像 docker commit -a <做者信息> -m <备注信息> --pause=true --->基于本地已有的镜像模块导入来建立新的镜像 sudo cat <tar.gz> | docker import - <name>:<tag> https://openvz.org/Download/template/precreated --->使用Dockerfile的配置来建立新的镜像 暂无
5. 保存和载入镜像
# 保存现有的镜像成tar包 docker save -o **.tar <name>:<tag> # 载入本地的tar包到本地的docker系统中.可使用--input或者< docker load --input / < **.tar
6. 上传镜像
# 上传镜像.这个须要登录在docker系统中已有注册帐号.
# 官网地址:https://hub.docker.com docker tag <ID> <accountName>/<imageName>:<tag> docker push <accountName>/<imageName>:<tag>
3、容器和仓库
1. 建立容器
# 建立容器。只是建立了容器,并无启动容器 docker create -it <name>:<tag> # 启动容器。启动已经建立的容器 docker start <ID>
# 新建并启动容器。功能就是建立和启动两条命令。
docker run -it <ID> /bin/sh
# 后台进程方式运行。
docker run -d <ID> /bin/sh -c '命令'
# 查看已启动容器
docker ps
# 查看logs信息
docker logs <ID>
2. 终止容器
# 终止容器 docker stop <ID>
3. 进入容器
# 进入容器 docker exec -it <ID> /bin/sh
4. 删除容器
# 删除容器; -f 强制删除 docker rm -f <ID>
5. 搭建私有仓库
# 先从docker的公有库拉取这个私有仓库镜像 docker pull registry # -v 的做用是将本地系统的挂载点和容器系统中的挂在点关联起来。 # -p的做用是本地端口与容器端口关联。 docker run -d -v <本地文件系统的挂载点>:<容器文件系统的挂载点> -p <容器系统端口>:<本机系统端口> --restart=always --name registry registry:latest # 访问 http://<本地ip地址>:<容器系统端口>/v2/_catalog
4、数据卷
管理数据、维护数据的做用. 数据管理容器,相似数据库.
1. 数据卷
# 在容器内建立一个数据卷 docker run -v <host DIR>:<container DIR> <name> <command> eg: docker run -d -P --name web -v /webapp:training/webapp python app.py
# 这里有个技巧:当有多个数据卷时,可使用多个-v参数.
2. 数据卷容器
# 数据卷容器. 跟数据卷功能相似,只不过是给数据卷启动了一个容器。
eg: docker run -it -v /dbdata --name dbdata ubuntu
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
dbdata:
---- db1
---- db2
3. 利用数据卷容器迁移数据
# 备份
docker run --volumes-from dbdata -v $(pwd):/backup --name worker tar cvf /backup/backup.tar /dbdata
#恢复
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v $(pwd):/bankup busybox tar xvf /backup/backup.tar
5、网络配置
1. 访问容器
# -P 随机端口
eg: docker run -d -P training/webapp python app.py
# -p 制定端口
1> 映射全部IP
eg: docker run -d -p 5000:5000 --name web training/webapp python app.py
2> 映射到指定地址和端口
eg: docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
3> 映射到指定地址的任意端口
eg: docker run -d -p 127.0.01::5000 training/webapp python app.py
4> 查看映射端口配置
eg: docker port