Docker入门学习及其安装
1、Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上面,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
2、Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操作系统,安装好后什么都有了。
3、Docker的核心概念:
a、docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
b、docker客户端(Client):连接docker主机进行操作;
c、docker仓库(Registry):用来保存各种打包好的软件镜像;
d、docker镜像(Images):软件打包好的镜像;放在docker仓库中;
e、docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
4、使用Docker的步骤:
(1)、安装Docker
(2)、去Docker仓库找到这个软件对应的镜像;
(3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
(4)、对容器的启动停止就是对软件的启动停止;
5、安装Docker的步骤。
a、检查内核版本,必须是3.10及以上。Docker要求Centos系统的内核版本高于3.10。
uname -r
b、安装docker。
yum install docker
c、输入y确认安装。
d、启动docker。
[root@slaver1 ~]# systemctl start docker
[root@slaver1 ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
e、开机启动docker。
[root@slaver1 ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
f、停止docker。
systemctl stop docker
由于我的linux的内核不是3.10以上的,我的是2.6.32-358.el6.i686,所以要升级一下。
升级软件包以及内核(升级虚拟机内核)。必须使用root权限,不然报错,说没权限的。请注意,必须联网的,不然没法下载升级。
使用yum update貌似没有什么用,下载了东西挺多。
参考了网址https://blog.csdn.net/jeffleo/article/details/70904150,将内核升级到了3.10以上版本。
后来发现,我的CentOs是32的,所以可能满足不了安装Docker的需求。
所以直接下载了最新版的CentOs7.0版本的,安装步骤和之前的不一样,这里给一个链接吧https://blog.csdn.net/babyxue/article/details/80970526,就不自己写了。
安装CentOs6.0版本的链接https://blog.csdn.net/weixin_42873937/article/details/81840094。哈哈哈,折腾了一下午,所以能别用32位,就别用32的,不然最新的东西还是不支持啊。
6、确定了自己CentOS可以安装部署Docker,那就开始搞吧,CentOS的界面版本,确实比之前的好看了,安装过程也美化了很多的。
安装过程如下所示:
1 [root@slaver4 package]# yum install docker 2 已加载插件:fastestmirror, langpacks 3 Loading mirror speeds from cached hostfile 4 * base: centos.ustc.edu.cn 5 * extras: centos.ustc.edu.cn 6 * updates: ap.stykers.moe 7 正在解决依赖关系 8 --> 正在检查事务 9 ---> 软件包 docker.x86_64.2.1.13.1-96.gitb2f74b2.el7.centos 将被 安装 10 --> 正在处理依赖关系 docker-common = 2:1.13.1-96.gitb2f74b2.el7.centos,它被软件包 2:docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 11 --> 正在处理依赖关系 docker-client = 2:1.13.1-96.gitb2f74b2.el7.centos,它被软件包 2:docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 12 --> 正在处理依赖关系 subscription-manager-rhsm-certificates,它被软件包 2:docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 13 --> 正在检查事务 14 ---> 软件包 docker-client.x86_64.2.1.13.1-96.gitb2f74b2.el7.centos 将被 安装 15 ---> 软件包 docker-common.x86_64.2.1.13.1-96.gitb2f74b2.el7.centos 将被 安装 16 --> 正在处理依赖关系 skopeo-containers >= 1:0.1.26-2,它被软件包 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 17 --> 正在处理依赖关系 oci-umount >= 2:2.3.3-3,它被软件包 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 18 --> 正在处理依赖关系 oci-systemd-hook >= 1:0.1.4-9,它被软件包 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 19 --> 正在处理依赖关系 oci-register-machine >= 1:0-5.13,它被软件包 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 20 --> 正在处理依赖关系 container-storage-setup >= 0.9.0-1,它被软件包 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 21 --> 正在处理依赖关系 container-selinux >= 2:2.51-1,它被软件包 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 22 --> 正在处理依赖关系 atomic-registries,它被软件包 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 需要 23 ---> 软件包 subscription-manager-rhsm-certificates.x86_64.0.1.21.10-3.el7.centos 将被 安装 24 --> 正在检查事务 25 ---> 软件包 atomic-registries.x86_64.1.1.22.1-26.gitb507039.el7.centos 将被 安装 26 --> 正在处理依赖关系 python-pytoml,它被软件包 1:atomic-registries-1.22.1-26.gitb507039.el7.centos.x86_64 需要 27 ---> 软件包 container-selinux.noarch.2.2.99-1.el7_6 将被 安装 28 ---> 软件包 container-storage-setup.noarch.0.0.11.0-2.git5eaf76c.el7 将被 安装 29 ---> 软件包 containers-common.x86_64.1.0.1.35-2.git404c5bd.el7.centos 将被 安装 30 ---> 软件包 oci-register-machine.x86_64.1.0-6.git2b44233.el7 将被 安装 31 ---> 软件包 oci-systemd-hook.x86_64.1.0.2.0-1.git05e6923.el7_6 将被 安装 32 ---> 软件包 oci-umount.x86_64.2.2.3.4-2.git87f9237.el7 将被 安装 33 --> 正在检查事务 34 ---> 软件包 python-pytoml.noarch.0.0.1.14-1.git7dea353.el7 将被 安装 35 --> 解决依赖关系完成 36 37 依赖关系解决 38 39 ================================================================================================================================ 40 Package 架构 版本 源 大小 41 ================================================================================================================================ 42 正在安装: 43 docker x86_64 2:1.13.1-96.gitb2f74b2.el7.centos extras 18 M 44 为依赖而安装: 45 atomic-registries x86_64 1:1.22.1-26.gitb507039.el7.centos extras 35 k 46 container-selinux noarch 2:2.99-1.el7_6 extras 39 k 47 container-storage-setup noarch 0.11.0-2.git5eaf76c.el7 extras 35 k 48 containers-common x86_64 1:0.1.35-2.git404c5bd.el7.centos extras 21 k 49 docker-client x86_64 2:1.13.1-96.gitb2f74b2.el7.centos extras 3.9 M 50 docker-common x86_64 2:1.13.1-96.gitb2f74b2.el7.centos extras 96 k 51 oci-register-machine x86_64 1:0-6.git2b44233.el7 extras 1.1 M 52 oci-systemd-hook x86_64 1:0.2.0-1.git05e6923.el7_6 extras 34 k 53 oci-umount x86_64 2:2.3.4-2.git87f9237.el7 extras 32 k 54 python-pytoml noarch 0.1.14-1.git7dea353.el7 extras 18 k 55 subscription-manager-rhsm-certificates x86_64 1.21.10-3.el7.centos updates 207 k 56 57 事务概要 58 ================================================================================================================================ 59 安装 1 软件包 (+11 依赖软件包) 60 61 总下载量:23 M 62 安装大小:81 M 63 Is this ok [y/d/N]: y 64 Downloading packages: 65 警告:/var/cache/yum/x86_64/7/extras/packages/container-selinux-2.99-1.el7_6.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 66 container-selinux-2.99-1.el7_6.noarch.rpm 的公钥尚未安装 67 (1/12): container-selinux-2.99-1.el7_6.noarch.rpm | 39 kB 00:00:05 68 (2/12): atomic-registries-1.22.1-26.gitb507039.el7.centos.x86_64.rpm | 35 kB 00:00:06 69 (3/12): container-storage-setup-0.11.0-2.git5eaf76c.el7.noarch.rpm | 35 kB 00:00:06 70 (4/12): containers-common-0.1.35-2.git404c5bd.el7.centos.x86_64.rpm | 21 kB 00:00:00 71 (5/12): docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64.rpm | 96 kB 00:00:00 72 (6/12): oci-register-machine-0-6.git2b44233.el7.x86_64.rpm | 1.1 MB 00:00:00 73 (7/12): oci-systemd-hook-0.2.0-1.git05e6923.el7_6.x86_64.rpm | 34 kB 00:00:00 74 (8/12): oci-umount-2.3.4-2.git87f9237.el7.x86_64.rpm | 32 kB 00:00:00 75 (9/12): docker-client-1.13.1-96.gitb2f74b2.el7.centos.x86_64.rpm | 3.9 MB 00:00:00 76 (10/12): python-pytoml-0.1.14-1.git7dea353.el7.noarch.rpm | 18 kB 00:00:00 77 (11/12): docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64.rpm | 18 MB 00:00:07 78 subscription-manager-rhsm-cert FAILED 79 http://mirror.lzu.edu.cn/centos/7.6.1810/updates/x86_64/Packages/subscription-manager-rhsm-certificates-1.21.10-3.el7.centos.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirror.lzu.edu.cn; Unknown error" 80 正在尝试其它镜像。 81 subscription-manager-rhsm-certificates-1.21.10-3.el7.centos.x86_64.rpm 的公钥尚未安装========-] 98 kB/s | 23 MB 00:00:02 ETA 82 (12/12): subscription-manager-rhsm-certificates-1.21.10-3.el7.centos.x86_64.rpm | 207 kB 00:00:04 83 -------------------------------------------------------------------------------------------------------------------------------- 84 总计 1.0 MB/s | 23 MB 00:00:23 85 从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥 86 导入 GPG key 0xF4A80EB5: 87 用户ID : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>" 88 指纹 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 89 软件包 : centos-release-7-6.1810.2.el7.centos.x86_64 (@anaconda) 90 来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 91 是否继续?[y/N]:y 92 Running transaction check 93 Running transaction test 94 Transaction test succeeded 95 Running transaction 96 正在安装 : 2:container-selinux-2.99-1.el7_6.noarch 1/12 97 正在安装 : subscription-manager-rhsm-certificates-1.21.10-3.el7.centos.x86_64 2/12 98 正在安装 : python-pytoml-0.1.14-1.git7dea353.el7.noarch 3/12 99 正在安装 : 1:atomic-registries-1.22.1-26.gitb507039.el7.centos.x86_64 4/12 100 正在安装 : 1:containers-common-0.1.35-2.git404c5bd.el7.centos.x86_64 5/12 101 正在安装 : container-storage-setup-0.11.0-2.git5eaf76c.el7.noarch 6/12 102 正在安装 : 1:oci-register-machine-0-6.git2b44233.el7.x86_64 7/12 103 正在安装 : 1:oci-systemd-hook-0.2.0-1.git05e6923.el7_6.x86_64 8/12 104 正在安装 : 2:oci-umount-2.3.4-2.git87f9237.el7.x86_64 9/12 105 正在安装 : 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 10/12 106 正在安装 : 2:docker-client-1.13.1-96.gitb2f74b2.el7.centos.x86_64 11/12 107 正在安装 : 2:docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64 12/12 108 验证中 : 2:oci-umount-2.3.4-2.git87f9237.el7.x86_64 1/12 109 验证中 : 2:docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64 2/12 110 验证中 : 2:docker-client-1.13.1-96.gitb2f74b2.el7.centos.x86_64 3/12 111 验证中 : 1:oci-systemd-hook-0.2.0-1.git05e6923.el7_6.x86_64 4/12 112 验证中 : 1:oci-register-machine-0-6.git2b44233.el7.x86_64 5/12 113 验证中 : container-storage-setup-0.11.0-2.git5eaf76c.el7.noarch 6/12 114 验证中 : 2:docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 7/12 115 验证中 : 1:containers-common-0.1.35-2.git404c5bd.el7.centos.x86_64 8/12 116 验证中 : python-pytoml-0.1.14-1.git7dea353.el7.noarch 9/12 117 验证中 : 1:atomic-registries-1.22.1-26.gitb507039.el7.centos.x86_64 10/12 118 验证中 : subscription-manager-rhsm-certificates-1.21.10-3.el7.centos.x86_64 11/12 119 验证中 : 2:container-selinux-2.99-1.el7_6.noarch 12/12 120 121 已安装: 122 docker.x86_64 2:1.13.1-96.gitb2f74b2.el7.centos 123 124 作为依赖被安装: 125 atomic-registries.x86_64 1:1.22.1-26.gitb507039.el7.centos container-selinux.noarch 2:2.99-1.el7_6 container-storage-setup.noarch 0:0.11.0-2.git5eaf76c.el7 126 containers-common.x86_64 1:0.1.35-2.git404c5bd.el7.centos docker-client.x86_64 2:1.13.1-96.gitb2f74b2.el7.centos docker-common.x86_64 2:1.13.1-96.gitb2f74b2.el7.centos 127 oci-register-machine.x86_64 1:0-6.git2b44233.el7 oci-systemd-hook.x86_64 1:0.2.0-1.git05e6923.el7_6 oci-umount.x86_64 2:2.3.4-2.git87f9237.el7 128 python-pytoml.noarch 0:0.1.14-1.git7dea353.el7 subscription-manager-rhsm-certificates.x86_64 0:1.21.10-3.el7.centos 129 130 完毕! 131 [root@slaver4 package]#
7、安装完成以后就可以启动docker了。启动docker。
docker -v查看版本号。
设置开机启动docker。
停止docker。
8、Docker的常用命令以及操作。
操作 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字 eg:docker search redis | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。 |
拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id |
docker search mysql检索mysql的服务。先检索再拉取。
docker pull mysql拉取mysql。如果不选择版本,是默认下载最新版本的,所以建议选择一些版本tag的。
docker hub官网:https://hub.docker.com/。选择自己的版本即可。
Docker images查看所有的镜像。
删除指定的本地镜像,docker rmi image-id。
9、docker的容器操作。
软件镜像(微信安装程序)---->运行镜像---->产生一个容器(正在运行的软件,运行的微信);
1 1、搜索镜像。 2 [root@slaver4 /]# docker search tomcat 3 2、拉取镜像。 4 拉取tomcat的最新镜像。 5 [root@slaver4 /]# docker pull tomcat 6 拉取tomcat的指定镜像。 7 [root@slaver4 /]# docker pull tomcat:8.5.42-jdk8-adoptopenjdk-hotspot 8 验证拉取的镜像是否已经拉取完毕。 9 [root@slaver4 /]# docker images 10 3、根据镜像启动容器。 11 [root@slaver4 /]# docker run --name tomcat8.5 -d tomcat:latest 12 [root@slaver4 /]# docker run --name tomcat8.5 -d tomcat:8.5.42-jdk8-adoptopenjdk-hotspot 13 4、docker ps。 14 查看运行中的容器。 15 [root@slaver4 /]# docker ps 16 5、停止运行中的容器。 17 docker stop 容器的id。 18 [root@slaver4 /]# docker stop e2f59739e670 19 停止了以后检查是否还有启动的。 20 [root@slaver4 /]# docker ps 21 6、查看所有的容器。 22 docker ps -a 23 [root@slaver4 /]# docker ps -a 24 7、启动容器。 25 docker start 容器id。 26 [root@slaver4 /]# docker start e2f59739e670 27 8、删除一个容器。 28 docker rm 容器id 29 [root@slaver4 /]# docker rm e2f59739e670 30 9、启动一个做了端口映射的tomcat。下载的tomcat镜像一运行就产生了一个tomcat容器。 31 [root@localhost ~]# docker run -d -p 8080:8080 tomcat 32 -d:后台运行 33 -p: 将主机的端口映射到容器的一个端口 主机端口(虚拟机端口):docker容器内部的端口 34 [root@slaver4 ~]# docker run --name tomcat8.5 -d -p 8080:8080 tomcat:8.5.42-jdk8-adoptopenjdk-hotspot 35 可以在浏览器查看,tomcat是否正常: 36 http://192.168.110.133:8080/ 37 10、为了演示简单关闭了linux的防火墙。 38 service firewalld status ;查看防火墙状态 39 service firewalld stop:关闭防火墙 40 11、查看容器的日志。 41 docker logs container-name/container-id 42 [root@slaver4 ~]# docker logs 3107bc354e9b
10、mysql的安装:
1 1、搜索mysql的镜像 2 [root@slaver4 /]# docker search mysql 3 2、去docker hub找到https://hub.docker.com 对应版本的镜像。然后下载。 4 [root@slaver4 /]# docker pull mysql:5.7.26 5 3、正确的启动mysql,然后检查mysql是否启动成功。 6 案例:docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag 7 [root@slaver4 /]# docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26 8 检查是否启动: 9 [root@slaver4 /]# docker ps 10 需要做端口映射的才可以在虚拟机外面访问: 11 [root@slaver4 /]# docker run -p 3306:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26 12 检查是否启动:然后可以在外部的navicat访问一下看是否可以连通。 13 [root@slaver4 /]# docker ps
如果虚拟机重新启动,启动docker,然后启动你的mysql容器,docker start CONTAINER ID,停止dcker stop CONTAINER ID ,重启dcker stop CONTAINER ID。