Docker容器操作
目录
Docker容器操作
一、查看容器
查看正在运行的容器
docker ps
查看所有容器
docker ps –a
查看最后一次运行的容器
docker ps –l
查看停止的容器
docker ps -f status=exited
二、创建容器
1、create创建
创建一个新的容器但不启动它
docker create -参数 --name=容器名 镜像名:tag 启动指令
如:
docker create -i --name=mycentos1 centos:7 /bin/bash
创建后查看ps -a 发现STATUAS为Created
参数:
-i:表示运行容器
-t:表示容器启动后会分配一个伪终端。
--name :为创建的容器命名。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
2、run创建并运行
创建容器并直接运行。
如果启动指令是一个能夯住的命令,那么容器在启动的时候会一直运行等待指令。比如/bin/bash
否则,容器一启动运行一下命令就会停止。比如 ps -a
docker run -参数 --name=容器名 镜像名:tag 启动指令
docker run -id --name=p1 python:3.6 # 后台运行,用exec进,退出来继续运行
docker run -idt(和-id一样) --name=p2 python:3.6
docker run -it --name=p2 python:3.6 # 直接开启伪终端运行COMMAND.exit退出后容器停止运行。
参数:
-i:表示运行容器
-t:表示容器启动后会分配一个伪终端。此时退出(exit),容器直接停止。
--name :为创建的容器命名。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。之后exec进出在退出(exit),容器不会停止。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
三、运行和操作容器
1、启动已经创建好的容器
只是启动容器,并不能进入容器执行命令。
# start启动 已经创建好的容器
docker start 容器id/容器名
2、在运行的容器中执行命令
exec在运行的容器操作系统中执行命令。启动参数要有i。
# exec在运行的容器操作系统中执行命令
docker exec -参数(要有i) 容器id/容器名 操作命令
docker exec -it 85768eb78045 /bin/bash # 进入该容器控制台
3、连入正在运行的容器
# attach:连到第一个进程上
docker attach 容器id/容器名
# ssh连接(容器安装ssh服务)
4、停止和删除容器
# stop停止 正在运行的容器
docker stop 容器id/容器名
# 容器删除
docker rm 容器id/容器名字
四、文件拷贝
# 从宿主机copy文件到容器
docker cp 需要拷贝的文件或目录 容器名称:容器目录
# 把当前路径下的1.txt拷贝到容器的/home路径下
docker cp 1.txt c2:/home
---------------------------------------------
# 从容器copy文件到宿主机
docker cp 容器名称:容器目录 需要拷贝的文件或目录
# 把容器home路径下的1.txt拷贝到当前路径下
docker cp centos7:/home/1.txt 1.txt
五、容器映射
1、目录映射
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
docker run -参数 --name=容器名 -v 宿主目录:容器目录 镜像名:tag
docker run -di --name=mycentos -v /root/test:/home centos:7
2、端口映射
将宿主机的端口与容器内的端口进行映射,这样我们就可以通过访问宿主机的某个端口而去访问容器的端口。
docker run -参数 --name=容器名 -p 宿主端口:容器端口 镜像名:tag
# 访问宿主的8888端口即可连接上容器的6379端口的redis服务
docker run -di --name=myredis -p 8888:6379 redis
六、查看容器信息
docker inspect 容器id/容器名字 # 信息很多,不方便看
# 这样可以单独查看IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql
七、删除容器
docker rm 容器id/容器名字