官方文档
推荐免费教程1:Docker从入门到实践 【开源地址】
推荐免费教程2: Docker — 从入门到实践
不满足方式一安装条件的话建议安装Linux虚拟机在其中使用docker,且可模拟真实生产环境。若你仍执迷不悟请选择升级系统:Win10家庭版升级至Win10专业版,控制面板-系统和安全-系统-更换产品密钥(百度秘钥以及系统破解工具如KMSpico)
docker --version
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
https://registry.docker-cn.com
https://reg-mirror.qiniu.com/
https://dockerhub.azk8s.cn
https://hub-mirror.c.163.com
建议不要使用Docker官方加速器(速度可能不尽人意,推荐阿里),以下使用官方加速地址仅作为示例进行演示。
systemd
的系统,请在 /etc/docker/daemon.json
中写下方Json内容(若文件不存在请新建该文件)MacOS
用户,在任务栏点击 Docker应用图标 -> Perferences… -> Docker Engine。在输入框中填入下方Json内容,点击Apply & Restart
按钮,Docker 就会重启并应用配置的镜像地址了。Win10
用户,在系统右下角托盘 Docker 图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Engine。在输入框中填入下方Json内容,点击Apply & Restart
按钮{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com",
"https://reg-mirror.qiniu.com/"
]
}
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
docker info
,如果从结果中看到了如下内容,说明配置成功。Registry Mirrors:
https://registry.docker-cn.com/
Docker for Mac 、Docker for Windows
自带 docker-compose 二进制文件,安装 Docker 之后可以直接使用,执行docker-compose --version
查看版本号测试$ docker --help
Usage: docker COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-D, --debug Enable debug mode
--help Print usage
-H, --host list Daemon socket(s) to connect to (default [])
-l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
container Manage containers
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
volume Manage volumes
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Run 'docker COMMAND --help' for more information on a command.
docker pull #从远程仓库拉取镜像到本地
docker push #推送本地镜像到远程仓库
docker search #在仓库搜索镜像
docker login #登录到官方仓库Docker Hub
docker logout #退出登录
docker build #从Dockerfile构建镜像
docker pull #同上
docker push #同上
docker history #显示镜像的历史信息
docker images #列出镜像
docker rmi #删除镜像
docker tag #给镜像打上tag标签
docker run #创建容器并启动容器
docker create #创建容器
docker commit #将修改后的容器生成镜像
docker load #从压缩包中加载镜像
docker import #从归档文件中创建镜像
docker save #将镜像保存到压缩文件
docker attach #依附到一个正在运行的容器中
docker exec #进到正在运行的容器中执行命令
docker cp #在容器和本地系统间复制文件
docker update #将一个容器内所有的进程从暂停状态中恢复
docker ps #列出主机中的容器
docker port #查找一个nat到私有网口的公共口
docker top #查看一个容器中正在运行的进程信息
docker logs #查看日志文件
docker diff #检查容器内文件系统的修改
docker status #输出容器的资源使用统计信息
docker wait #阻塞直到容器终止
docker start #启动已创建的容器
docker pause #暂停运行中的容器
docker unpause #使暂停的容器恢复运行
docker stop #停止容器运行
docker rename #容器改名
docker restart #容器重启
docker kill #关闭运行中的容器
docker rm #删除容器
docker export #导出容器内容为tar包
docker run #同上
docker create #同上
docker commit #同上
docker events #从服务端获取实时的事件
docker info #查看系统相关信息
docker inspect #显示Docker对象的具体配置信息,包括容器,镜像,网络等
docker version #输出Docker的版本信息
docker container #容器管理
docker image #镜像管理
docker network #网络管理
docker node #节点管理
docker plugin #插件管理
docker secret #管理敏感数据及普通服务配置项
docker service #服务管理
docker stack #栈管理
docker swarm #集群管理
docker system #管理系统信息
docker volume #卷管理
Docker
使用 Google
公司推出的 Go
语言 进行开发实现,基于 Linux
内核的 cgroup,namespace
,以及 AUFS
类的 Union FS
等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器
对比传统虚拟机总结
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
Docker
现已成为云计算
主流工具,你甚至可以理解为云计算已离不开Docker
VMWare Harbor
和 Sonatype Nexus
甚至提供了用户界面以及一些高级功能。类
与对象实例
镜像包含操作系统完整的 root 文件系统,其体积往往是庞大的,但 Docker 设计时,就充分利用 Union FS 的技术,将其设计为分层存储的架构
数据卷(Volume)
或者绑定宿主目录,直接对宿主(或网络存储)发生读写,避免配置文件或数据丢失实现一个项目,除了项目服务容器本身,往往还需要再加上后端的数据库MySQL,中间件Redis、Elasticsearch、MQ等等。甚至可以想象一下当你的Docker
中有成百上千的容器集群需要启动,如果一个个地启动那肯定是无法忍受的
有了Docker-Compose
你只需要编写一个文件,在这个文件里面声明好要启动的容器,配置一些参数,执行一下这个文件,Docker就会按照你声明的配置去把所有的容器启动起来
可以理解为Docker-Compose
是用来批量执行管理你的容器
但是
Docker-Compose
只能管理当前主机上的Docker
,无法去启动其他主机上的Docker容器
Kubernetes
就是一款用来管理多主机上的Docker
容器的工具,可以负责帮你启动容器,监控容器状态,如果容器的状态不正常重新帮你启动一个新的容器来提供服务,同时也提供服务之间的负载均衡,而这些东西Docker-Compose
是做不到的Kubernetes
是 Google
在2014年创建管理的,是 Google 十多年大规模容器管理技术Borg
的开源版本Kubernetes
更加强大,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。特点如下: