
镜像:相当于类
容器:相当于对象,即镜像的实例
docker run docker run -it container_name /bin/bash 运行容器,并进入容器的终端交互界面
使用exit或CTRL D退出容器交互界面
docker ps查看正在运行的容器
docker ps -a查看所有容器的状态
docker stopdocker start container_IDdocker restart container_IDdocker attach container_ID使用这个命令进入容器,退出容器后会使容器关机,而使用 docker exec 不会
docker exec -it container_ID /bin/bashLinux 中,与 docker daemon 有关(守护进程)

与本地相关:
查看本地镜像:docker images
-q 参数查看所有本地镜像的 ID
删除本地镜像:docker rmi 镜像 ID/镜像名:版本号
删除所有本地镜像的快捷操作:docker rmidocker image -q``
与远程相关:
搜索远程仓库是否有对应镜像:docker search 镜像名
从远程仓库拉取镜像:docker pull 镜像名:版本号
版本号到官方 docker 网站上找
hub.docker.com

docker run -it --name=容器名 镜像名 /bin/bash
-i:保持容器一直运行
-t:给容器分配终端,exit 直接会关闭容器
-d:使容器后台运行,且 exit 操作也不会关闭容器,需要用docker exec进入容器执行命令
-it创建的容器称为交互式容器,-id创建的容器称为守护式容器
docker exec -it 容器名 /bin/bash
docker ps:正在运行的容器
-a 参数,所有容器
docker stop 容器名/ID
docker start 容器名/ID
docker rm 容器名/ID
移除所有容器:docker rmdocker ps -aq``
正在运行的容器不能被移除
docker inspect 容器名/ID

数据卷:是宿主机中的一个文件或目录。当挂载到容器中的目录后,数据卷中的内容和容器该目录下的内容相同,且两者同时变化
一个数据卷可以被多个容器同时挂载
一个容器也可以挂载多个数据卷
数据卷的作用:
数据卷的配置
在创建启动容器时,可以通过-v 参数设置挂载数据卷
docker run ... -v 宿主机目录/文件:容器内目录或文件 [-v...]...
必须写绝对路径
目录不存在则会自动创建
可以挂载多个数据卷
数据卷容器
要实现多容器之间的数据交换,可以通过以下方式:
数据卷容器的配置:

创建数据卷容器不用指定宿主机目录
普通容器绑定数据卷容器后,就算数据卷容器被删除,仍可与宿主机目录交换数据


docker run -id \
-p 3306:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWS/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
-p:端口映射
-e MYSQL_ROOT_PASSWORD:固定参数,配置 mysql 的密码mysql 挂载的目录:配置文件、日志目录、数据信息
即使容器被删除,数据等信息已经被持久化到本地
以 mysql 为例
容器和宿主机可以直接通信,容器和外部机器不能直接通信,但是外部机器可以和宿主机通信
因此可以将容器的 3306 端口映射到宿主机的任一没有被占用的端口,外部机器访问宿主机的该端口,就可以实现与容器的通信
在创建运行容器时,使用-p 参数进行端口映射
docker run ... -p 宿主机端口:容器端口 ...


拉取镜像时就可以观察到,不同镜像下载的文件不同,一层一层的下载
docker inspect 镜像名:版本号可以查看镜像的信息,最底下就显示的每层的文件内容


docker commit 容器名/id 镜像名:版本号
docker save -o 压缩文件名.tar 镜像名:版本号
docker load -i 压缩文件名
将容器转换(docker commit)为镜像后,镜像不能传递,因此要先打包压缩(docker save)
解压压缩文件为镜像 (docker load)
通过挂载访问的文件在转换为镜像时会被忽略

Dockerfile 的编写可以参考hub.docker.com任意镜像的任意版本号,

Dockerfile 关键字


使用 Dockerfile 构建镜像
docker build -f dockerfile 的文件路径 -t 镜像名:版本
docker compose 是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启动和停止
使用步骤:

私有仓库其实就是一个容器 registry

tag 相当于 git 中的 add,标记一下和存到暂存区类似



容器的底层操作系统内核使用的是宿主机的操作系统,因此在 Linux 主机上不能启动 windows 的容器
由于 windows 上有 wsl2、hyper-V 的虚拟化技术,因此在 windows 上也可以启动 Linux 容器