使用docker之前我们需要先了解docker三大核心概念:镜像、容器、仓库
Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
本章介绍 docker 容器简单使用
注意: docker 所有涉及到id的操作,不用写全,前几位唯一id值就行,用过git的很好理解。
查看容器
docker ps
查看正在运行的容器
docker ps -a
查看所有的容器包括停止运行的容器
[root@hw-biz-alpha admin]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@hw-biz-alpha admin]#
[root@hw-biz-alpha admin]#
[root@hw-biz-alpha admin]#
[root@hw-biz-alpha admin]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f6b3cdf7b85 ubuntu "/bin/bash" About an hour ago Exited (0) 10 seconds ago exciting_poincare
3f82741ff5d8 ubuntu "/bin/bash" About an hour ago Exited (0) About an hour ago stoic_golick
c4e9e2cc5f6a hello-world "/hello" 4 hours ago Exited (0) 4 hours ago xenodochial_kalam
5e1df23de3ff hello-world "/hello" 4 hours ago Exited (0) 4 hours ago distracted_turing
创建容器
面向对象编程中,有了类以后我们就能创建对象了。同样的有了docker镜像后我们能用镜像创建容器
创建容器方法2个: docker create 和 docker run
- docker create
例如:
docker create -it --name ubuntu_test ubuntu
创建了一个ubuntu镜像容器名字为ubuntu_test ,有输入功能的交互终端
-it 的i是输入功能,t是交互终端tty
--name ubuntu_test 创建的容器名 ubuntu_test
注:后台运行参数-d
- docker run 等于 docker create + docker start + 进入容器
例如:
docker run -it --name ubuntu_test2 ubuntu /bin/bash
分3步:
1 docker create -it --name ubuntu_test2 ubuntu /bin/bash
创建ubuntu镜像容器名为ubuntu_test2,参数-it
2 docker start ubuntu_test2
启动容器ubuntu_test2
3 docker exec -it ubuntu_test2 /bin/bash
进入容器,打开有输入功能的交互终端,执行命令/bin/bash
[root@hw-biz-alpha admin]# docker run -it --name ubuntu_test2 ubuntu /bin/bash
root@f299d01444b8:/#
root@f299d01444b8:/# exit
exit
[root@hw-biz-alpha admin]#
启动容器
docker start 容器名或容器id
重启容器:
docker restart 容器名或容器id
进入容器
有多种方法,下面介绍2种 attach 和 exec
- docker attach 容器id或容器名
这个方法过时不好用,多个地方进入一个容器会同步显示,容易出现相互阻塞。 - docker exec 容器id或容器名
1.3版本后,增加新的进入容器工具 exec,使用完整例子如下:
[root@hw-biz-alpha admin]# docker create -it --name ubuntu_test3 ubuntu
cadaa5c958dad382c7dedad4949cd1f21f7df61c86b005dcd1060dd071164101
[root@hw-biz-alpha admin]#
[root@hw-biz-alpha admin]# docker start cada
cada
[root@hw-biz-alpha admin]#
[root@hw-biz-alpha admin]# docker exec -it cada /bin/bash
root@cadaa5c958da:/#
root@cadaa5c958da:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@cadaa5c958da:/#
root@cadaa5c958da:/# exit
exit
[root@hw-biz-alpha admin]#
[root@hw-biz-alpha admin]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cadaa5c958da ubuntu "/bin/bash" 53 seconds ago Up 42 seconds ubuntu_test3
9410b5c45d03 ubuntu "--name ubuntu_test3" 47 minutes ago Created reverent_taussig
ccaa403e500f ubuntu "/bin/bash" 48 minutes ago Exited (0) 48 minutes ago interesting_cray
d56e5d3391de ubuntu "/bin/bash" 2 hours ago Created ubuntu_test
3435344f56bf ubuntu "/bin/bash" 2 hours ago Exited (0) 2 hours ago trusting_boyd
185b6c22453a ubuntu "-i" 2 hours ago Created happy_rosalind
9f6b3cdf7b85 ubuntu "/bin/bash" 4 hours ago Exited (0) 3 hours ago exciting_poincare
3f82741ff5d8 ubuntu "/bin/bash" 4 hours ago Exited (0) 4 hours ago stoic_golick
c4e9e2cc5f6a hello-world "/hello" 6 hours ago Exited (0) 6 hours ago xenodochial_kalam
5e1df23de3ff hello-world "/hello" 6 hours ago Exited (0) 6 hours ago distracted_turing
[root@hw-biz-alpha admin]#
[root@hw-biz-alpha admin]# docker stop cada
cada
[root@hw-biz-alpha admin]#
注意:进入容器,需要容器在运行状态,否则会报错not running
还有其他的进入容器的工具,如:nsenter
结束容器
注意: 上面例子 docker run -it --name ubuntu_test2 ubuntu /bin/bash 中exit 并没有结束容器 。用docker ps -a 查看,会发现ubuntu_test2 状态还在运行。结束容器需要用docker stop 和 docker kill
docker stop 容器id
参数 -t或–time[=10] 表示先发一个SIGTERM 过10秒(如果没有指定多少秒,默认值10)后会再发一个SIGKILL信号强制结束
docker kill 容器id
删除容器
docker rm 容器id或容器名
参数:
-f 强制删除正在运行的容器
-l 删除容器连接,保留容器
-v 删除容器挂载的数据卷