文章目录
Docker的*仓库
Docker的*仓库,就是存放镜像的网站。
官网
镜像最全,但国内的下载速度慢
https://hub.docker.com/
国内镜像
1. 网易蜂巢
http://c.163.com/hub
2. daoCloud(推荐)
http://hub.daocloud.io/
搭建私服
1.修改注册文件
修改/etc/docker/daemon.josn文件,若文件不存在,则手动创建
添加内容如下:
{
"registry-mirrors":["https://docker-cn.com"],
"insecure-registries":["ip:port"] //替换相应的IP和端口即可
}
2、重启服务
systemctl daemon-reload
systemctl restart docker
Docker镜像操作
1. 拉取镜像到本地
docker pull 镜像名称[:tag]
镜像名称:这个是仓库地址;url的地址一样
tag:这个才是镜像,如果不指定那么就是latest
例如:
docker pull daocloud.io/library/tomcat:8.5.15-jre8
2. 查看全部本地的镜像
# 查看本地已经安装过的镜像信息,包含标识,名称,版本,更新时间,大小
docker images # 列出所有镜像
docker image ls # 列出所有镜像
docker images -q # 只查看镜像ID
# 查看该镜像的详细信息
docker inspect [REPOSITORY][:latest] | [IMAGE ID]
# 可以格式化输出
docker inspect -f {{".Config.Image"}} hello-world
# 标签TAG区分发行版本
# docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag SOURCE_IMAGE_REPOSITORY[:TAG] TARGET_IMAGE_REPOSITORY[:TAG]
docker tag hello-world:latest hello-world:1.1.0
# 查看镜像内支持的环境变量
docker run [REPOSITORY][:TAG] | [IMAGE ID] env
例如:docker run b2cb11db9d3d env
3. 删除本地镜像
# 镜像会占用磁盘空间,可以直接手动删除,标识通过查看获取
docker rmi [REPOSITORY][:tag] | [IMAGE ID] # 可选择标识,如果不选,默认latest
docker rmi $(docker images -q) # 删除所有镜像
# docker images 查看到IMAGE ID
# 删除之前镜像之前,需要先删依赖该镜像的所有容器
docker ps -a # 查看所有容器
docker rm [CONTAINER ID] # 删除容器
# 删除依赖某个镜像的所有容器,并删除该镜像
docker ps -qa -f ancestor=nginx:1.9.5 # 查看"nginx:1.9.5"镜像ID的所有容器
docker stop $(docker ps -qa -f ancestor=nginx:1.9.5) # 停止以"nginx:1.9.5"镜像ID的所有容器
docker rm $(docker ps -qa -f ancestor=nginx:1.9.5) # 删除以"nginx:1.9.5"镜像ID的所有容器
docker rmi nginx:1.9.5
# 查找出所有以 image 之后创建的 image 的父 image,并删除子镜像,然后删除父镜像
docker rmi $(docker image ls -q --filter since=ba6acccedd29)
docker rmi ba6acccedd29
4. 搜索镜像
# docker search [关键字]
docker search mysql
5. 镜像的导入导出(不规范)
将本地的镜像导出
docker save -o 导出的路径/自定义名字 镜像id
例如:
docker save -o /root/tomcat.image b8dfe9ade316 # b8dfe9ade316为镜像ID,可通过docker images查询
加载本地的镜像文件
docker load -i 镜像文件
例如:
docker load -i tomcat.image
重新命名镜像名称和版本
docker tag 镜像id 新镜像名称:版本
例如:
docker tag b8dfe9ade316 tomcat:8.5
# b8dfe9ade316镜像ID ,可通过docker images查询
Docker容器操作
1.运行容器
格式
docker run [参数] [镜像名称] [运行容器的启动命令]
常用的参数
-d : 以守护进程的方式运行一个容器(后台运行)
docker run -d [镜像名称] [cmd]
--name : 指定容器的名称
docker run -d --name [容器名称] [镜像的名称] [cmd]
-p : 指定端口映射
docker run -d -p 宿主主机端口:容器内端口 [镜像名称] [cmd]
-P :随机端口映射
docker run -d -P [镜像名称] [cmd]
-i : 打开标准输出
-t : 创建一个伪终端
docker run -it [镜像名称] [cmd]
-v : 挂载目录到容器中
docker run -v 宿主主机目录:容器内目录 [镜像名称] [cmd]
--rm : 容器生命周期结束时立即删除
docker run --rm [镜像名称] [cmd]
-e : 在容器中创建一个环境变量
docker run -e NAME=Centos -d [镜像名称] [cmd]
--link : 连接上一个容器,实现网络互通
docker run --link 被连接的容器的名称:连接别名 [镜像名称] [cmd]
-h : 设置容器主机名
docker run -h "主机名" [镜像名称] [cmd]
实例演示
docker run -d -p宿主机端口∶容器端口 --name 容器名称 镜像的标识镜像名称[:tag]
docker run 运行流程
- 检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
- 启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
- 返回容器ID
2.查看正在运行的容器
docker ps # 查看当前系统中正在运行的容器列表
docker ps [参数]
参数:
-
-a
:查看系统全部的容器,包括没有运行的 -
-q
:只显示容器id
3. 查看容器日志
docker logs -f 容器id
参数:
-
-f
:可以滚动查看日志的最后几行
4. 查看容器内容
# 格式
docker inspect [容器名称|ID]
5. 进入容器内部
进入容器一般有四种:
-
exec
: 在容器外向容器内执行一个命令(官方推荐)docker exec -it 容器id /bash
-
attach
: 在早期docker提供的进入容器的命令(缺点:当其结束时,容器也跟着结束了docker attach [容器ID|名称]
-
nsenter
: 建立一个管道连接上容器主IDnsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid
-
ssh
: 通过ssh连接
实例演示:
6. 停止和启动一个容器
停止指定容器:
docker stop 容器id
停止全部容器:
docker stop $(docker ps -qa)
启动(该容器必须是系统已经存在的容器)
docker start 容器id
7. 删除容器
删除容器前需要先停止容器
删除指定容器:
docker rm 容器id
删除全部容器:
docker rm $(docker ps -qa)
强制删除指定容器:
docker rm -f 容器id