Docker学习(四)docker容器
2020-09-22 本文已影响0人
我犟不过你
一、docker容器
上一章节我们学习了docker镜像额相关内容,基于docker镜像,我们可以创建docker容器了,本章节来学习docker容器的相关内容, 以下启动例子均以之前的nginx镜像为例。
1、直接启动
这种方式会打印启动内容,并且退出后容器即停止。
docker run nginx
2、后台启动
解决1中的问题,这里采用吼他启动的方式,添加 -d 参数
docker run -d nginx
3、启动并进入容器中
docker run -it nginx /bin/bash

通过exit命令退出:

4、后台启动并进入容器
docker run -itd nginx /bin/bash
结果:

按照上述方法添加 -d 参数后,并不会进入容器,下面就提供两种进入容器的方式:
a)docker attach :退出容器后,会导致退出当前容器终止。
b)docker exec :退出容器后,容器不终止。
示例:
通过 a)方式进入容器,退出后发现容器终止了
docker attach [容器id]

通过 b)方式进入容器,容器未终止,推荐使用这种方式
docker exec -it [容器id] /bin/bash

5、停止容器和重启容器
停止容器:发现没有容器运行了
docker stop [容器id]

重启容器:容器恢复运行了
docker restart [容器id]

6、容器的导出和导入
容器导出:
docker export f1cd37c2b735 > /opt/docker-containerd/ngxin.tar

容器导入:
cat /opt/docker-containerd/ngxin.tar | docker import - jiang/nginx:v3

7、删除容器
上一章节docker镜像已经讲过删除,可参考上一章节或下面的链接。
https://www.cnblogs.com/miracle-luna/p/11111907.html
除却以上方式外,还可以通过拼接命令的方式,添加 -f 表示强制删除,否则无法删除运行中的容器。
删除所有未运行的容器
docker rm -f $(docker ps -a)
强制删除所有的容器
docker rm -f $(docker ps)
8、启动容器并指定名称
前面我们启动的容器并没有指定名称,我们可以通过 --name 进行指定。下面启动一个名称为nginx-wrx的容器。
docker run -d --name nginx-wrx nginx

9、端口映射
启动一个容器时,我们需要将容器的内部容器的端口映射到宿主机上,通过 -p 参数进行映射,下面我们启动一个名为nginx-test,端口80映射到宿主机为7000端口的nginx。
docker run --name nginx-test -d -p 7000:80 nginx
结果:

指定端口还有一种随机指定,使用大写的 -P,如下所示:
docker run --name nginx-test1 -d -P nginx

使用curl看看当前宿主机是否能访问:
curl localhost:7000
结果:成功访问到nginx了

10、查看容器内的进程
docker top nginx-test
结果:
