最近研究了一下docker,因为是沙箱隔离的机制,所以不必担心jdk8的项目会影响到jdk7服务器上的服务,感觉还是挺有用处,昨晚一直研究到凌晨四点半,感觉很有必要记录一下。
首先贴上自用deepin的版本
这个版本实测已经支持docker教程里面跟ubuntu一样的安装方法的。
参考url :
docker教程
因为之前已经安装过了docker 所以这次先移除docker
移除dcoker
1.先确保没有运行的容器
2.卸载dokcer
sudo apt-get remove docker.io docker-engine docker containerd.io docker-ce-cli docker-ce
3.输入docker version 查看版本发现docker已经卸载
安装docker
在安装之前先把库更新一下
sudo apt-get update
1.输入下面命令从docker官网下载并安装docker
wget -qO- https://get.docker.com/ | sh
网上说docker服务器在国外,建议使用国内的网址,不过我试了一下,在没有翻墙的状态下下载速度可以达到2M/s的速度,觉得就没有必要用加速器了,毕竟我住的地方也就20M的带宽(捂脸)。
显示安装成功,有个提示:
WARNING: Adding a user to the "docker" group will grant the ability to run
containers which can be used to obtain root privileges on the
docker host.
Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
for more information.
当要以非root用户可以直接运行docker时,需要执行 sudo usermod -aG docker zhaohy 命令,然后注销电脑重新登陆,当然里面的zhaohy是用户名
2.加入用户重新登录后启动docker 后台服务 并拉取最新版本的hello-world测试镜像
sudo service docker start
docker pull hello-world
3.测试运行hello-world
docker run hello-world
可以看到运行成功
至此docker就安装成功啦!
玩转docker
先看看咋用
docker --help
会把所有命令信息打印出来,如果觉得不详细可以参考
docker命令
查看docker下载的镜像
docker images
这个是之前下过的镜像,卸载的时候没有删除这些文件。
查看正在运行的容器
docker ps
可以看到没有在运行的容器
查看所有容器(包括没有在运行的)
docker ps -a
这两个容器是之前创建过的 一个是运行hello-world的时候自动run的容器,一个是之前运行的mytomcat容器
在官网仓库查找镜像(以tomcat为例)
docker search tomcat
可以看到有许许多多的tomcat版本,前两个是官方offical版本
还有一个查找的方法 直接去docker hub查找
https://hub.docker.com/
注册登录之后在如下页面搜索框输入想找查找的镜像就可以查到更多版本啦
在docker官网仓库拉取所需镜像
这里我们拉取官方的镜像
docker pull tomcat
等待下载完成后,我们就可以在本地镜像列表里用docker images查到REPOSITORY为tomcat的镜像
生成并运行一个名为mytomcat1的容器
docker run -d -p 8083:8080 --name mytomcat1 tomcat
-d:在后台运行
-p 8083:8080:将容器的8080端口映射到主机的8083端口
--name:给容器取个别名 如果不设置就会自动生成一串不重复的字符串 不好记,--name不能重复生成相同名字的别名,有唯一性
最后的tomcat指的就是上面拉取的tomcat镜像啦
之后运行docker ps 查看正在运行的容器 docker ps -a查看所有容器
去浏览器验证tomcat有没有启动
可以看到8083端口tomcat已经运行成功啦
此时通过docker拉取并运行tomcat就成功啦
发送文件到容器tomcat
复制一个简单的mavenTest项目到容器tomcat的webapps文件夹下
docker cp mavenTest mytomat1:/usr/local/tomcat/webapps
进入tomcat容器查看或修改文件
docker exec -it mytomcat1 bash
可以看到mavenTest项目已经发布到webapps下面了
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
退出容器返回主机
exit
重启tomcat容器
docker restart mytomcat1
进到项目的 一个测试接口发现已经部署成功啦
停止tomcat容器
docker stop mytomcat1
此时再次运行docker ps 已经看不到刚刚那个正在运行的mytomcat1了
运行docker ps -a 命令可以看到port空 表明这些容器都没有在运行啦
docker start 容器名 :启动没有在运行的容器
docker restart 容器名:重新启动正在运行的容器
docker stop 容器名:停止正在运行的容器
docker rm 容器名:删除停止运行的容器(删除容器前要先停止运行容器)
docker rmi 镜像名:删除一个或多个镜像
给tomcat换版本
刚刚我们发现tomcat容器中的tomcat是tomcat8的版本,如何换成tomcat7呢,
参考发布项目的方法
在tomcat容器停止之后 执行
docker cp 新下载的tomcat版本,重命名为tomat(文件一样的会覆盖,不一样的保留,这里是主机的相对路径,也可以写绝对路径) 容器名:/usr/local/
如:
把主机中的tomcat文件夹覆盖更新到容器中的/usr/local文件夹下替换老的tomcat
docker cp tomcat mytomcat1:/usr/local
这样整个tomcat都会被替换掉 如果丢进去的tomcat是7的版本,运行容器访问的就是7的版本
ps:
从主机复制文件到容器:
docker cp 主机文件 容器名:容器路径
从容器复制文件到主机
docker cp 容器名:容器路径 主机相对路径
至此,docker的安装下载用法都已经用的很熟啦,接下来有空会尝试docker安装oracle做本地测试库用,待更新。