Docker 简介
这里引用了《第一本 Docker 书》的解释。
Docker 是一种能够把开发的应用程序自动部署到容器的开源引擎;
容器是直接运行在操作系统内核之上的用户空间,所以它只能运行与底层宿主机相同或相似的操作系统,容器技术可以让多个独立的用户空间运行在同一台宿主机上;
镜像是 Docker 生命周期中的构建或打包阶段,容器是启动或执行阶段。
Docker
遵循客户端-服务器(C/S)
架构模式,Docker 服务器也可以叫做守护进程,Docker 提供了一个命令行工具docker
和一套RESTful API
与守护进程交互,目前,我对 docker 命令行的使用比较熟,所以下面介绍的也是 docker 命令行的基本使用和通过docker-compose
编排容器。Docker
镜像(Image)
是一个特殊的文件系统,它提供了容器运行需要的环境,应用程序,配置文件等。一般来说,构建一个镜像需要一个基本镜像。比如,一个Django
服务的镜像构建需要一个python
基本镜像。
Centos7 安装 Docker
系统环境要求:64 位CPU, 内核版本 3.10 以上
这里只介绍使用 yum 安装。
# 检查系统内核
$ uname -a
# 安装 Docker
$ yum -y install docker
# 启动 Docker 守护进程
$ systemctl start docker
# 也可以设置 Docker 开机自启
$ systemctl enable docker
需要说的是,我这里安装的 Docker 是新版的, 属于 docker-ce
社区版,版本在 17.* 以上。
Docker 基本使用
检查 docker 是否正常工作
$ sudo docker info
这里返回的是 docker 的系统信息,包括 容器和镜像的数量、存储驱动、本地配置信息等。
现在我要通过 docker 部署 jenkins
来介绍 docker 命令行的使用。
-
搜索 jenkins 镜像
$ sudo docker search jenkins
-
拉取镜像:
jenkinsci/jenkins:lts
$ sudo docker pull jenkinsci/jenkins:lts
官方提供的 jenkins 版本太低了,很多插件已经不兼容;这里的
lts
是长期支持(Long Term Support)的缩写。 -
查看 pull 下来的 jenkins 镜像
$ sudo docker images jenkinsci/jenkins lts d7c5abfe8477 5 months ago 703MB
-
创建 jenkins 文件夹
$ mkdir ~/jenkins_home -p # 由于镜像中 Dockerfile 文件,把需要挂载的文件夹的 uid 和 gid 必须是 1000, 所以更改文件的用户及用户组 $ chown -R 1000:1000 ~/jenkins_home/
-
启动 jenkins
$ sudo docker run -idt -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v ~/jenkins_home/:/var/jenkins_home jenkinsci/jenkins:lts
其中,
-d
表示在后台运行容器,-i
保证容器中STDIN
是开启的,-t
给创建的容器分配一个伪tty
终端,这样-it
可提供一个交互式 shell;-p
用于端口映射,:
前面的端口对应于宿主机,后面的则对应于容器;--name
给容器命名,--privileged=true
则容器内的root
将拥有真正的 root 权限;-v
给容器挂载存储卷,:
前面对应的是宿主机的目录,后面的则是挂载到容器内的目录;
-
查看容器
$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ac0e7a62629a jenkinsci/jenkins:lts "/sbin/tini -- /usr/…" 4 seconds ago Up 3 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins # 查看已经在运行的容器 $ sudo docker ps -a
-
其他常见命令
# 查看镜像/容器的元数据 $ sudo docker inspect jenkinsci/jenkins:lts $ sudo docker inspect jenkins # 获取容器的日志 $ sudo docker logs jenkins # 进入容器 $ sudo docker exec -it jenkins bash # 关闭/启动/重启容器 $ sudo docker stop jenkins $ sudo docker start jenkins $ sudo docker restart jenkins # 删除容器/镜像, -f 表示强制性删除 $ sudo docker rm -f jenkins $ sudo docker rmi -f jenkinsci/jenkins:lts
本章小结
本章内容包括介绍了
Docker
, 在 Centos7 安装 docker 的步骤,以及 通过用 docker 部署jenkis
服务来介绍 docker 命令行的基本使用。下一章主要讲如何创建镜像以及将镜像推送到镜像仓库。
该文章转载于我的个人博客:https://s7.zzs7.top/docker.html
原创作品,转载须注明来源!