docker从理解到安装再到简单使用三部曲
第一步(docker的理解)
第二部(docker安装)
第三步(docker常用命令的总结)
!!提醒!!
<1>docker用的是unix socket而不是TCP,这会导致当前用户权限不够所以直接输入命令,会回显下面一段话“Got permission denied while…”,解决这一问题可以在命令前加入sudo。
<2>有时会有不能成功拉取的镜像的情况这可能是因为没有镜像加速器的原因导致的。解决这一问题可以通过以下几步
1.在阿里云上注册一个账号
2.点开右上角的“控制台”
3.点击“弹性计算”中的”容器镜像服务“
4.点击之后在左边可以找到“镜像中心”其中就有“镜像加速器”
5.在其中可以发现属于自己的”加速器地址“
6.在kali Linux中输入
cd /etc/docker
7.切换到对应目录下之后输入
sudo vim ./deamon.json
8.进入vim模式之后就可以编辑其中内容,要把刚刚的加速器地址以这种形式输入进去
{“registry-mirrors”:[“加速器地址”]}
9.最后可以按照程序员管理拉取一个hello world镜像尝试一下
sudo docker pull hello-world
成功以后是这样子
<1>docker中的management command和command
Managementcommand和Command在 1.13 版本之前,docker 并没有 Mangement command。在 Docker 1.12 CLI 中大约有很多顶级命令,这些命令没有经过任何组织,十分混乱,对于新手来说,学习它们并不容易。比如对于容器的创建,在以前没有management command时,语句是“docker create”,而有了management command时语句就变为了“docker container create”。
<2>拉取镜像的操作
sudo docker pull 【image】
根据程序员传统以拉取hello-world为例,其结果如下,若结果不是如此,请看上文提醒的第二部分
<3>查看系统相关信息的语句:
docker version
运行如下
还可以输入
sudo docker info
又或是
sudo docker system info
<4>创建一个新的容器
(1)使用 Commands
sudo docker create 【option】【image】
(2)使用 Management Commands
sudo docker container create 【option】【image】
它们作用相同,和之后要学的run类似,都是根据镜像创建一个容器、,但是create的特点是创建但是不运行,而run则会运行。
其中option是参数的意思,参数有:
- –name 指定一个容器名称,未指定时,会随机产生一个名字
- –hostname 设置容器的主机名
- –mac-address 设置 MAC 地址
- –ulimit 设置 Ulimit 选项
说明:ulimit 是一种 Linux 系统的内建功能,一些简单的描述,可以参考 通过 ulimit 改善系统性能
<5>根据一个镜像创建新的容器并运行
(1)command命令
sudo docker run 【option】【image】
(2)management command命令
sudo docker container run 【option】【image】
其中option就是run的参数,如下
- -i 或 --interactive, 交互模式。
- -t 或 --tty, 分配一个 pseudo-TTY,即伪终端。
- –rm 在容器退出后自动移除。
- -p 将容器的端口映射到主机。
- -v 或 --volume, 指定数据卷。
这里就以打开刚刚拉取的hello-world演示一下用法
在kali linux命令行中输入
sudon docker run hello-world
最后如下图
以后台模式创建并运行一个容器
docker container run \ -i -t -d \ ubuntu /bin/bash
使用 docker container ls -a 命令查看容器的状态,可以看到这个容器已经在后台运行。参数-i-t的作用是创建一个伪终端,同时在run语句中【image】后面是可以跟语句的,如上面这一段话的意思就是说基于ubuntu创建一个容器,并在容器中打开bash。
打开之后我们从这一模式出去有两种办法分别是
1.在命令行输入exit
2.先按ctrl+p再按ctrl+q
这两种方式都会让程序进入后台运行。
<6>查看容器列表
(1)command命令
sudo docker ps
(2)manage command命令
sudo docker container ls
这个命令也是有参数的
- -a 显示所有的容器。
- -q 仅显示 ID。
- -s 显示总的文件大小。
- –all显示所有容器
-a和–all作用是差不多的
没有参数的运行结果如下:
有参数(-a和–all)结果如下
<7>容器的启动
(1)Management Command
sudo docker container start 【option】 containername
(2)旧的命令格式如下:
docker start 【option】 containername
不得不提的组合技(创建+启动)
(1)创建
sudo docker container create -it 【containername】 【command】
(2)启动
sudo docker container start 【containername】
<8>容器中进程的停止
(1)Management Command
sudo docker container stop 【containername】
(2)command
sudo docker stop 【containername】
<9>重启容器
(1)Management Command
sudo docker container restart 【containername】
(2)command
sudo docker restart 【containername】
<10>容器中进程的暂停
(1)Management Command
sudo docker container pause 【containername】
(2)command
sudo docker pause 【containername】
<11>连接容器
使用 attach 操作将本地标准输入输出流连接到一个运行中的容器,命令格式为:
(1)Management Commands
sudo docker container attach 【containername】
(2)command
sudo docker attach 【containername】
可以通过查看相应的主机名和 Mac 地址以判断我们是否连接到了容器。
<12>查看容器详细信息
(1)Management Commands
sudo docker container inspect 【containername】
(2)command
sudo docker inspect 【containername】
<13>真——重启容器
docker container restart 【containername】
<14>在容器中执行命令
我们还可以在一个运行中的容器中执行命令
sudo docker container exec 【containername】【command】
<15>删除容器
(1)Management Commands
sudo docker container rm 【containername】
(2)command
sudo docker rm 【containername】
或者输入
sudo docker container rm -f $(docker container ls -aq)
根据前面的学习可以发现这句话的意思是先执行括号中的语句,括号中的语句的意思是列出全部的容器,其中的参数的意思是【-a是显示全部容器】【-q是只显示名字】。最终这句话的结果放到了整句话中执行,【-f的作用是强制删除】