Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。
01 Docker 安装
本次安装的操作系统是Ubuntu,并使用Docker仓库进行安装,其他系统的 Docker CE 的安装方式请参考 官方文档
使用Docker仓库进行安装时,在新主机上首次安装 Docker CE 之前,需要设置 Docker 仓库。之后,可以从仓库安装和更新 Docker 。
1.1 设置仓库
首先,更新 apt 包的索引
sudo apt-get update
安装 apt 依赖包,用于通过HTTPS来获取仓库
sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg \lsb-release
添加 Docker 的官方 GPG 密钥
curl -fsSL download.docker./linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
设置稳定版 Docker 仓库
echo \"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] download.docker./linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
1.2 安装 Docker 引擎
更新 apt 包的索引
sudo apt-get update
安装 Docker Engine-Community 和 containerd ,两种方法选其一即可
# 安装最新版本
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 安装特定版本
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
测试 Docker 是否安装成功,可以通过查看docker版本或者运行测试demo验证
# 查看已安装docker版本
docker -v
# 运行 hello-world 测试demo
sudo docker run hello-world
1.3 配置 Docker
Docker Engine V1.12 之后版本,用户可以自行创建 daemon.json 文件对 Docker Engine 进行配置和调整。要点如下:
该文件作为 Docker Engine 的配置管理文件, 里面几乎涵盖了所有 docker 命令行启动可以配置的参数。不管是在哪个平台以何种方式启动, Docker 默认都会来这里读取配置。使用户可以统一管理不同系统下的 docker daemon 配置。相关参数的使用说明,可以参阅 man dockerd 帮助信息,或者参阅官方文档。该--config-file
选项允许您以JSON格式为守护程序设置任何配置选项。此文件使用与键相同的标志名称,但允许多个条目的标志除外,它使用多个标志名称,例如,labels用于label标志。
配置文件中设置的选项不得与通过flags设置的选项冲突。如果文件和标志之间的选项重复,则docker守护程序无法启动,无论其值如何。我们这样做是为了避免静默忽略配置重新加载中引入的更改。例如,如果在配置文件中设置守护程序标签并且还通过–label标志设置守护程序标签,则守护程序无法启动。守护程序启动时将忽略文件中不存在的选项。
Linux上配置文件的默认位置是 /etc/docker/daemon.json。该–config-file标志可用于指定非默认配置。如下示例为简单配置,详细配置项与含义请参考 官方配置文档
# graph 已废弃,使用data-root代替,这个主要看docker的版本
# "graph": "/data/docker",
# Docker运行时使用的根路径,根路径下的内容稍后介绍,默认/var/lib/docker
"data-root": "/data/docker",
# Docker Engine 在 Ubuntu 系统支持 overlay2、aufs、btrfs 三种存储驱动,默认使用 overlay2、
"storage-driver": "overlay2",
# 配置docker的私库地址
"insecure-registries": ["registry.aess.redhat.", "quay.io"],
# 镜像加速的地址,增加后在 docker info中可查看
"registry-mirrors": [],
# Docker 网络,Docker的IP地址配置最好和本地主机IP有映射关系,在出故障时方便找到宿主机,这里将主机地址的后两个数对应到IP网络地址的中间两位
"bip": "172.130.203.0/24",
# 启动Docker的额外参数
"exec-opts": ["native.cgroupdriver=systemd"],
# Docker 容器引擎被杀死时不影响运行在其中的容器运行情况
"live-restore": true
1.4 启动 Docker
先创建docker的数据目录
sudo mkdir -p /data/docker
Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组
sudo usermod -aG docker $USER
启动docker
# 设置开机自启动
systemctl enable docker
systemctl start docker
# 查看docker状态
docker info
02 Docker 镜像管理
2.1 Docker 拉取镜像的过程
首先服务器上运行Docker引擎本地服务器从Docker远程镜像服务器下载镜像到本地本地服务器通过Docker引擎启动镜像的容器实例2.2 配置镜像加速器
打开配置文件
sudo vim /etc/docker/daemon.json
# 在文件中插入如下内容
{"registry-mirrors": ["rsbud4vc.mirror.aliyuncs.","registry.docker-.","docker.mirrors.ustc.edu.","hub-mirror.c.163."]
}
重载配置并重新启动Docker
systemctl daemon-reload
systemctl restart docker
2.3 镜像保存与加载
Docker 管理镜像和管理容器的两组命令的特点:
docker save 保存的是镜像(image),docker export 保存的是容器(container);docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。保存镜像与加载镜像
# 保存镜像,将镜像打包
docker save spring-boot-docker -o /home/wang/docker/spring-boot-docker.tar
# 加载镜像,解压镜像
docker load -i spring-boot-docker.tar
2.4 镜像管理命令
查看镜像列表
docker images
删除镜像
docker rmi -f centos
03 Docker 应用部署
3.1 启动容器
如果docker中没有需要的镜像,使用 docker pull 命令来载入所需镜像
docker pull nginx
使用 run 命令使用镜像启动一个容器
docker run -d -p 80:80 nginx
# 查看端口是否启动成功
netstat -antup | grep 80
run 命令参数说明:
-d 后台运行-p 8080:80 端口映射,将容器的80端口映射到物理机的8080端口3.2 访问容器
正在运行的容器可以使用 exec
命令对其进行访问,访问容器需要指定其 Id 或者名称
(base) ➜ ~ docker ps
(base) ➜ ~ docker exec -it d5e7b813dcb7 /bin/bash
root@d5e7b813dcb7:/#
exec 参数说明:
-i 交互式操作-t 分配一个伪终端container id / container name 指定要访问的容器 id 或者 名称/bin/bash 交互式shell,该参数也可以是 /bin/sh 或者 sh退出容器 直接执行 exit
3.3 停止容器
停止一个容器的运行可以使用如下命令:
docker stop <container ID>
启动已停止的容器使用如下命令:
# 使用如下命令查看所有容器状态
docker ps -a
# 使用如下命令启动已停止的容器
docker start <container ID>
# 或者
docker restart <container ID>
参考资料
官方文档 在Ubuntu上安装Docker
Docker 入门教程
菜鸟教程 Docker教程
Docker配置文件daemon.json解析
更多推荐
操作,基础,Docker
发布评论