文章目录

  • 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 运行流程

  1. 检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
  2. 启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
  3. 返回容器ID

2.查看正在运行的容器

docker ps # 查看当前系统中正在运行的容器列表docker ps [参数]

参数:

  • -a:查看系统全部的容器,包括没有运行的
  • -q:只显示容器id

3. 查看容器日志

docker logs -f 容器id

参数:

  • -f:可以滚动查看日志的最后几行

4. 查看容器内容

# 格式docker inspect [容器名称|ID]

5. 进入容器内部

进入容器一般有四种:

  1. exec : 在容器外向容器内执行一个命令(官方推荐

    docker exec -it 容器id /bash
  2. attach : 在早期docker提供的进入容器的命令(缺点:当其结束时,容器也跟着结束了

    docker attach [容器ID|名称]
  3. nsenter : 建立一个管道连接上容器主ID

    nsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid
  4. 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