Docker
## 简介
一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
## Rootless mode
以非root模式启动
## live restore
docker进程退出时容器不停止
### 方法一:/etc/docker/daemon.json
{"live-restore": true}
systemctl reload docker
### 方法二:/usr/lib/systemd/system/docker.service
ExecStart 后面加上 --live-restore
### 不能用于集群模式
docker-compose启用的容器请求超时,docker-compose down 命令报错
## 核心概念:
镜像(image)、容器(container)、仓库(Repository)
镜像仓库(registry)
## 公共镜像源(/etc/docker/daemon.json)
"registry-mirrors":["http://10.8.8.143"]
#"registry-mirrors": ["http://hub-mirror.c.163.com"]
## 设置信任的镜像仓库(daemon.json)
"insecure-registries":["http://10.8.8.143"]
## 创建私有仓库
docker pull registry
docker run -dit --name local_registry -p 5000:5000 -v /data/registry:/var/lib/registry registry
### 查看私有仓库中的镜像
curl localhost:5000/v2/_catalog
### 搭建私有仓库Harbor
Docker 镜像(image)
## 镜像搜索
docker search NAME[:TAG] ##不指定标签(TAG),则会默认选择latest标签,即最新版的镜像。
## 拉取镜像
docker pull NAME[:TAG]
docker pull registry/NAME[:TAG]
## 上传镜像
docker push NAME[:TAG]
docker push registry/NAME[:TAG]
## 列出本地镜像
docker image ls -a
## 删除本地镜像(镜像没有被容器使用)
docker image rm [image_name]
-f 强制删除
## 镜像重命名
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
## 导出镜像
docker save -o file_name image_name ##保留完整记录
## 导入镜像
docker load < file_name
## 创建镜像
1、根据已有容器创建
docker commit [container_name] [REPOSITORY:TAG]
2、从文件模板导入
docker import - [image_name]:[TAG]
3、dockerfile创建
dockerfile 是一个文件
docker build dockerfile
docker build -f path/to/dockerfile_name -t image_name:tag .
# docker build 最后的 . 号,是在指定镜像构建过程中的上下文环境的目录
Docker 容器(Container)
## 查看容器
docker ps -a
## 查看容器资源占用状态
docker stats
## 创建容器
docker run [option] image_name command
### 参数
-P 自动映射容器所有端口到本地随机端口
-p 端口映射(本地端口:容器端口) 多个-p映射多个端口
-d 进入后台运行
-i 交换式操作
-t 终端
### 容器获取root权限,执行systemctl命令等
--privileged # 赋予容器扩展权限,需要/usr/sbin/init
# docker run -dit --privileged image_name /usr/sbin/init
# dockerfile指定 CMD ["/usr/sbin/init”]
--name 自定义容器名
--rm 容器退出后立即删除
-b 挂载指定的网桥
--ip-forward=true/false 是否开启转发功能
--dns 指定DNS服务器
-h 配置容器hostname
-ip 指定容器ip
--net=bridge/host/none 配置容器的桥接模式
-v/--mount 挂载目录
## 启动容器
docker start container_name
## 终止容器
docker stop container_name
## 查看容器日志
docker logs container_name
## 查看容器所有信息
docker container inspect [container_name]
## 进入容器
docker exec [option] [container] [command]
-u root # 以root用户进入容器
## 删除容器
docker rm container_name
## 清理所有处于静止状态的容器
docker prune
## 导入导出容器(import export) ##保留容器当时的快照状态
docker export container_name > file_name
## 文件拷贝
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH