一直没有玩过docker,想在kali上运行docker试一下,众所周知,KALI是基于debian的发行版,本来想参考官网的安装手册,使用debian安装方式进行安装,由于是kali下 官网的自动安装命令需要取一些系统参数一直取不到,所以手工偿试成功安装后记录如下;
系统安装要求:
官方手册里面说支持amd64\armhf\arm64等架构,我这边是64位的虚拟机,在支持列表中
Docker Engine - Community is supported on x86_64 (or amd64), armhf, and arm64 architectures.
卸载旧版本:
如果没有旧版本此步略过
sudo apt-get remove docker docker-engine docker.io containerd runc
root@kali:~# sudo apt-get remove docker docker-engine docker.io containerd runc
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
软件包 docker-engine 未安装,所以不会被卸载
软件包 containerd 未安装,所以不会被卸载
软件包 docker 未安装,所以不会被卸载
软件包 docker.io 未安装,所以不会被卸载
软件包 runc 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 531 个软件包未被升级。
root@kali:~#
如果登陆kali用的是非roo帐号需要带前面的sudo,直接用root帐号就不需要带sudo.
安装过程:
安装有多种方式,可以下载deb安装包安装,也可以设置好更新源直接从安装源安装,这样的好处是可以解决依赖性问题
官网提供的更新源地址https://download.docker.com/linux/ 同时官方也提供了命令直接导入更新源,命令可在标准的debian上操作,但在kali下面操作会有一些报错,还是手工配置/etc/apt/sourcelist文件好了
这里我强烈建议使用中科大的更新源,国内的速度还是非常靠谱的。
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free
deb http://mirrors.ustc.edu.cn/docker-ce/linux/debian stretch stable
需要把更新源的密钥导入系统,否则在apt-get update的时候会提示没有公钥,无法验证签名,会禁用这个更新源;
curl http://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg |apt-key add -
root@kali:/etc/apt# curl https://download.docker.com/linux/debian/gpg |apt-key add
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3817 100 3817 0 0 3550 0 0:00:01 0:00:01 --:--:-- 3550
OK
验证密钥是否添加成功,使用指纹的后8个字符进行搜索验证
sudo apt-key fingerprint 0EBFCD88
root@kali:/etc/apt# sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ 未知 ] Docker Release (CE deb)
sub rsa4096 2017-02-22 [S]
然后就可以使用apt-get install开始安装了,选择Y,自动安装吧
apt-get install docker-ce docker-ce-cli containerd.io
root@kali:/etc/apt# apt-get install docker-ce docker-ce-cli containerd.io
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
aufs-dkms aufs-tools cgroupfs-mount dkms fakeroot libfakeroot linux-compiler-gcc-9-x86 linux-headers-5.4.0-kali4-amd64 linux-headers-5.4.0-kali4-common linux-headers-amd64 linux-kbuild-5.4 pigz
建议安装:
aufs-dev menu
下列【新】软件包将被安装:
aufs-dkms aufs-tools cgroupfs-mount containerd.io dkms docker-ce docker-ce-cli fakeroot libfakeroot linux-compiler-gcc-9-x86 linux-headers-5.4.0-kali4-amd64 linux-headers-5.4.0-kali4-common
linux-headers-amd64 linux-kbuild-5.4 pigz
升级了 0 个软件包,新安装了 15 个软件包,要卸载 0 个软件包,有 620 个软件包未被升级。
需要下载 98.4 MB 的归档。
解压缩后会消耗 446 MB 的额外空间。
您希望继续执行吗? [Y/n] y
验证:
安装完成后需要使用命令验证安装是否成功
docker run hello-world
root@kali:/etc/apt# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:fc6a51919cfeb2e6763f62b6d9e8815acbf7cd2e476ea353743570610737b752
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
这个命令会从网上拉取这个容器运行,如果看到这些就是正常安装啦 ,可以更深入的去使用啦。
直接执行docker命令,能看到更多的帮助功能
root@kali:/etc/apt# docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
builder Manage builds
config Manage Docker configs
container Manage containers
context Manage contexts
engine Manage the docker engine
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes