docker容器常用命令

简介: docker容器常用命令

查看容器

CONTAINER ID :容器 ID

IMAGE :所属镜像

COMMAND :

CREATED :创建时间

STATUS :容器状态

PORTS :端口

NAMES :容器名称

查看正在运行的容器

docker ps

查看停止的容器

docker ps -f status=exited

查看所有容器(包括运行和停止)

docker ps -a

查看最后一次运行的容器

docker ps -l

列出最近创建的 n 个容器

docker ps -n 5

查看容器详细信息

docker inspect 容器名称|容器ID
[root@centos8 _data]# docker inspect nginx03

Source是目录挂载的Linux目录

Destination是目录挂载的容器目录

 "Mounts": [
            {
                "Type": "volume",
                "Name": "068db5be074269223601decf6480553ff789ab3463fd688d38eed37d6e5a2949",
                "Source": "/var/lib/docker/volumes/068db5be074269223601decf6480553ff789ab3463fd688d38eed37d6e5a2949/_data",
                "Destination": "/usr/local/date",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

查看所有某种网络连接下的容器

docker network inspect none|container|bridge|host
[root@centos8 ~]# docker network inspect none 
[
    {
        "Name": "none",
        "Id": "725d3522df53092cc71afc1127c9d6134fcdbc369c407cb2afa0553176105e29",
        "Created": "2021-10-14T10:58:20.782070343-04:00",
        "Scope": "local",
        "Driver": "null",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": []
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "c541c5c2fab770661970ed81bd3287edad19279eadf0a26683d083c3e95aaf91": {
                "Name": "bbox03",
                "EndpointID": "b39939f1b9cc010224a8e28ad5ccb9726735c003a722ae8667874f2bfdb950f3",
                "MacAddress": "",
                "IPv4Address": "",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
[root@centos8 ~]# 

查看volume数据卷信息

[root@centos8 _data]# docker volume ls
DRIVER    VOLUME NAME
local     068db5be074269223601decf6480553ff789ab3463fd688d38eed37d6e5a2949
local     docker_nginx_data
[root@centos8 _data]# 

查看目录挂载关系

[root@centos8 _data]# docker volume inspect docker_nginx_data 
[
    {
        "CreatedAt": "2021-10-17T07:13:20-04:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/docker_nginx_data/_data",
        "Name": "docker_nginx_data",
        "Options": null,
        "Scope": "local"
    }
]
[root@centos8 _data]# 

创建与启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@centos8 docker_nginx]# docker inspect nginx02

-i :表示运行容器;

-t :表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个

伪终端;

–name :为创建的容器命名;

-v :表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个 -v

做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上;

-d :在 run 后面加上 -d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登

录容器,如果只加 -i -t 两个参数,创建容器后就会自动进容器里);

-p(小写) :表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口

映射。

-P(大写) :随机使用宿主机的可用端口与容器内暴露的端口映射。

创建并进入容器

docker run -it --name 容器名称 镜像名称:标签 /bin/bash
[root@centos8 etc]# docker run -it --name mynginx -P nginx /bin/bash
root@f6f675b87613:/# 

退出当前容器

exit
[root@centos8 etc]# docker run -it --name mynginx -P nginx /bin/bash
root@f6f675b87613:/# exit
exit
[root@centos8 etc]# 

守护式方式创建容器

docker run -id --name 容器名称 镜像名称:标签
[root@centos8 etc]# docker run -id --name mynginx -p 6872:80 nginx
bc12f7a947a7e11d9c3e1d12416a205e25d6446eb8c24cca0f3a5322b5a26240
[root@centos8 etc]# 

登录后台运行的容器

运行并进入 容器名称|容器ID 的== /bin/bash ==

docker exec -it 容器名称|容器ID /bin/bash
[root@centos8 etc]# docker exec -it mynginx /bin/bash
root@bc12f7a947a7:/# 

停止与启动容器

# 停止容器
docker stop 容器名称|容器ID
# 启动容器
docker start 容器名称|容器ID
[root@centos8 etc]# docker stop mynginx 
mynginx
[root@centos8 etc]# docker start mynginx 
mynginx
[root@centos8 etc]# 

文件拷贝

将文件拷贝到容器内

docker cp 需要拷贝的文件或目录 容器名称:容器目录
[root@centos8 etc]# vim test_for_copy.txt
[root@centos8 etc]# docker cp test_for_copy.txt mynginx:/etc
[root@centos8 etc]# docker exec -it mynginx /bin/bash
root@bc12f7a947a7:/# cd /etc
root@bc12f7a947a7:/etc# ls
...
rc2.d   selinux      test_for_copy.txt
...
root@bc12f7a947a7:/etc# ls |grep test
test_for_copy.txt
root@bc12f7a947a7:/etc# 

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

docker cp 容器名称:容器目录 需要拷贝的文件或目录
root@bc12f7a947a7:/etc# touch abc.txt
root@bc12f7a947a7:/etc# exit   
exit
[root@centos8 etc]# docker cp mynginx:/etc/abc.txt /root/etc

目录挂载(容器数据卷操作)

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器,而且这个操作是双向绑定的,也就是说容器内的操作也会影响到宿主机,实现备份功能。

但是容器被删除的时候,宿主机的内容并不会被删除。如果多个容器挂载同一个目录,其中一个容器被删除,其他容器的内容也不会受到影响。

容器与宿主机之间的数据卷属于引用的关系,数据卷是从外界挂载到容器内部中的,所以可以脱离容器的生命周期而独立存在,正是由于数据卷的生命周期并不等同于容器的生命周期,在容器退出或者删除以后,数据卷仍然不会受到影响,数据卷的生命周期会一直持续到没有容器使用它为止。

创建容器添加 -v 参数,格式为 宿主机目录:容器目录

容器目录的路径不一定要存在才能写,会自动生成

指定目录挂载

这种方式的挂载不会在/var/lib/docker/volume 目录生成内容。

# 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名

现在Linux上的/root/mydate/docker_nginx目录 与容器的/abc/123目录挂载成功,同步成功

[root@centos8 docker_nginx]# vim config.conf
[root@centos8 docker_nginx]# docker run -id --name nginx02 -p 81:80 -v /root/mydate/docker_nginx:/abc/123 nginx
54914fc4d0b03a74bf27d89acb0f0d461083ed3468c33766238d4b3610d1ec81
[root@centos8 docker_nginx]# vim config.conf
[root@centos8 docker_nginx]# ls
config.conf
[root@centos8 docker_nginx]# 
[wxf@centos8 ~]$ docker exec -it nginx02 /bin/bash
root@54914fc4d0b0:/# cd abc/123
root@54914fc4d0b0:/abc/123# ls
config.conf
root@54914fc4d0b0:/abc/123# 

匿名挂载

匿名挂载只需要写容器目录即可,容器外对应的目录会在/var/lib/docker/volumes 中生成。

匿名挂载对应的名字会随机生成

# 匿名挂载
docker run -id -v /usr/local/date --name nginx03 nginx
[root@centos8 docker_nginx]# docker run -id -v /usr/local/date --name nginx03 nginx
02541d6c539afb0edbdec1b017f6dccc01dd4af0952f93e5909fbc24b0d402da
[root@centos8 docker_nginx]# cd /var/lib/docker/volumes/
[root@centos8 volumes]# ls
068db5be074269223601decf6480553ff789ab3463fd688d38eed37d6e5a2949  backingFsBlockDev  metadata.db
[root@centos8 volumes]# cd ./068db5be074269223601decf6480553ff789ab3463fd688d38eed37d6e5a2949/_data/
[root@centos8 _data]# ls
test.txt
[root@centos8 _data]# 
[wxf@centos8 ~]$ docker exec -it nginx03 /bin/bash
root@02541d6c539a:/# cd /usr/local/date/
root@02541d6c539a:/usr/local/date# ls
root@02541d6c539a:/usr/local/date# touch test.txt
root@02541d6c539a:/usr/local/date# 

具名挂载

具名挂载就是给数据卷起了个名字,容器外对应的目录会在/var/lib/docker/volume 中生成

docker run -id -v 具体的名字:容器挂载目录 --name nginx04 nginx
[root@centos8 _data]# docker run -id -v docker_nginx_data:/usr/local/date --name nginx04 nginx
63487115dffcec4bfa6f44a69e5b7aa179e6119e479ea1e91d1bd4c2fce4fa1b
[root@centos8 _data]# docker volume ls
DRIVER    VOLUME NAME
local     068db5be074269223601decf6480553ff789ab3463fd688d38eed37d6e5a2949
local     docker_nginx_data
[root@centos8 _data]# 

设置目录卷只读/读写

# 只读。只能通过修改宿主机内容实现对容器的数据管理。
docker run -it -v /宿主机目录:/容器目录:ro 镜像名
# 读写,默认。宿主机和容器可以双向操作数据。
docker run -it -v /宿主机目录:/容器目录:rw 镜像名

ro

[root@centos8 _data]# docker run -id --name nginx05 -P -v /appoint:/usr/local:ro nginx
a8d5991ddb5034bf9cd90dd03481694f6618c1737aa74ec4c516fd664229e8d2
[root@centos8 _data]# cd /appoint/
[root@centos8 appoint]# ls
[root@centos8 appoint]# touch 111.txt
[root@centos8 appoint]# ls
111.txt
[root@centos8 appoint]# 
[wxf@centos8 ~]$ docker exec -it nginx05 /bin/bash
root@a8d5991ddb50:/# cd /usr/local/
root@a8d5991ddb50:/usr/local# ls
111.txt
root@a8d5991ddb50:/usr/local# rm 111.txt 
rm: cannot remove '111.txt': Read-only file system
root@a8d5991ddb50:/usr/local# 

默认是rw,就不测试了

volumes-from(继承)

如果被继承的权限是ro,那么继承者即使输入“centos7-01:rw”,其权限还是ro

# 容器 centos7-01 指定目录挂载
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01
centos:7
# 容器 centos7-04 和 centos7-05 相当于继承 centos7-01 容器的挂载目录
docker run -di --volumes-from centos7-01:ro --name centos7-04 centos:7
docker run -di --volumes-from centos7-01:rw --name centos7-05 centos:7
[root@centos8 appoint]# docker run -id --name nginx06 --volumes-from nginx05:ro nginx
5f98be40854cbca528f3ecffc97686a46ceb851bd2eabbd7ca7ec7e2a4de66f1
[root@centos8 appoint]# docker run -id --name nginx07 --volumes-from nginx05:rw nginx
fdc04cc84e800b5ad7ce01619ec00df7948add3052c875fc525097d5b05aea78
[wxf@centos8 ~]$ docker exec -it nginx07 /bin/bash
root@fdc04cc84e80:/# cd /usr/local/
root@fdc04cc84e80:/usr/local# ls
111.txt
root@fdc04cc84e80:/usr/local# touch 222.txt
touch: cannot touch '222.txt': Read-only file system
root@fdc04cc84e80:/usr/local# exit
exit
[wxf@centos8 ~]$ docker exec -it nginx06 /bin/bash
root@5f98be40854c:/# cd /usr/local/
root@5f98be40854c:/usr/local# touch 222.txt
touch: cannot touch '222.txt': Read-only file system
root@5f98be40854c:/usr/local# 

容器的创建,运行,停止,删除

[root@centos8 appoint]# docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED             STATUS                  PORTS                                     NAMES
fdc04cc84e80   nginx         "/docker-entrypoint.…"   9 minutes ago       Up 9 minutes            80/tcp                                    nginx07
5f98be40854c   nginx         "/docker-entrypoint.…"   9 minutes ago       Up 9 minutes            80/tcp                                    nginx06
a8d5991ddb50   nginx         "/docker-entrypoint.…"   15 minutes ago      Up 15 minutes           0.0.0.0:49158->80/tcp, :::49158->80/tcp   nginx05
63487115dffc   nginx         "/docker-entrypoint.…"   27 minutes ago      Up 27 minutes           80/tcp                                    nginx04
02541d6c539a   nginx         "/docker-entrypoint.…"   39 minutes ago      Up 39 minutes           80/tcp                                    nginx03
54914fc4d0b0   nginx         "/docker-entrypoint.…"   53 minutes ago      Up 53 minutes           0.0.0.0:81->80/tcp, :::81->80/tcp         nginx02
bc12f7a947a7   nginx         "/docker-entrypoint.…"   About an hour ago   Up About an hour        0.0.0.0:6872->80/tcp, :::6872->80/tcp     mynginx
6f43653b758d   hello-world   "/hello"                 2 days ago          Exited (0) 2 days ago                                             gifted_brattain

创建===》docker run …见《创建与启动容器》

运行

将停止的容器启动

[root@centos8 appoint]# docker start gifted_brattain 
gifted_brattain
[root@centos8 appoint]# 

停止

将运行的容器停止

可以多个连续停止,中间以空格分隔

[root@centos8 appoint]# docker stop mynginx 
mynginx
[root@centos8 appoint]# 
[root@centos8 appoint]# docker stop nginx02 nginx03 nginx04 nginx05 nginx06 nginx07
nginx02
nginx03
nginx04
nginx05
nginx06
nginx07

删除

将创建的容器删除,如果正在运行,需要先stop再删除

可以多个连续删除,中间以空格分隔

[root@centos8 appoint]# docker rm mynginx 
mynginx
[root@centos8 appoint]# 
[root@centos8 appoint]# docker rm nginx02 nginx03 nginx04 nginx05 nginx06 nginx07
nginx02
nginx03
nginx04
nginx05
nginx06
nginx07


目录
相关文章
|
8天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
4天前
|
关系型数据库 MySQL API
|
5天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
7天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
35 1
|
8天前
|
Docker 容器
docker 修改容器内的系统时间
【10月更文挑战第27天】docker 修改容器内的系统时间
148 2
|
15天前
|
Web App开发 iOS开发 Docker
Docker 容器的日志
【10月更文挑战第31天】
26 5
|
15天前
|
存储 缓存 Docker
docker中挂载数据卷到容器
【10月更文挑战第16天】
21 2
|
5天前
|
Docker 容器
docker 容器重启
【10月更文挑战第30天】docker 容器重启
10 0
|
3月前
|
Docker 容器
Docker 入门常用命令
Docker 入门常用命令
29 1
|
6月前
|
关系型数据库 MySQL Go
Docker从入门到精通:Docker镜像相关命令学习
本文介绍了Docker中管理镜像的基本命令:`docker images`用于查看镜像列表,`docker search`从Docker Hub搜索镜像,`docker rmi`删除镜像,`docker tag`则用于标记和重命名镜像。通过这些命令,用户能有效管理自己的Docker镜像资源。
94 1
下一篇
无影云桌面