
再见Docker
刚刚开始,却又说再见!
0x00 缘起
第一次遇到docker是由于学习go语言的时候,发现有人居然用go写了一个应用容器引擎,而且docker的使用非常方便。就那句话,“谁用谁知道”。哈哈~~
今天突然发现,自己被很多东西困扰了。是时候给自己来一个断舍离了,所以就拿电脑中不经常使用的app开刀了。docker在电脑中待了很长时间了,以至于打开的时候,看看目前的版本是否修复了原来Docker.qcow2文件是否只能呆在固定位置的情况,发现已经可以随意调整了,给docker点赞的同时也决定了删除她,毕竟要给自己做断舍离的同时,也想让自己聚焦一下,太发散了,累。
0x01 docker 常用命令
1. 查看本地可用镜像
docker images
2. 查看运行的容器
docker ps
3. 查看所有的容器
docker ps -a
4. 停止容器
docker stop container
5. 启动容器
docker start container
6. 删除容器
docker rm container
7. 删除镜像
docker rmi image name
8. 从Docker容器内拷贝文件到主机上
docker cp <containerId>:/file/path/within/container /host/path/target
9. 终极命令
docker COMMAND --help
使用docker自带的命令来看命令的使用。
例如,我不知道docker pause 怎么使用,用来干什么,那么我就输入docker pause –help来显示结果,如下所示:
bingyideMacBook-Pro:~ guoby$ docker stop --help
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
Stop one or more running containers
Options:
-t, --time int Seconds to wait for stop before killing it (default 10)
bingyideMacBook-Pro:~ guoby$ docker pause --help
Usage: docker pause CONTAINER [CONTAINER...]
Pause all processes within one or more containers
怎么样?是不是很爽哦,避免了很多要记忆的东西,同时也知道了docker有那些命令,是用来干什么的。
0x02 docker 实践
我的docker环境在mac下使用,windows下也使用过,但是体验不是很好,用了docker就不能用vm,非常尴尬!
1. 黄图鉴别
总得找点乐趣来提升一下学习兴趣,比如雅虎开源的这个项目,是用了鉴别是否是黄图的项目。项目地址:Open nsfw model。
进入项目主页后,按照README.md的说明来安装,如果可以正常使用,那么恭喜你,docker入门了,后续的就自己玩吧。
2. docker下安装kali
(1)下载基础镜像
docker pull kalilinux/kali-linux-docker
(2)启动镜像
docker run -t -i kalilinux/kali-linux-docker /bin/bash
(3)安装metasploit
apt-get install metasploit
(4)开始安装 wifite
apt-get install wifite
3. 空间清理
使用一段时间后,Docker.qcow2文件会增长的很快,而且不会自动缩小,不知道目前的版本是否解决了该问题。我使用的方式是直接删除该文件,重启docker后,会自动重新创建这个文件,当然会比原来小很多。
路径:/Users/yourname/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux
4. 端口映射
4.1 单端口映射
docker run -it -p 9090:9090 ubuntu/code-dev /bin/bash
4.2 多端口映射
docker run -p 9090:9090 -p 3306:3306 ubuntu/code-dev /bin/bash
5. 文件映射
docker run -it -v /Volumes/Transcend/docker_file:/home/mydev centos /bin/bash
6. root权限
docker run --privileged -d --name centos-dpdk -it -v /Volumes/Transcend/docker_file:/home/mydev centos /sbin/init
7. 针对root用户创建密码
(1) 在基础容器centos中启动
docker run -it 2d194b392dd1 /bin/bash
(2)修改root用户名密码
passwd
(3)添加一个用户test1982
useradd test1982
(4)退出容器
exit
(5)提交该容器的修改
docker commit 3c989e98fae6 vk:test
(6)使用已经创建的用户进行启动容器
docker run -u test1982 -it 8ef50e485580 /bin/bash
(7)去除test1982的用户权限
chmod go-rw hello_test
(8)至此容器保护工作完成,使用容器必须使用root用户才能进行访问。
遗憾的是,如果是这个容器的宿主机是安装在客户机子上的,那么客户可以使用以下命令进行无密码登录。
docker exec -it -u 0 ebf62a489d1c /bin/bash
最终的结论就是docker容器是不支持设置密码的。 因为docker exec -it -u 0 就是直接使用了root密码,而且还是侵入式的,无法避免。
或者我的需求有点变态,在客户机的虚拟机上加密,只给客户提供服务,而不让看到其内部python代码吧!
0x03 缘不灭
仅仅只是由于自己想做一个断舍离,把注意力集中在一点,以后有机会用的时候还是会安装上的,不能怪自己的电脑硬盘小(128G),只是突然一瞬间感觉到,什么都去弄,到最后来该做的没有做好。时间有限,做好一件事就好,不是么?
程序员就是喜欢倒腾,我是一个程序员,想什么都学,但是选择的同时,还是想让自己专注一点。
在删除的时候,本想直接移到废纸篓,但是发现docker本身就带了删除功能。搞笑的事,最后还得走这一步,docker的删除仅仅是把Docker.qcow2文件删除了,避免自己删除应用后再去找这个文件删除。