docker 容器相关操作
1
# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a
# 查看最后一次运行的容器
docker ps -l
# 启动停止的容器
docker start id/名字
# 停止运行的容器
docker stop 7d5e
# 停止所有在运行的容器
docker stop `docker ps -q`
运行容器(其实是两步:创建容器:create,运行容器:run)
-如果容器没有创建,直接执行run,就会创建并运行,所以你只需要会run就行了
-run 的时候,有很多参数
-i:表示运行容器
-t:表示容器启动后会进入容器命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)
--name :为创建的容器命名,如果不写,随机生成一个名字
-v:表示目录映射关系(前者是宿主机目录,后者是容器的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
2 创建容器
docker run -id # 不会进入到容器内部
docker run -it # 会进入到容器内部
# 创建一个python3.9容器---》不进入
docker run -id --name python3 python:3.9
3 启动容器
docker start mycentos
4 进入容器内部(本质是让容器执行命令)
docker exec 容器id 命令
docker exec f82e8578b9b1 ls
docker exec -it f82e8578b9b1 /bin/bash # 进入到容器内部
5 退出
exit
重点:
如果是it进入容器---》容器会开启一个进程处理我:/bin/bash python 如果在容器中敲exit退出了这个进程,这个进程就结束了---》容器会停止---》容器要运行,必须有个前台进行在运行,并且是夯住(阻塞)的---》否则容器就听了
1 运行容器并做映射(宿主机--》有docker软件)
docker run -id --name=lqzcentos -v /home/lqz/:/home/ centos:7
#docker run -id --name=lqzcentos -v /home/lqz/aa.txt:/aa.txt centos:7
2 进入到容器内部
docker exec -it lqzcentos /bin/bash
3 到home路径下
cd /home
4 容器内部修改文件---》会影响外部
5 外部修改文件---》影响内部
好处:后期咱们部署django项目
有个django容器,做好映射,代码放在宿主机上即可,以后更新了代码,只要重启容器,代码就是最新了
运行mysql容器---》mysql配置文件放在宿主机上做好映射
mysql容器---》表数据,放到容器中---》如果删了容器---》数据库全没了
表数据,放在宿主机上---》把容器删除---》表数据还在----》再启动一个容器做好映射---》数据都还在
v参数:目录映射
docker run -id --name=lqz -v /home/lqz:/lqz centos:7
以后无论在宿主机还是容器中修改当前目录下的文件,都会相互影响
# -p参数:端口映射 容器中启动一个mysql5.7 --》容器中的3306监听,宿主机3306没人监听,做端口映射后,宿主机的3306就被docker的这个容器监听了
# 启动的mysql的root密码是123456
# 启动mysql容器
docker run -id --name=mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# netstat -nlp |grep 3307 查看本机80端口占用情况
# 以后访问宿主机80端口就等于访问容器的3306端口
# 启动容器
docker start 容器id
# 停止容器
docker stop 容器id
# 文件拷贝(宿主机执行)
# 容器的文件copy到宿主机上(不是在容器内执行)
docker cp 容器名称:容器目录 需要拷贝的文件或目录
docker cp f6ce8be027de:/aa.txt /aa.txt
# 宿主机的文件copy到容器中
docker cp 需要拷贝的文件或目录 容器名称:容器目录
docker cp /home/lqz/aa.txt f6ce8be027de:/aa.txt
# 查看容器IP地址
docker inspect 容器名称 # 查看容器的详细描述,很多
docker inspect 7f412212f708 --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
# 在多个容器之间是可以ping通的(容器和宿主机也可以)
# centos:172.17.0.3
# mysql:172.17.0.2
# 删除容器(删除已停止的容器)
docker rm 容器id
docker rm `docker ps -a -q`
# 无状态的服务(在容器中尽量运行无状态的服务)
-mysql reids 有状态,运行过程中产生数据,保存,容器删除,数据就没了
-uwsgi+django 无状态的服务

浙公网安备 33010602011771号