github email
再见Docker
Feb 12, 2019
2 minutes read

再见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文件删除了,避免自己删除应用后再去找这个文件删除。


Back to posts