更新于 

Docker容器命令

6.1 查看容器

A。查看正在运行的容器

1
2
3
4
5
6
[root@gitlab ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db71526cf08c seataio/seata-server:1.0.0 "java -Djava.securit…" 4 days ago Up 4 days 0.0.0.0:8091->8091/tcp seata-server
8cbfdf71a92b nacos/nacos-server "bin/docker-startup.…" 12 days ago Up 12 days 0.0.0.0:8848->8848/tcp nacos
900c164303b4 zookeeper "/docker-entrypoint.…" 6 weeks ago Up 2 weeks 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp zookeeper-yz
15f401418436 gitlab/gitlab-ce:latest "/assets/wrapper" 7 weeks ago Up 2 weeks (healthy) 0.0.0.0:2222->22/tcp, 0.0.0.0:8800->80/tcp, 0.0.0.0:8443->443/tcp gitlab-ce

结果描述:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器id 元镜像 创建时间 运行状态 端口映射 容器名

B、查看所有容器

1
docker ps –a

C、查看最后一次运行的容器

1
docker ps –l

D、查看停止的容器

1
docker ps -f status=exited

6.2 创建与启动容器

创建容器常用的参数说明:docker run

参数 描述
–name 容器命名
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端
-d 守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)。可以设置多个
注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。如果出现目录没有权限问题,加上--privileged=true
-p 端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

注意:-v :如果你共享的是多级的目录,可能会出现权限不足的提示。这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数
–privileged=true 来解决挂载的目录没有权限的问题。

1
2
docker run -di --privileged=true --name=mycentos3 \
-v /usr/local/myhtml:/usr/local/myhtml centos:7

A、交互式运行

docker run -it –name=容器名称 镜像名称:标签

注:退出交互式运行(退出时容器停止) exit

1
docker run -it ubuntu /bin/bash

注意:交互式运行退出,容器则停止。

B、守护式方式创建容器:
docker run -id –name=容器名称 镜像名称:标签

1
docker run -id ubuntu /bin/bash

注:运行一个需要长时间运行的容器,也可以理解为后台运行

C、登录守护式容器方式:

1
docker exec -it 容器名称 (或者容器ID)  /bin/bash

6.3 启动与停止容器

A、启动容器:

1
2
docker start 容器名称(或者容器ID)
docker start $CONTAINER_ID/$NAME

B、重启容器

1
docker restart $CONTAINER_ID/$NAME

B、停止容器:

1
2
3
4
5
6
7
#立即终止
docker stop 容器名称(或者容器ID)
docker stop $CONTAINER_ID/$NAME

#延时终止(秒)
docker stop -t 20 容器名称(或者容器ID)
docker stop -t 20 $CONTAINER_ID/$NAME

C、删除容器

1
2
docker rm 容器名称(或者容器ID)
docker rm $CONTAINER_ID/$NAME

扩展:

1
2
3
4
sudo docker rm -f $CONTAINER_ID/$NAME
-f: --force=false 强制终止并删除一个运行中的容器
-l: --link=false 删除容器的连接,但保留容器
-v: --volumes=false删除容器所挂载的数据卷

D、查看容器

  • 查看容器运行的各种参数
1
sudo docker inspect $CONTAINER_ID/$NAME
  • 查询容器的IP
1
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $CONTAINER_ID/$NAME

E、容器的导入导出

  • 导出容器
1
docker export 4968e97f588d -ubuntu.tar
  • 导入容器
1
ubuntu.tar | sudo docker import - yongzheng/ubuntu:v1.0

F、进入容器

  • attach命令
1
sudo docker attach $CONTAINER_ID/$NAME
  • exec命令
1
sudo docker exec -it $CONTAINER_ID/$NAME /bin/bash

6.4、文件拷贝

6.4.1、将文件拷贝到容器

如果我们需要将文件拷贝到容器内可以使用cp命令

1
2
3
docker cp 需要拷贝的文件或目录 容器名称:容器文件或目录

docker cp nginx.conf $CONTAINER_ID/$NAME:/etc/nginx/nginx.conf

6.4.2、从容器拷贝到宿主机

也可以将文件从容器内拷贝出来

1
2
3
docker cp 容器名称:容器文件或目录 需要拷贝的文件或目录

docker cp $CONTAINER_ID/$NAME:/etc/nginx/nginx.conf nginx.conf