CentOS上安装Docker引擎
一、前言
1、概述(什么是Docker)
- Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
2、Docker的应用场景
Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
3、环境准备
CentOS7.6(系统为64位、系统内核位3.10以上)
- JDK1.8
二、Docker安装部署
1、卸载旧版本Docker
旧版本的Docker被称为docker或docker-engine。如果安装了这些,请卸载它们以及相关的依赖项。
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
如果yum报告没有安装这些软件包,没关系。
/var/lib/docker/的内容,包括图像、容器、卷和网络,将被保留。Docker Engine软件包现在称为docker-ce。
2、离线安装Docker
如果您无法使用Docker的存储库安装Docker,您可以下载发布版本的.rpm文件并手动安装。每次升级Docker引擎时,都需要下载一个新文件。
- 转到https://download.docker.com/linux/centos/,选择您的CentOS版本。然后浏览到x86_64/stable/Packages/,并下载您想要安装的Docker版本的.rpm文件。要安装夜间或测试(预发布)软件包,请将上述URL中的“stable”一词更改为nightly或test。
- 需要下载一个selinux包:docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm和docker包:docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm,注意版本一定要对应,前面是centos的安装包。
安装Docker引擎,进入您下载Docker软件包的路径,使用yum进行rpm包安装。
sudo yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
sudo yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
在yum install 过程中可能遇到以下警告:
Re-declaration of type docker_t
Failed to create node
Bad type declaration at /etc/selinux/targeted/tmp/modules/400/docker/cil:1
/usr/sbin/semodule: Failed!
Verifying : docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
这是一个已知的安装Docker过程的issue,在更高版本的Docker中可能已经得到了解决。
[
](https://blog.csdn.net/nklinsirui/article/details/80158997)
Docker已安装,但尚未启动。创建docker组,但没有用户添加到组中。
sudo groupadd docker
- Docker守护进程绑定到Unix套接字,而不是TCP端口。默认情况下,Unix套接字归用户root所有,其他用户只能使用sudo访问它。Docker守护进程始终作为root用户运行。
如果您不想用sudo来预设docker命令,请创建一个名为docker的Unix组,并将其添加用户。当Docker守护进程启动时,它会创建一个由docker组成员访问的Unix套接字。
启动Docker
sudo systemctl start docker
sudo systemctl status docker
通过运行hello-world映像来验证Docker引擎是否安装正确
sudo docker run hello-world
- 此命令下载测试映像并在容器中运行。当容器运行时,它会打印消息并退出。这里由于服务器本身无法访问外网,连接报错。
更改Docker镜像源为国内镜像源
内网环境没法pull镜像,但是docker本身可以将已有的镜像导出成tar文件,并且可以再次导入到docker,利用这一点,可以实现离线镜像文件的下载。
找一台可以联网的docker机器,并pull下载需要的镜像文件。然后使用如下命令将镜像文件导出:
docker pull apache/nifi:1.9.0
docker save apache/nifi -o apache_nifi.tar
将tar文件上传到内网docker服务器,使用如下命令导入镜像文件:
docker load -i apache_nifi.tar
查看导入的镜像文件:
docker images
通过上述方式,实现了内网环境下docker的安装和镜像文件下载。
三、Docker操作
docker -h
帮助
- 获取镜像
sudo docker pull NAME[:TAG]
sudo docker pull centos:latest
- 启动Container盒子
sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
sudp docker run -t -i contos /bin/bash
- 查看镜像列表,列出本地的所有images
sudo docker images [OPTIONS] [NAME]
sudo docker images centos
查看容器列表,可看到我们创建过的所有container
sudo docker ps [OPTIONS]
sudo docker ps -a
删除镜像,从本地删除一个已经下载的镜像
sudo docker rmi IMAGE [IMAGE...]
sudo docker rmi centos:latest
- 移除一个或多个容器实例
sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]
- 移除所有微运行的容器
sudo docker rm sudo docker ps -aq
停止一个正在运行的容器
sudo docker kill [OPTIONS] CONTAINER [CONTAINNER...]
sudo docker kill 026e
重启一个正在运行的容器
sudo docker restart [OPTIONS] contains[CONTAINER]
sudo docker restart 026e
停止一个已经停止的容器
sudo docker start [OPTIONS] CONTAINER [CONTAINER..]
sudo docker start 026e
四、Docker制作
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
cat Dockerfile
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
- FROM:指定使用哪个镜像源
- RUN :告诉docker 在镜像内执行命令,安装了什么。
- EXPOSE:暴露的端口号
使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
---> Using cache
---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
---> Using cache
---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......
参数说明:
- -t:指定要创建的目标镜像名
- .:Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
Docker离线安装官方参考文档:https://docs.docker.com/engine/install/centos/#install-from-a-package
Docker离线安装参考文档:https://www.cnblogs.com/shuhe-nd/p/13031531.html
Docker基本操作参考文档:https://www.cnblogs.com/iloverain/p/8980275.html
Docker离线镜像文件导入参考文档:https://blog.csdn.net/cjbfzxz/article/details/106683157