Docker基本操作

1. 引言

在虚拟化技术中,docker占据了重要的地位,很多公司在Devops开发运维中都会用到,在多服务应用,结合k8s,能让测试上线提高效率,在此不深入的讲解,还是那句话,我们是做开发的,不是做运维,了解就可以,如果需要带运维团队,也需要知道

2. Docker的安装

实例的ubuntu系统为例来说明,系统版本为18.04,安装docker很简单,一句话搞定:

Sudo apt-get install docker.io

要注意我们首先要设置好国内的镜像源,修改/etc/apt/source.list问价,将默认的镜像域名更改为国内的,比如阿里云、163、清华...

执行后等待一会儿,喝杯茶,刷刷手机,看看新闻,几分钟就安装好了,安装完成后测试:docker -v,查看docker的版本,会安装的当前最新版本。

同样的,docker安装完成之后,修改为国内的镜像源,在/etc/docker/daemon.json中,添加国内docker镜像源

3. Docker的基本操作

3.1 拉取镜像

镜像是已经打包好了一个或多个应用程序,可以在docker的运行

~$ docker pull tomcat

我们的演示都是以tomcat镜像为例,在远程仓库中拉取镜像用pull,上面的命令直接执行,是拉取tag 为lastest的镜像,而且是官方的,如果我们需要具体那一个版本的,首先执行:

Docker search tomcat

找到自己想要的tag,然后pull下来

3.2 查看镜像

查看镜像用命令:

~$docker images

我们先前拉取了一个tomcat镜像,如下图所示




批量删除已退出的dockers 批量删除docker镜像_批量删除已退出的dockers


乍一看528M,一个tomcat有这么大吗,肯定不是的,这是需要的所有环境一起的,而且docker是分层的,很多内容是可以共享了,第一个可能大一些,后续如果有其他的相关内容,镜像就会小很多

几个参数从前到后一次是镜像的名称,版本,镜像id,创建时间和镜像的大小,docker的镜像更新的速度非常快,所以看到这个tomcat的镜像是九天前的,这是最新版本,那么怎么查看具体的版本了,我们可以这个命令:


批量删除已退出的dockers 批量删除docker镜像_docker查看镜像版本_02


Docker image inspect 是查看镜像的详细信息,然后筛选出版本的信息,我们可以看到这儿的tomcat的版本是8.5.53

3.3 运行镜像

命令:docker run -it tomcat -p 8080:8080 -d bash


批量删除已退出的dockers 批量删除docker镜像_批量删除已退出的dockers_03


解释一个这几参数是什么意思:

run是执行镜像的意思

-it以交互式的方式执行,也就是我们可以看到的执行的过程

-p是映射端口,将主机的8080与容器里面的8080端口映射,访问主机的8080实际上就会访问容器里面的内容

-d以守护线程的方式执行

bash是指定交互的方式,我们可以看到,运行容器后,进入到容器里面了

以run的方式运行,交互性界面退出,容器也跟着退出了,可以用:

docker exec -it container-id bash,这种方式在后台运行,在测试的时候方便很多

3.4 查看运行的容器

命令:docker ps -a


批量删除已退出的dockers 批量删除docker镜像_docker 批量删除镜像_04


在这儿我执行了三次上面的命令所以有三个容器在运行,从前到后的意思是:

容器id,镜像以及端口的映射关系,名称,创建时间,容器的状态

名称可以在运行容器时指定,用--name,

几种状态要知道:创建、运行、暂停、停止、退出

3.5容器的暂停/停止/

暂停命令:docker pause container-id

停止命令:docker stop container-id


批量删除已退出的dockers 批量删除docker镜像_docker查看镜像版本_05


运行之后的状态变了,stop就是已经退出了

3.6容器的启动与重启

启动命令:docker start container-id

重启命令:docker restart container-id

3.7 容器的移除

删除命令: docker rm container-id

强制杀死:docker kill container-id

3.8清理未运行的容器

清理命令:docker container prune

3.8 docker 镜像的移除

移除命令:docker rmi image-id

根据镜像id移除,也支持批量化的移除方式

4. 自定义镜像:用Dockerfile制作tomcat镜像

我们目标很简单,创建一个tomcat镜像,创建一个1.txt文件,写一个hello world在里面,然后将镜像运行起来,访问页面,能够显示hello world

4.1 创建一个镜像目录,mkdirs /usr/local/images/tomcat

4.2 创建一个txt文件,写入helloworld

touch 1.txt

echo “hello world” >> 1.txt

4.3 创建Dockerfile文件,这个名字必须的,而且是必须这个文件,然后写入

touch Dockerfile

chmod +x Dockerfile

4.4 在Dockerfile中写入构建脚本


批量删除已退出的dockers 批量删除docker镜像_批量删除已退出的dockers_06


4.5 构建镜像

Docker build -t mowen/tomcat .

4.6 运行镜像

Docker run -d -it -p 8080:8080 mowe/tomcat

4.7 在浏览器输入ip:port/1.txt访问,是否能够显示hello world, 这样我们成功创建一个可以运行的镜像

5. 总结

在此docker的基本使用已经讲解完,对于已经熟练的开发人员,学习起来很快,一天可以入门完成这些东西