docker基础命令

docker基础命令

一、安装docker

1、更新源

1
apt update

2、安装docker

1
apt install docker.io

二、使用docker拉取镜像和运行镜像

1、拉取镜像

搜索所需要安装的镜像

1
docker search nginx

拉取镜像(此处是获取的排名第一的镜像)

1
docker pull nginx

查看拉取到本地的nginx镜像

1
docker images

2、运行镜像

即使没有拉取镜像, 这里也会自动拉取

1
docker run -d --name nginx -p 80:80 nginx:latest
  • -d 表示在后台运行
  • –name nginx 参数指定容器的名称为 nginx
  • -p 80:80 参数将主机的 80 端口映射到容器的 80 端口
  • nginx:latest 运行的镜像

3、查看正在运行的镜像的信息

1
docker ps

4、查看所有镜像包括没有在运行的信息

1
docker ps -a

这样就可以在本机的80端口访问docker的80端口

三、进入docker容器内部操作

1
docker exec -it <container-name> /bin/bash
  • exec 命令代表附着到运行着的容器内部
  • -it -i 表示要使用交互式终端进行交互,即保持输入流打开,-t 表示要为新终端窗口分配一个伪终端(PTY)
  • <container-name> 为容器的名称或 ID,使用docker ps 查看
  • /bin/bash 指定了执行命令的shell

四、其他命令

1、复制主机文件或目录到docker

1
docker cp <file-or-folder> <container-name>:<path>
  • <file-or-folder> 主机的文件或目录
  • <container-name> 为容器的名称或 ID
  • <path> 是容器内部的目标路径

2、复制docker内的文件或目录到主机

1
docker cp <container-name>:<path> <file-or-folder>
  • <container-name> 为容器的名称或 ID
  • <path> 是容器内部的目标路径
  • <file-or-folder> 主机的文件或目录

3、关闭容器和启动容器

关闭

1
docker stop <container-name>
  • <container-name> 为容器的名称或 ID
    开启
1
docker start <container-name>
  • <container-name> 为容器的名称或 ID

4、删除容器(需要先关闭容器),但不会删除容器的数据卷和镜像,如果加上参数-v会删除与之关联的数据卷

1
docker rm <container-name>
  • <container-name> 为容器的名称或 ID

5、运行一个新的容器,将主机上的目录挂载到容器内部

1
2
docker run -d --name <container-name> -v <host-path>:<container-path> 
-p 80:80 <image-id>
  • <container-name> 为容器的名称或 ID
  • <host-path> 是主机上要挂载的目录或文件的路径
  • <container-path> 是容器内部的挂载点,容器可以通过该路径访问主机上的文件
  • <image-id> 为要运行的镜像 ID
    请确定挂载点和被挂载点路径存在,并且被挂载点拥有权限
    这样就可以通过<container-path>查看的数据了用于主机和容器之间的数据共享是非常有效的

6、运行一个新的容器,将一个数据卷挂载到容器内部

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UnionFS,可以提供很多有用的特性:

  • 数据卷 可以在容器之间共享和重用
  • 对 数据卷 的修改会立马生效
  • 对 数据卷 的更新,不会影响镜像
  • 数据卷 默认会一直存在,即使容器被删除

创建一个数据卷

1
docker volume create <volume-name>
  • <volume-name> 数据卷的名称

查看数据卷

1
docker volume ls

创建一个容器

1
docker run -d --name <container-name> -v <volume-name>:<container-path> -p 80:80 <image-id>
  • <container-name> 为容器的名称或 ID
  • <volume-name> 为数据卷的名称
  • <container-path> 是容器内部的挂载点,容器可以通过该路径访问主机上的文件
  • <image-id> 为要运行的镜像 ID