docker
docker是一个容器,我们可以在其中搭建多个环境,在Linux平台上无需启动虚拟机
启动一个容器的时间相比虚拟机也更加迅速
要想启动一个容器,首先需要一个镜像
我们可以使用以下命令下载一个镜像
xm137@xm137-virtual-machine:~$ sudo docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:72297848456d5d37d1262630108ab308d3e9ec7ed1c3286a32fe09856619a782
Status: Image is up to date for ubuntu:latest
docker.io/library/ubuntu:latest
下载完成以后我们可以查看已有的镜像
xm137@xm137-virtual-machine:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest a04dc4851cbc 2 months ago 78.1MB
hello-world latest 74cc54e27dc4 2 months ago 10.1kB
下载完镜像以后,我们需要基于镜像创建容器,
使用以下命令可以创建并启动容器
xm137@xm137-virtual-machine:~$ sudo docker run -itd --name ubuntu-test ubuntu /bin/bash
3497ac84ffbcfdbee65614da7bacf97561c63df0950aa6e9699d965f122430b8
注意,这不是单纯的容器启动命令,是创建并启动容器
参数-i是使用交互式操作-t
是使用终端-d
是在后台运行--name
为容器指定一个名字
单独使用-i
可以与之交互,命令可以照常打,虽说有点不舒服
单独使用-t
只是终端,Ctrl+C
三次退出后,容器仍在运行
建议-it
连起来使用
sudo docker run -it ubuntu
单独使用-it
新建的容器Ctrl+D
停止或正常退出容器随后会停止
/bin/bash
是要执行的命令 ,为什么启动的是/bin/bash
,通过bash我们可以在终端执行命令行
注意: 有些时候/bin/bash
不是必须要加
现在,其在后台运行
使用以下命令查看正在运行的容器
xm137@xm137-virtual-machine:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3497ac84ffbc ubuntu "/bin/bash" 40 seconds ago Up 40 seconds ubuntu-test
在有了容器以后,我们就可以使用命令启动容器了
不指定名字的话,会生成一个名字
让我们生成几个看看
xm137@xm137-virtual-machine:~$ sudo docker run -itd ubuntu
a225c2bc8373a17549573262b5a4713c347cb733f1d327e2a6771ece512bc2d7
xm137@xm137-virtual-machine:~$ sudo docker run -itd ubuntu
e0bc9fb7abc77e22ff62fde627cbd1b9f7926b31ea384b37ef1fc3e16207fec2
xm137@xm137-virtual-machine:~$ sudo docker run -itd ubuntu
2199b7f97b3edbea07a90250bcb329a0beee4b1085aff4f4478e45540094ee4f
xm137@xm137-virtual-machine:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2199b7f97b3e ubuntu "/bin/bash" 7 seconds ago Up 7 seconds friendly_agnesi
e0bc9fb7abc7 ubuntu "/bin/bash" 8 seconds ago Up 7 seconds elastic_babbage
a225c2bc8373 ubuntu "/bin/bash" 9 seconds ago Up 8 seconds mystifying_chaplygin
xm137@xm137-virtual-machine:~$
在有了容器以后
使用容器ID来启动容器
xm137@xm137-virtual-machine:~$ sudo docker start 3497ac84ffbc
3497ac84ffbc
也可以使用名字
xm137@xm137-virtual-machine:~$ sudo docker start ubuntu-test
ubuntu-test
与容器交互
docker attach
退出后容器也将停止
xm137@xm137-virtual-machine:~$ sudo docker attach 3497ac84ffbc
3497ac84ffbc:/#
docker exec
在执行完成以后,容器不会退出
xm137@xm137-virtual-machine:~$ sudo docker exec -it 3497ac84ffbc /bin/bash
root@3497ac84ffbc:/#
最后的/bin/bash
可以换成其他的命令
其中的-it
可以试试不加会怎么样,不加-t
的话,会缺少一些回显,不加-i
可能会遇到一些交互上的问题
例如apt upgrade
想输入n
取消一下
停止容器
xm137@xm137-virtual-machine:~$ sudo docker stop 3497ac84ffbc
3497ac84ffbc
重启容器
xm137@xm137-virtual-machine:~$ sudo docker restart 3497ac84ffbc
3497ac84ffbc
以下命令查看所有容器,包括已经停止的容器
xm137@xm137-virtual-machine:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3497ac84ffbc ubuntu "/bin/bash" 9 minutes ago Exited (137) 2 seconds ago ubuntu-test
删除容器
xm137@xm137-virtual-machine:~$ sudo docker rm 3497ac84ffbc
3497ac84ffbc
删除镜像,可以使用仓库名称或者镜像ID来删除镜像
下面以删除hello-world
为例子
xm137@xm137-virtual-machine:~$ sudo docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:7e1a4e2d11e2ac7a8c3f768d4166c2defeb09d2a750b010412b6ea13de1efb19
Deleted: sha256:74cc54e27dc41bb10dc4b2226072d469509f2f22f1a3ce74f4a59661a1d44602
Deleted: sha256:63a41026379f4391a306242eb0b9f26dc3550d863b7fdbb97d899f6eb89efe72
xm137@xm137-virtual-machine:~$ sudo docker rmi 74cc54e27dc4
Untagged: hello-world:latest
Untagged: hello-world@sha256:7e1a4e2d11e2ac7a8c3f768d4166c2defeb09d2a750b010412b6ea13de1efb19
Deleted: sha256:74cc54e27dc41bb10dc4b2226072d469509f2f22f1a3ce74f4a59661a1d44602
Deleted: sha256:63a41026379f4391a306242eb0b9f26dc3550d863b7fdbb97d899f6eb89efe72
为了演示,其中已经删除一些
参考链接