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 https://download.docker.com/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] https://download.docker.com/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.access.redhat.com", "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 拉取镜像的过程

  1. 首先服务器上运行Docker引擎
  2. 本地服务器从Docker远程镜像服务器下载镜像到本地
  3. 本地服务器通过Docker引擎启动镜像的容器实例

2.2 配置镜像加速器

打开配置文件

sudo vim /etc/docker/daemon.json
# 在文件中插入如下内容
{"registry-mirrors": ["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"]
}

重载配置并重新启动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 安装部署与基础操作相关推荐

  1. Docker安装部署及使用

    Docker安装部署及使用 实验内容 安装Docker. 创建自己的第一个容器 容器使用,查看.启动.进入.停止.删除对应容器. 容器安装MySQL. Experimental environment ...

  2. saiku docker配置部署_【安装教程】01 Gitea Docker 安装部署 - 【SkywenCode】技术团队基...

    在2016年-2019年,SkywenCode技术团队使用码云Gitee 作为线上代码库管理,基于敏捷开发和持续构建的思路,我们整体基础建设以Drone / Jenkins + Docker 的方式构 ...

  3. ITOP-1 Docker安装部署itop

    ITOP-1 Docker安装部署itop 一.Docker安装部署 1.下载docker源 2.yum安装docker,并运行 3.配置docker镜像加速地址 二.ITOP部署 1.登录[dock ...

  4. 【Docker】使用docker安装部署NextCloud私人网盘

    [Docker]使用docker安装部署NextCloud私人网盘 1.查询并下载NextCloud镜像 执行命令 docker search nextcloud docker pull nextcl ...

  5. docker安装部署LDAP

    docker安装部署OpenLdap 使用docker安装openldap前的工作准备 首先你的电脑端需要先安装docker 然后就是准备开始安装openldap 1.获取相关的镜像: docker ...

  6. docker安装部署ansible并打包

    docker安装部署ansible并打包 前言 部署过程 效果展示 前言 ansible作为一个高效的自动化运维管理工具,在管理服务器和网络设备上有着明显的优势,但是ansible需要在主控端安装相关 ...

  7. Docker安装部署RabbitMQ

    https://blog.csdn.net/super_rd/article/details/70792746  http://muxiulin.cn/archives/category/rabbit ...

  8. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...

  9. Docker实战:Docker安装部署RabbitMQ

    使用Docker安装部署RabbitMQ 1.docker search rabbitmq:management 2.docker pull rabbitmq:management 注意:如果dock ...

最新文章

  1. python清华大学出版社第三章课堂作业的答案_Python程序设计清华大学出版社董付国第3章选择与循环题库.ppt...
  2. Nginx 的启动、停止、平滑重启、信号控制和平滑升级
  3. jQuery源码dom ready分析
  4. python用表达式解密密文_基于Python解密仿射密码
  5. java集合框架栈_自己实现集合框架(九):栈接口
  6. 根据WordCloud的API参数来自定义词云
  7. 【机器学习】关于机器学习模型可解释(XAI),再分享一招!
  8. uniapp自定义条件编译-定制化产品
  9. 数字后端——时钟树综合
  10. C++中内存泄漏的检测方法介绍
  11. Java 连接LDAP实现验证与查询用户
  12. 在线编辑器XhEditor
  13. paip.c++ qt 项目工程互相引用的方法
  14. iozone文件系统测试工具
  15. Linux 设备文件/dev/*详解、查询
  16. oracle bbed 推进scn
  17. C# 什么是Asp.net Core?和 .net core有什么区别?
  18. 一篇文章搞懂前端学习方法与构建知识体系
  19. 优傲优化福特汽车装配线生产效率
  20. 乐视智能门锁S7评测

热门文章

  1. 异数OS-织梦师-管仲(八) 并发危机解决之道
  2. 【项目管理】对管理的认识与思考
  3. Aurora依托AWS加速Aurora Driver的开发
  4. babel的plugins和presets解析
  5. 固态硬盘母盘制作 linux,Windows系统母盘制作教程
  6. 怀念以前学PASCAL的时光~~~
  7. AE学习:初体验AE
  8. 递归分治问题之找出两个有序序列的中间值
  9. 如何制作对联式广告所需的flash图像文件
  10. 赛效:WPS文字中插入表格如何让每页都有表头