04.容器操作
[toc]{type: “ol”, level: [3,4,5]}
基础操作
创建并运行容器
- docker run -di --name=mycentos centos:centos8
–name=mycentos 设置容器名称
- centos:centos8
如果不写 :centos8 会查找最新版本
如果本地没有,会先自动pull再run
- 运行后会打印出容器的id号
3c0865dea8f6abc2ec014e356bbefe0072b7423acf9aa18af9e5cfee26c65db7
查看运行的容器
- docker ps
查看所有的容器
- docker ps -a
停止容器
- docker stop 容器id/名字
启动容器
- docker start 容器id/名字
删除容器
- docker rm 容器名字/容器id
创建启动详解
创建
- docker create --name=mycentos centos:centos8
启动
- docker start mycentos
创建并启动
docker run -it --name=mycentos centos:centos8
- -i
表示运行容器
- -t
表示容器启动后会进入其命令行
这样创建容器后会自动登录容器
即分配一个伪终端
- -d
在run后面加上-d参数,则会创建一个守护式容器在后台运行
这样创建容器后不会自动登录容器
如果只加-i -t两个参数,创建后就会自动进去容器
- –name :
为创建的容器命名。如果不写,会自动分配一个名字(英文人名)
- -v
表示目录映射关系
前者是宿主机目录
后者是容器目录 (映射到宿主机上的目录)
可以使用多个-v做多个目录或文件映射注意:
最好做目录映射
先在宿主机上做修改,然后共享到容器上。
- -p
表示端口映射
前者是宿主机端口
后者是容器内的映射端口
可以使用多个-p做多个端口映射
容器一直运行的原因
容器有一条前台进程,一直在运行
以后如果自己制作的镜像,运行起容器,必须有个可以夯住的命令
如果该命令结束,该容器也就结束了
进出容器
进入
- 方式1
docker exec -it 容器id /bin/bash(命令)
exec真正的作用:控制容器,在容器内执行命令
- 方式2 不推荐
ssh连接(容器内部装sshd服务端)
退出
- exit
此时退出,退出的是新建的终端,不会影响原容器的运行
其他操作
文件拷贝
- 从宿主机拷贝到容器内部
docker cp a.txt 容器id:/home(容器路径)
- 从容器内部拷贝到宿主机
docker cp 容器id:/home/a.txt /home(主机路径)
目录挂载
- docker run -di --name=mycentostest -v /home/Ideas:/home centos:centos7
一旦挂载,以后宿主机目录内修改,同样影响容器内部
端口映射
- docker run -di --name=myredis -p 6377:6379 redis:latest
让主机的6377{style=“color:goldenrod”}端口映射到容器的6379{style=“color:green”}端口
查看容器详细信息
- 全部信息
- docker inspect 容器id
ip地址:“IPAddress”: “172.17.0.4”
- ip地址
- docker inspect --format=‘{{.NetworkSettings.IPAddress}}’ 容器id
django项目可以连接此端口:
172.17.0.4:6379
127.0.0.1:6377
- 多容器互通
通过ip 端口映射 主机名
删除所有容器
- docker rm `docker ps -a -q`
查看容器运行日志
- docker logs 容器id