目录
初始docker
安装docker
docker架构
配置docker镜像加速器
docker进程相关命令
docker镜像相关命令
docker容器相关命令
docker容器的数据卷
初始docker
我们写代码会接触好几个环境,如开发环境、测试环境、生产环境。代码从开发环境打包到测试环境,然后从测试环境打包到开发环境上,但是会出现一个问题,如果开发环境的jdk版本为8,测试环境的jdk环境为7,那么测试代码时就可能出错。因此由于环境不同造成的问题很常见,那么如何解决这类问题呢?
有一种方式就是,将环境和代码装进一个容器里,测试人员就在容器里面进行测试,规避了因为环境不同而造成的问题。最后再将该容器给运维人员进行测试。
docker是一个开源的应用容器引擎,诞生2013年初,基于go语言实现,docker可以让开发者打包他们的应用及依赖包(环境)一起打包到一个轻量级、可移植的容器中,然后发布到任何流行的linux机器上,并且容器之间相互隔离互不影响。
安装docker
本文基于centos 7安装一个docker,docker官网地址:https://www.docker.com/
1、首先准备一个linux系统,确保网络联通
2、使用以下终端命令安装docker
docker架构
docker由三部分组成:客户端(clients)、核心(hosts))、仓库(registries);安装完docker会有一个守护进程启动daemon,里面包含镜像和容器,镜像来源于远程的仓库。客户端docker发送命令给进程,这样进程就启动起来了。
配置docker镜像加速器
一般有阿里云、网易云、中科大等,在这里选择阿里云的镜像加速器;
1、打开浏览器搜素“阿里云”,进行登录;
2、菜单栏的产品与服务搜搜“容器镜像服务”,页面出来后点击菜单栏最下面的“镜像加速器”,根据操作文档配置;
3、直接将该命令复制粘贴到终端控制台即可;
4、cat 验证一下配置是否成功。
docker进程相关命令
1、启动:systemctl start docker
2、查看状态:systemctl status docker
3、停止:systemctl stop docker
4、重启:systemctl restatrt docker
5、开机启动 :systemctl enable docker (每次开机自启动)
docker镜像相关命令
1、查看:docker images
第一列为镜像名称,第二列为版本号。第三列为标识号,第四列为创建时间,第五列为镜像大小;
2、搜索:docker search redis
3、拉取镜像:docker pull redis:版本号(默认为latest)
具体版本号可以在官方查看。
4、删除:
docker rmi 镜像ID
docker rmi 名字:版本
一次性删除所有镜像:
(查看镜像列表ID)docker images -q
docker rmi ' docker images -q'
docker容器相关命令
1、查看容器:docker images
2、创建并进入容器:docker run -it --name=c1(取名) centos:7 /bin/bash
现在就进入到容器内部了
使用-id参数不会自动进入容器内部:docker run -id --name=c2 centos:7
直接进入容器:docker exec -it c2 /bin/bash
3、退出容器:exit
4、查看容器(正在运行的容器):docker ps
注意:使用-it创建的容器,使用exit退出后,该容器也自动退出了。因此使用该命令无法查看。
5、查看历史容器:docker ps -a
6、删除容器:docker stop c2
7、启动容器:docker start c2
8、删除容器:docker rm c1
9、删除所有容器:
查看所有容器ID:docker ps -aq
docker rm 'docker ps -aq' (只有把容器停掉才可以删掉)
10、查看容器信息:docker inspect c2
docker容器的数据卷
1、docker容器删除后,在容器中产生的数据也会随之销毁。
2、docker容器和外部机器不可以直接交换,但是可以间接,外部机器将数据传进数据卷中,就可以直接同步交换。
3、容器之间通过挂载的方式完成数据交互。
数据卷式宿主机中的一个目录或文件;当容器目录和数据卷目录绑定后,对方的修改会立即同步。
一个数据卷可以被多个容器同时挂载。
创建容器时,使用-v参数,设置数据卷。
docker run ... -v 宿主机目录(文件):容器内目录(文件)...
容器目录必须是绝对路径;如果目录不存在,则会自动创建;可以挂载多个数据卷;
例1:一个容器挂载一个或多个数据卷
(1)查看容器:docker ps -a
(2)创建容器并挂载数据卷:docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash
docker run -it --name=c1 -v /root/data1:/root/data_container1 -v /root/data2:/root/data_container2 -v /root/data3:/root/data_container3 centos:7 /bin/bash
例2:两个容器挂载同一个数据卷
docker run -it --name=c2 -v /root/data:/root/data_container centos:7 /bin/bash
docker run -it --name=c3 -v /root/data:/root/data_container centos:7 /bin/bash