前言
Docker是一个划时代的开源项目,它彻底的释放了计算虚拟化的威力,极大的提高了应用的运算效率,降低了云计算资源供应的成本!无论是应用开发者、运维人员、还是其他信息技术从业人员,都有必要认识和掌握 Docker,节约有限的时间。
来自于:Docker —— 从入门到实践
根据自己的学习和记录,我就讲自己使用docker过程当中遇到的问题以及技巧记录下来,以便自己日后学习温故,同时也可以方便大家共同进步。
安装docker
安装前的检查
- 系统要求
- 64位系统
- 内核版本3.10+
检查内核版本,返回值大于3.10就行,若不是自行升级系统
1
2[root@iZj1fkye8uu7o0Z ~]# uname -r
3.10.0-693.2.2.el7.x86_64使用sudo或者root权限的用户登入终端
- 确保yum是最新的
yum update
开始安装docker
使用
yum
安装docker,yum install -y docker
安装详细过程如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47[root@iZj1fkye8uu7o0Z ~]# yum install -y docker
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 2:1.12.6-61.git85d7426.el7.centos will be installed
--> Processing Dependency: docker-common = 2:1.12.6-61.git85d7426.el7.centos for package: 2:docker-1.12.6-61.git85d7426.el7.centos.x86_64
--> Processing Dependency: docker-client = 2:1.12.6-61.git85d7426.el7.centos for package: 2:docker-1.12.6-61.git85d7426.el7.centos.x86_64
--> Running transaction check
---> Package docker-client.x86_64 2:1.12.6-61.git85d7426.el7.centos will be installed
---> Package docker-common.x86_64 2:1.12.6-61.git85d7426.el7.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================================================================
Package Arch Version Repository Size
================================================================================================================================================
Installing:
docker x86_64 2:1.12.6-61.git85d7426.el7.centos extras 15 M
Installing for dependencies:
docker-client x86_64 2:1.12.6-61.git85d7426.el7.centos extras 3.4 M
docker-common x86_64 2:1.12.6-61.git85d7426.el7.centos extras 80 k
Transaction Summary
================================================================================================================================================
Install 1 Package (+2 Dependent packages)
Total download size: 18 M
Installed size: 63 M
Downloading packages:
(1/3): docker-client-1.12.6-61.git85d7426.el7.centos.x86_64.rpm | 3.4 MB 00:00:00
(2/3): docker-common-1.12.6-61.git85d7426.el7.centos.x86_64.rpm | 80 kB 00:00:00
(3/3): docker-1.12.6-61.git85d7426.el7.centos.x86_64.rpm | 15 MB 00:00:01
------------------------------------------------------------------------------------------------------------------------------------------------
Total 12 MB/s | 18 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64 1/3
Installing : 2:docker-client-1.12.6-61.git85d7426.el7.centos.x86_64 2/3
Installing : 2:docker-1.12.6-61.git85d7426.el7.centos.x86_64 3/3
Verifying : 2:docker-1.12.6-61.git85d7426.el7.centos.x86_64 1/3
Verifying : 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64 2/3
Verifying : 2:docker-client-1.12.6-61.git85d7426.el7.centos.x86_64 3/3
Installed:
docker.x86_64 2:1.12.6-61.git85d7426.el7.centos
Dependency Installed:
docker-client.x86_64 2:1.12.6-61.git85d7426.el7.centos docker-common.x86_64 2:1.12.6-61.git85d7426.el7.centos
Complete!查看上面使用
yum
安装docker是否成功并且已经启动了,查看docker version
显示docker
的client
和server
的信息如下:
1 | [root@iZj1fkye8uu7o0Z ~]# docker version |
如果显示以上信息 ,说明已经成功安装docker
,同时docker
的client
和server
都已经成功运行了。
那么问题来了,成功运行了docker
,但是里面没有镜像,我们如何才能够在其中运行自己的应用程序呢。下面就来介绍如何使用网易蜂巢的镜像中心来安装我们的软件。
也可以使用
docker
的镜像中心,只不过在国内使用这个速度非常慢,我是用的是网易镜像中心
,读者们也可以使用阿里镜像中心或者其他的都行。
安装镜像
使用网易蜂巢镜像中心安装所需镜像
安装Tomcat
安装
Tomcat
,我们只需要在里面搜索tomcat
就行了。其实我们平时使用的过程中就知道,如果想让tomcat
跑起来就必须安装Java
环境。但是在这里使用docker
镜像安装Tomcat
就已经包含Java
环境了,无需另外安装。按照上面的网址进入
网易蜂巢镜像中心
后,需要登录才会进入到入口,然后搜索Tomcat
就行了。
在镜像中心上搜索Tomcat
会发现第一个tomcat
会有一个docker
鲸鱼的标志,这说明这个镜像资源和官方docker镜像保持同步的。那我们点进去,在右边就会有一个下载地址的链接。1
docker pull hub.c.163.com/library/tomcat:latest
这个就是我们需要在终端上面进行git
拉取的仓库地址。docker
命令标志,pull
git命令熟悉的话知道这是下载拉取的意思,hub.c.163.com/library/
仓库地址,tomcat
是镜像名称,:
后面的latest
为tag
标签,表示当前拉取的是最新版本,如果需要其他版本的也可以在这个页面的下方寻找tomcat
镜像的其他版本。
- 根据上面的地址镜像下载
tomcat进项
,操作命令记录如下:- 下载镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[root@iZj1fkye8uu7o0Z ~]# docker pull hub.c.163.com/library/tomcat:latest
Trying to pull repository hub.c.163.com/library/tomcat ...
latest: Pulling from hub.c.163.com/library/tomcat
9af7279b9dbd: Pull complete
31816c948f2f: Pull complete
c59a1cdf83d3: Pull complete
232c7a75d568: Pull complete
de412d312979: Pull complete
80315ba34693: Pull complete
5d3f97bd90e8: Pull complete
dc8dc63f6baa: Pull complete
f6c6e2d67f03: Pull complete
9123b340aa92: Pull complete
76abaea2279d: Pull complete
4476602e3346: Pull complete
12e1fda011bd: Pull complete
Digest: sha256:db1a8ca2fe44449d265e5505f300be6f34fc63211a5506400a0a8c24653af91f
- 下载镜像
最后面的这个sha256:db1a8ca2fe44449d265e5505f300be6f34fc63211a5506400a0a8c24653af91f
表示改镜像在仓库当中的地址编号。
- 查看当前docker当中的镜像
docker images
,操作记录如下:1
2
3[root@iZj1fkye8uu7o0Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.c.163.com/library/tomcat latest 72d2be374029 3 months ago 292.4 MB
- 运行下载的镜像
1 | [root@iZj1fkye8uu7o0Z ~]# docker run -d -p 80:8080 hub.c.163.com/library/tomcat |
上面这个运行命令 docker run -d -p 80:8080 hub.c.163.com/library/tomcat
说明如下docker run
表示运行, -d
表示后台运行docker 分为前台运行,后台运行,前台运行可以通过Ctrl+C进行停止 -p
表示制定宿主机和容器之间的端口映射,在这里-p 80:8080
表示将宿主机80
端口映射到容器的8080
端口。
这里也可以使用
-P
大写来分配端口,表示宿主机将随机分配端口映射到容器端口,容器端口不变。操作如下:
1 | [root@iZj1fkye8uu7o0Z ~]# docker run -d -P hub.c.163.com/library/tomcat |
上面通过命令docker ps
查看当前正在运行的容器,可以看出 Tomcat
正在运行的有两个,而且两个的端口号还不一样,80
是我们上面-p
指定的,32768
是通过-P
随机分配的。而且localhost:80
和localhost:32768
都是可以访问到tomcat
的首页的。
- 暂停容器
在上面提到了使用命令docker ps
可以查看当前正在运行的容器。那么我们可以使用 docker stop CONTAINER ID
进行停止正在运行的容器,比如上面的80
端口的容器的CONTAINER ID
是80e53db67f4b
,现在想将其停止就可以使用docker stop
命令了,而且这个CONTAINER ID
还可以简写,操作记录如下:
1 | [root@iZj1fkye8uu7o0Z ~]# docker stop 80 |
通过docker ps
可以很清楚的看到当前只剩下端口号为32768
的正在运行。同时地址栏当中也已经无法使用localhost:80
进行访问Tomcat
的首页了。
到现在为止,我们就已经在docker
当中安装好了我们的第一个应用, 并且成功运行了。有了Tomcat
我们就可以运行自己的Web应用了,那么问题来了,数据库怎么办呢?下面我就来说说怎么安装数据库吧,其实答题的操作都差不多,镜像中心找到MySQL
的拉取地址,然后终端运行下载镜像,运行,映射端口。
安装MySQL
同样进入网易蜂巢镜像中心,搜索
MySQL
,找到其下载地址。docker pull hub.c.163.com/library/mysql:latest
进入
linux
终端,输入上面下载地址的命令,详细过程如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[root@iZj1fkye8uu7o0Z ~]# docker pull hub.c.163.com/library/mysql:latest
Trying to pull repository hub.c.163.com/library/mysql ...
latest: Pulling from hub.c.163.com/library/mysql
42cb69312da9: Pull complete
e2cf5467c4b5: Pull complete
871ec0232f66: Pull complete
3c0ae7ec690d: Pull complete
d39b43089b70: Pull complete
aa0e7cb4b67c: Pull complete
738db9902d06: Pull complete
ae333863ac05: Pull complete
6d014992204a: Pull complete
09aeca0c9a82: Pull complete
0162083b2de0: Pull complete
Digest: sha256:b2bce1a792237ac5df78877d583f34b09ab023a77130921a6bcce67ce2d24ff0docker run
命令运行下载好的MySQL
镜像。可能运行MySQL
和Tomcat
不太一样,在这里我们不止需要制定映射端口,还需要为MySQL
指定访问的用户名和密码。
1 | [root@iZj1fkye8uu7o0Z ~]# docker run --name root -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 hub.c.163.com/library/mysql |
如上面命令所示,用户名为root
,密码为123456
,我们可以用navicate
测试是否连接上。
上面命令参数的说明详细见网易蜂巢镜像文档当中。详细说明 关于如何创建用户名,如何跨容器连接MySQL等
1 | How to use this image |
使用镜像
进入容器
在刚刚我们创建了Tomcat
和MySQL
的容器,那么如何进入到这些正在运行的容器当中呢。可以使用命令docker ps
查看正在运行的容器。然后使用命令docker exit -it [NAMES] bash
指定需要进入的具体容器是哪一个。这个参数-it
表示使用交互模式运行,同时返回一个可以操作的终端,这里的NAMES
就是docker ps
查看到的容器运行时候最后一个名字。操作记录如下:
1 | [root@iZj1fkye8uu7o0Z ~]# docker ps |
上面很清楚的显示MySQL
的NAMES
是root
,那么我们就可以使用命令docker exec -it root bash
来进入容器,记录如下
1 | docker exec -it root bash |
但是此时只是进入了容器,还需要进入MySQL
怎么操作呢,跟我们平常在Linux
上一样操作,mysql -uroot -p
操作记录如下:
1 | [root@iZj1fkye8uu7o0Z ~]# docker ps |
现在就可以愉快的玩耍了。
退出容器
- 如果使用上面
docker exec -it NAMES bash
方式进入容器,可以直接使用exit
,退出容器,而不会将其停止。
后记
通过学习linux
上部署docker
,平时需要独立安装的各种环境变得简单,同时也可以自行通过Dockerfile
文件来build
自己的镜像,然后pash
到仓库,或者厂商的镜像中心当中,以便日后再用,都是非常方便的。同时也可以在一台宿主机当中部署多个docker
,实现集群服务也是可以的。当然我们也可以使用Web
端的工具来管理docker
,相应的工具名称大家可以自行搜索使用。
联系
聪聪的独立博客 ,一个喜欢技术,喜欢钻研的95后。如果你看到这篇文章,千里之外,我在等你联系。