什么是docker
docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
就像我们使用的vmware或virtualbox软件,docker也提供一种虚拟化服务,方便搭建和部署需要的环境,但与前者的虚拟化方式相比有诸多好处。
docker系统有两个程序:docker服务端和docker客户端。服务端是一个服务进程,管理着所有的容器。(下面会介绍什么叫容器)docker客户端则扮演着服务端的远程控制器,可以用来控制docker服务端进程。大部分情况下,docker服务端与客户端运行在同一台机器上。
关于docker中的基本概念
- **镜像(Image):**镜像就相当于是一个root文件系统。比如官方镜像ubuntu:16.04就包含了一套完整的Ubuntu16.04最小系统的root文件系统。
- **容器(Container):**镜像和容器的关系,就像面向对象中的类与实例的关系。镜像是容器的蓝本,容器是镜像运行的实体。容器可以被创建、启动、暂停、停止、删除等。
- **仓库(Repository):**仓库可以看做一个代码控制中心,用来保存镜像。
镜像加速
拉取镜像的时候,DockerHub在国外,国内拉取的时候可能会遇到困难,因此可以部署镜像加速器。
网易:https://hub-mirror.c.163.com/
阿里云:https://<登录控制台获取>.mirror.aliyuncs.com
七牛云:https://reg-mirror.qiniu.com
在docker版本较新时,可以通过daemon config进行配置,配置文件位于/etc/docker/daemon.json
(没有该文件时创建该文件)
{
"registry-mirrors":["<your accelerate address>"]
}
再重启Docker Daemon。
sudo systemctl daemon-reload # 重启守护进程
sudo systemctl restart docker # 重启docker服务
sudo systemctl stop docker # 关闭docker服务
or
sudo service docker restart # 重启docker服务
sudo service docker stop # 关闭docker服务
使用docker
- 查看docker版本信息
docker version
- 搜索可用的docker镜像
docker search <image name>
- 拉取可用的镜像
拉取镜像时需要完整的名字,在docker的镜像索引网站上,镜像都是采用用户名/镜像名
的方式存储的,在拉取时需要使用完整的名称。还有一些基础镜像,如ubuntu,经官方验证,不用使用用户名可直接使用镜像名。docker pull learn/tutorial
- 运行docker容器并在容器中运行命令
docker run有两个参数,一个是镜像名,另一个是在镜像中要运行的命令。
使用apt-get时需要与命令行进行交互,当前在docker中无法响应这种交互,因此使用-y选项,可避免错误。docker run learn/tutorial echo "Hello docker!"
docker run learn/rutorial apt-get install -y ping
- 保存对容器的修改
docker ps -l
查容器iddocker commit <container id> <新镜像名>
- (跟git有点像)
- 检查运行中的镜像
docker inspect <image id>
- 发布自己的镜像
发布自己的镜像,既可以方便自己重用,也可以方便他人。命令docker push
,docker images命令可以列出所有安装过的镜像,push可以将镜像发布到自己的空间下面。命令docker login [OPTIONS] [SERVER]
用来登录一个docker仓库。选项-u -p分别用来指定用户名和密码。
docker命令
reference
这几天复现之前的ctf题总是遇到docker来搭建环境,对docker的认识还只局限于几个命令,就决定再看看教程,记录记录;写完,却又发现还是很浅,docker-compose、dockerfile等都没涉及,学无止境 冲!