一、关于docker 镜像 、容器、仓库之间的关系
镜像(Image): 类似于虚拟机 的镜像
容器(Container): 类似于操作系统(或者说是独立的软件), 由镜像可以创建大量的容器.
仓库(Repository) : 存储镜像的仓库,存储着各种各样的镜像
如果我们需要运行nginx,mysql,redis这一个个的软件(容器),我们需要对应的镜像,镜像从何而来呢? 你可以自己制作,也可以直接从仓库中获取别人写好的镜像就可以了.
二、docker 镜像
docker search nginx
// docker search [image]
// 搜索nginx镜像
docekr pull nginx
// docker pull [image:[tag]]
// 默认下载laster 版本 也就是最后一个版本的nginx
docker images
// 删除名为ngixn 的镜像
docker rmi nginx
// 删除镜像ID
docker rmi 562d384073b5
// docker rmi [image ID]
// 批量镜像
docker rmi 562d384073b5 fcf076ac0126 8363bddde211
// docker rmi [image ID] [image ID] ...
三、docker容器
docker run --name nginx_container -p 8080:80 -v ./nginx/www:/usr/share/nginx/html nginx
// docker run [-dit] [--name container_name] [-p local_port:container_port] [-v local_dir:container_dir] [image[:tag]]
// -d 后台运行
// -it 交互式运行
// --name 容器名
// -p 本地端口 8080 映射至 容器80端口
// -v 将./nginx/www 挂载至容器的/usr/share/nginx/html 目录
// run 启动
// nginx nginx镜像
docker run -d nginx
// -d 后台运行
docker run -it nginx /bin/bash
// -it 交互式运行
// /bin/bash 用bash交互
ctrl + d // 直接退出,容器也会终止
ctrl + p +q // 守护进程方式退出
docker log [container_ID]
//docker log d86dc3983fc7
docker ps a //查看所有容器
docker ps l // 查看运行中容器的id
docker port [container_ID] // 查看容器的端口映射
// 启动容器
docker start [container_name | container_ID]
// 重启容器
docker restart [container_ID]
docker stop [containr_name | container_ID]
docker rm [container_ID] [container_ID]
// docker rm d86dc3983fc7 // 删除一个容器
// docker rm d86dc3983fc7 0b18e9cd782c // 删除两个
// 查看简单的信息
docker top [container_ID | container_name]
// 查看更详细的底层信息
docker inspect [container_ID | container_name]
docker attach [container_ID] // 这种方式进入容器 操作都是同步的,切一旦ctrl+d就会容器就结束了 .一般不用这种方式的
docker exec -it [container_ID] /bin/bash
// 另启一个进程的方式进入容器
// -it 交互式
// 用bash 方式
docker export [container_ID] > name.tar
//导入并重新命名
docker import [name.tar | url] > [REPOSITORY[:TAG]]
// 直接导入
docker import [name.tar | url]
四、docker仓库
docker run -d -p 5000:5000 --restart=always --name registry -v $HOME/Docker/Registry:/var/lib/registry registry
// --restart=always 表示总是启动的,挂掉后会重启
// deamon.json 添加
{
"insecure-registries":[127.0.0.1:5000]
}
docker tag [image_name] 127.0.0.1/jmz/nginx:v1
// 此时你会发现的docker images 中多了一个127.0.0.1/jmz/nginx 镜像
docker push 127.0.0.1/jmz/nginx:v1
// 此时镜像已推送至自己本地的私有仓库中了
docker pull 127.0.0.1:5000/jmz/nginx:v1
如果你自己有docker hub 账号的话
你可以通过
docker login
登录自己的账号
自己制作的镜像推至到自己的docker hub 账号中
五、docker 其他命令
docker cp [OPTIONS] CONTAINER_ID:DEST_PATH
// docker cp ./data 9f0156097f55:/data
// 将data 目录下的内容 复制到 容器9f0156097f55 data目录下
- docker build --build-arg 用法
docker build --build-arg MODE=debug --build-arg url="baidu.com" -t app .
// --build-arg 设置变量 传入dockerfile 内部的ARG 中
六、docker 查看日志
docker log [container_id] // 查看日志
docker log -d [container_id] // 实时查看日志