容器命令
说明:我们有了镜像才可以创建容器,liunx,下载一个centos镜像来测试学习一下
docker pull centos
新建容器并启动
docker run [可选参数] imageid
#参数说明
--name='Name' 容器名字,用来区分容器
-d 后台运行方式
-it 使用交互式运行,进入容器查看内容
-p 制定容器的端口-跑8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-p 随机指定端口
#测试 启动并进入容器
[root@iZ2ze5jmothsemz6viicqtZ /]# docker run -it centos /bin/bash
#容器内的centos
[root@8c6d116e316d /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@8c6d116e316d /]# exit
exit
[root@iZ2ze5jmothsemz6viicqtZ /]# ls
bin dev docker-client-latest docker-engine docker-latest-logrotate etc lib lost+found mnt proc run srv tmp var
boot docker-client docker-common docker-latest docker-logrotate home lib64 media opt root sbin sys usr
列出所有运行的容器
docker ps 命令
-a #列出当前正在运行的容器+历史
-n=?#显示最近运行的容器
-q 只显示容器的编号
退出容器:
exit :直接容器停止并退出
ctrl+p+q :容器不停止退出
删除容器
docker rm 容器id 删除制定容器,不能删除正在运行的容器,要是删除 rm -f
docker rm -f $(docker imager -ap)
docker ps -a -q |xargs docker rm #删除所有容器
启动和停止容器的操作
docker start 容器id
docker restart 容器id #重启
docker stop 容器id #停止容器
docker kill 容器id #强制停止
常用的其他命令
后台启动容器
#命令 docker run -d 镜像名
docker run -d centos
#问题 docker ps 发现centos 停止了
#常见的坑,docker容器使用后台运行,就必须要有一个前端进程,docker发现没有应用,就会自动停止
#Nginx 容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序了
查看日志
docker logs --help
查看容器中的进程ps
docker top :查看docker内部的id
查看镜像的原数据
docker inspect 容器id #查看容器的详细信息
进入当前正在运行的容器
#我们通常容器都是在使用后台方式运行,需要进入容器,修改配置
docker exec -it 容器id bashshell(/bin/bash) #进入容器后开启新的终端,可以在里面运行
#方式二
docker attach 容器id
# 测试
docker attach 容器id bashshell(/bin/bash) #进入容器正在执行的终端,不会开启新的进程
正在执行的代码
从容器内拷贝文件到主机上
docker cp 容器id:容器路径 目的路径
docker cp id :/home/test.py /home
#拷贝是一个手动的过程,未来我们使用 -v 卷的技术,可以实现
操作命令
帮助命令
docker version #显示版本
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令--help #万能命令
帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/
练习Nginx
1、搜索镜像 docker search Nginx
2、下载镜像 docker pull Nginx
3、查看镜像 docker images
4、启动Nginx docker run -d --name nginx01 -p 3344:80 nginx
-d 后台运行
--name 给容器起名字
-p Nginx端口/容器端口
本机自测
[root@iZ2ze5jmothsemz6viicqtZ /]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
5、进入容器
docker exec -it Nginx01 /bin/bash
容器里边操作
whereis nginx
cd /etc/nginx
ls
思考问题:我们每次改动Nginx配置文件,都需要进入容器内部,十分麻烦,要可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改 -v 数据卷