Docker是一个快捷、轻便的系统级虚拟化技术,开发者和系统管理员可以使用它构建具备所有必要依赖项的应用程序,并将其作为一个包发布。
Docker与其他如VMWare、Xen、以及VirtualBox等工具的虚拟化方式不同,每个虚拟机不需要单独的客户操作系统。
所有的Docker容器有效地共享同一个主机系统内核。每个容器都在同一个操作系统中的隔离用户空间中运行。
Docker容器可以在任何Linux版本上运行。比如说使用Centos或是Ubuntu,彼此之间能相互开发、共享并分发 Docker镜像。
无需担心操作系统、软件以及自定义设置,任何事都不用担心。只要机安装了Docker,就能持续开发。简言之,Docker能够在任何地方运行!
Docker镜像和Docker容器的区别:Docker镜像是一个描述容器应该如何表现的文件,而 Docker容器是 Docker镜像的运行(或停止)状态。
为了安装并配置Docker ,你的系统必须满足下列最低要求:
在Linux终端上运行以下命令验证内核以及架构详细信息:
bashuname -a
只要你的系统内核版本不低于3.10 ,并且是64位系统,Docker一般都会正常运行。
bashsudo apt update && sudo apt upgrade
bashsudo apt-get update && sudo apt-get install -y wget
bashwget -qO- get.docker.com | bash
bash#查看docker版本
docker -v
#查看docker状态
sudo systemctl status docker
#允许开机启动docker
sudo systemctl enable docker
#测试docker hello world
sudo docker run hello-world
bash# 查看可用版本
sudo docker search 容器名
# 拉取镜像
sudo docker pull 镜像名
# 查看已安装镜像
sudo docker images
创建一个新的容器并运行
bashsudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用的参数说明:
-a:stdin:指定标准输入输出内容类型,可选STDIN/STDOUT/STDERR三项;
-d:后台运行容器,并返回容器ID;
-i:以交互模式运行容器,通常与-t同时使用;
-P:随机端口映射,容器内部端口随机映射到主机的端口
-p:指定端口映射,格式为:主机(宿主)端口:容器端口
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
--name="xxx":为容器指定一个名称;
--dns 8.8.8.8:指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com:指定容器DNS搜索域名,默认和宿主一致;
-h "xxx":指定容器的hostname;
-e username="ritchie":设置环境变量;
--env-file=[]:从指定文件读入环境变量;
-m:设置容器使用内存最大值;
--net="bridge":指定容器的网络连接类型,支持bridge/host/none/container四种类型;
--volume , -v:绑定一个卷
bash# 列出容器
sudo docker container ls
sudo docker container ps
sudo docker container list
sudo docker ps
常用的参数说明:
-a, --all:列出所有的容器,包括停止运行的容器。-s, --size:显示容器的大小。-q, --quiet:仅显示容器ID。-f, --filter:过滤器,支持key=value的格式进行过滤,多个过滤器使用-f "key=value" -f "key=value"格式。bash#attach,如果从这个stdin中exit,会导致容器的停止
sudo docker attach 容器名/容器ID
#exec,如果从这个stdin中exit,不会导致容器的停止
sudo docker exec -it 容器名/容器ID [bash/sh]
bashsudo docker container stop 容器名/容器ID sudo docker stop 容器名/容器ID
可以使用-t, --time设置kill之前的等待时间。
bashsudo docker container rm 容器名/容器ID
sudo docker rm 容器名/容器ID
sudo docker rm不能直接删除运行中的容器,可是使用-f, --force参数强制删除,一般不推荐这么做,建议先使用sudo docker stop停止容器,然后再使用sudo docker rm删除容器,给容器留出一些时间进行清理等工作。
bash#删除所有停止的容器
sudo docker rm $(docker ps -a -q)
sudo docker container prune -f
Docker Compose是一个可用于定义和运行多容器Docker应用程序的工具。使用Docker Compose,你可以使用Compose文件来配置应用程序的服务。然后,使用单个命令,你可以从配置中创建和启动所有服务。
在github上查看最新的Docker Compose版本:Docker Compose
bash#运行命令安装最新稳定的Docker Compose文件
sudo curl -L "https://github.com/docker/compose/releases/download/{版本号}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#赋予Docker Compose文件可执行权限
sudo chmod +x /usr/local/bin/docker-compose
#查看Docker Compose版本
docker-compose --version
创建docker-compose.yaml,配置需要运行的容器
bash#运行Docker Compose
sudo docker-compose up -d
#查看实时日志
sudo docker-compose logs -f
#停止Docker Compose
sudo docker-compose down
#重新拉取docker-compose.yaml配置的镜像版本
sudo docker-compose pull
bash#删除docker及安装时自动安装的包
sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc
#查看docker相关包是否卸载干净
dpkg -l | grep docker
#删除相关插件
sudo apt-get autoremove docker-ce-*
#删除docker的相关配置目录
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
#查看docker版本,确定是否卸载完毕
docker --version
安装docker和docker-compose