DOCKER学习笔记
docker简介
基本介绍
Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
应用场景
- Web应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
DOCKER架构
基本概念
- 镜像(Image):Docker 镜像,就相当于是一个root文件系统。比如官方镜像ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。(pull下来的是裸机,基本上啥也没有)
- 容器(Container):镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
概念 | 说明 |
---|---|
images | Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。 |
container | 容器是独立运行的一个或一组应用,是镜像运行时的实体。 |
Docker 客户端(Client) | Docker 客户端通过命令行或者其他工具使用 Docker SDK与 Docker 的守护进程通信。 |
Docker 主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
repository | Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 |
docker安装与其它配置(win10)
下载docker desktop
安装Hyper-V
- Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10
注意!这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V! - 右键单击开始菜单->选择应用与功能->查找“启用或关闭windows功能”->将Hyper-V中的功能全部勾选即可
- 或者可以通过命令来启用 Hyper-V ,请右键开始菜单并以管理员身份运行 PowerShell,执行以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
本地常用命令
参数
参数 | 作用 | 实例 |
---|---|---|
-i -t | 交互式操作 终端操作 | docker run -it ubuntu /bin/bash /bin/bash:放在镜像名后的是命令,表示希望有个交互式 Shell |
-d | 后台运行,默认不进入容器(常用于创建镜像后进行设置) | docker run -itd ubuntu /bin/bash |
-p | 指定端口(反向映射!!!如实例中是将8888端口映射成8080端口) | docker run -d -p 8080:8888 ubuntu /bin/bash |
-P | 随机指定端口 | docker run -d -P ubuntu /bin/bash |
命令
命令 | 作用 |
---|---|
docker run -it ubuntu /bin/bash | 启动镜像 |
docker ps docker ps -l docker ps -a | 查看已启动的容器 查看最后一次创建的容器 查看所有容器 |
docker stop wizardly_chandrasekhar | 停止容器,这里使用的是镜像的NAMES字段,使用CONTAINER_ID字段同样可以 |
docker start wizardly_chandrasekhar | 启动已经停止的容器,这里使用的是镜像的NAMES字段,使用CONTAINER_ID字段同样可以 |
docker inspect wizardly_chandrasekhar | 查看容器ubuntu的底层信息 |
docker attach 6580ce0feaf1 | -d参数使用之后,可以使用该命令进入容器(使用此命令进入容器后,推出终端会stop掉容器) |
docker exec -it 6580ce0feaf1 /bin/bash | -d参数使用之后,可以使用该命令进入容器(使用此命令进入容器后,推出终端不会stop掉容器) |
docker export 6580ce0feaf1 > ubuntu.tar | 到处到本地文件 |
docker rm -f 6580ce0feaf1 | 删除容器 |
docker commit -a “somebody”-m “something” 6580ce0feaf1 ubuntu2 | 将对ubuntu的操作保存上传到ubuntu2 |
docker cp C:/users/balabala /bala | 将宿主机(win10)的balabala文件夹下的文件复制进镜像中的bala文件夹下 |
远程操作命令
上传镜像
将本地镜像上传到远程服务器上
-
登录docker hub账号
docker login
终端登录(本人是在docker desktop中直接登录,随后输入该命令)
-
选择需要上传的image,获取其IMAGE ID
docker images
-
为需要上传的image打标签
docker tag f4939dca8804 name/ubuntu:latest
这里的f4939dca8804是需要上传的image的id
name是docker hub的用户名 -
上传
docker push name/ubuntu
漫长等待之后即可成功
下载镜像
命令 | 作用 |
---|---|
docker pull ubuntu | 载入ubuntu镜像 |
docker小白,若有错误之处烦请批评指正
另,此文将不定期更新