Docker 初探
学习docker
,最忌讳的是一上来就被各种概念弄迷糊,初学者可以完全先避开理论,从敲命令
开始。当我把命令敲熟以后,我们自然就知道docker是怎么回事了,也才能体会docker究竟帮我们解决了哪些痛点。
安装
docker的安装需要注意以下两点:
-
官方推荐在ubuntu上安装
-
如果使用centos,最好是在centos7以上安装
简单使用
安装成功之后,我们启动它,并让docker随开机启动。
systemctl start docker
systemctl enable docker
docker info //查看docker概要信息
镜像和容器
拉取
在讲镜像之前,我们先介绍一下docker hub网站,我们可以在上面寻找我们需要的镜像。
比如,我们在这个网站搜索mysql
。
一般来说,标记有office
的都是docker官方发布的镜像。
我们进入这个主页:
mysql image
这里面记录了发布者对这个镜像的详细说明,我们注意到,提示我们使用如下这条命令:
docker pull mysql
这条命令的意思就是,拉取mysql镜像,我们还注意到这里提供了不同mysql版本的镜像,这里默认拉取的是latest
版本。
如果我们想指定版本,比如5.7.18
版本,我们可以这样来做:
docker pull mysql:5.7.18
在终端输入这条命令后,我们稍作等待。
下载完之后,我们输入一下命令来查看:
docker images
docker.io/mysql 5.7.18 44a8e1a5c0b2 10 months ago 407 MB
可以看到,上面详细的列出了这个镜像的信息,包括镜像名称,版本,id,大小等等。
使用
我们已经成功拉取了mysql 5.7.18
这个镜像,那么我们如何使用呢。我们使用下面的命令,继续探索:
docker run -di --name=mysql1 -p 9906:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.18
docker exec -it mysql1 /bin/bash
这两条命令的意思是:
-
运行容器 mysql1,暴露容器的3306端口,映射宿主机的9906端口。
-
进入容器交互式环境。
之后,我们所在的位置,就是容器内部了
。
为了测试此时mysql是正常的,我们有两个方法:
一.输入命令:
mysql -uroot -p123456
即可进入mysql客户端
二.远程连接
使用navicat
远程连接,需要注意的是,此时端口不是3306
host :宿主机host
port:9906
用户:root
密码:12346
即可连接。
巩固
为了巩固一下上述命令,我们再玩一把node.js
来练习。
第一步:拉取镜像
docker pull node
第二步:运行并进入容器
docker run -di --name=nodejs node
//在宿主机上创建一个index.js 将其拷贝到容器中
touch index.js
vi index.js // write code console.log('Hello World');
docker cp ./index.js nodejs:/
拷贝至容器根目录
docker exec -it nodejs /bin/bash
node index.js
Hello World
此外,我们还可以使用 -v
进行宿主机和容器的目录映射,大家可以自行探索。
Tomcat
作为java程序员,我们还是绕不过Tomcat的。
拉取镜像
docker pull tomcat:8
运行容器
docker run -di --name=tomcat1 -p 8080:8080 tomcat:8
docker exec -it tomcat1 /bin/bash
我们进入到/usr/local/tomcat/webapps/ROOT下
创建一个index.html,写上hello
之后,访问容器的宿主机ip:8080就可以看到hello的内容。
二次打包
显然,tomcat容器被我们修改过内容,我们可以将它再次制作成镜像,为我们自己所用。
docker commit tomcat1 tomcatx
tomcat1是容器名
tomcatx 是新的镜像名
docker images
推送自己的镜像到阿里云
阿里云docker相关的版块有丰富的说明和提示,感兴趣的同学可自行探索,不再赘述。
实践
我们以gogs为例,来演示docker的运用。
gogs
是类似gitlab
的git私服。
拉取镜像
docker pull gogs/gogs
网友评论