文章目录
- Docker的中央仓库
- 官网
- 国内镜像
- 1. 网易蜂巢
- 2. daoCloud(推荐)
- 搭建私服
- 1.修改注册文件
- 2、重启服务
- Docker镜像操作
- 1. 拉取镜像到本地
- 2. 查看全部本地的镜像
- 3. 删除本地镜像
- 4. 搜索镜像
- 5. 镜像的导入导出(不规范)
- Docker容器操作
- 1.运行容器
- 2.查看正在运行的容器
- 3. 查看容器日志
- 4. 查看容器内容
- 5. 进入容器内部
- 6. 停止和启动一个容器
- 7. 删除容器
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-reloadsystemctl 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]# 可选择标识,如果不选,默认latestdocker 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