概要
Docker由下面3个东西组成:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像
ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
安装
参考:CentOS Docker 安装 | 菜鸟教程 (runoob.com)
我的测试环境是CentOS7,使用的官方安装脚本自动安装。
1
| curl -sSL https://get.daocloud.io/docker | sh
|
安装完成后,重启docker服务。
1 2 3 4 5 6
| docker version # 查看版本 systemctl status docker # 查看docker状态 systemctl start docker # 启动docker systemctl restart docker # 重启docker
# 或者使用service docker start
|
常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| docker # 查看docker所有命令 docker xxx --help # 查看xxx命令详情
docker search 镜像名 # 从远程仓库搜索镜像 docker pull 镜像名 # 从远程仓库拉镜像到本地 docker image list/docker images # 查看已有镜像列表 docker tag 镜像ID 新镜像名[:新tag名] # 镜像改名/改tag名 docker rmi [-f] 镜像ID # 删除镜像(要先删除镜像引起的容器) docker image prune # 删除没有使用的镜像 docker rmi $(docker images -q) # 删除所有镜像
# 创建容器 docker run [-it -d -p -name -v] 常用可选参数 docker run -it 镜像名 [shell命令] # 前台运行创建新容器 docker run --rm -it 镜像名 /bin/sh # 前台运行容器,退出后删除 exit # 退出容器 docker run -d 镜像名 [shell命令] # 后台运行创建新容器 docker run -d -p 5000:5000 镜像名 命令 # 将容器内5000端口映射到宿主机的5000端口,多个就依次加-p xx:xx就行了。默认是绑定tcp端口,如果udp直接加后面就行了:-p 5000:5000/udp。这个设置是直接改容器的本地配置(inspect),永久生效,后面直接docker start就行了。 docker run -v 宿主机目录:容器目录 镜像名 命令 # -v将宿主机目录挂载到容器某个目录下,这样宿主机就可以与容器共享目录了。
docker ps # 查看正在运行的容器 docker ps -a #查看所有的容器 docker losgs [-f] 容器ID # 查看运行的容器内标准输出日志, -f类似tail -f一样 docker stop 容器ID # 停止容器 docker start 容器ID # 启动一个已经停止的容器 docker restart 容器ID # 重启容器 docker rm [-f] 容器ID # 删除容器 docker container prune # 删除所有处于终止状态的容器 docker rm $(docker ps -aq) # 删除所有容器
docker attach 容器ID #进入一个启动的后台容器,这种方式进入exit退出会导致容器也会退出 docker exec -it 容器ID /bin/bash #同上,这种方式进入exit退出,容器不会退出,推荐这种
docker export 容器ID > xxx.tar # 导出容器 docker import xxx.tar 镜像名 # 把xxx.tar(也可以是URL)以镜像形式导入
docker cp 宿主机文件路径 容器ID:容器目标路径 # 宿主机文件传到容器 docker cp 容器ID:容器文件路径 宿主机目标路径 # 容器文件传到宿主机
docker builder prune #清理构建缓存(build会产生很多缓存占用磁盘,磁盘不足了可以清理下) docker build -t 镜像名 . -f Dockerfile # 从dockerfile构建镜像 docker-compose build [servername] # 重新构建所有或[servername]镜像 docker-compose up [-d] # 启动所有容器[后台]
|
通过容器提交镜像以及推送镜像流程
我们本地一个容器如果想要提交到docker仓库供别人pull下载使用。操作流程如下(和git使用类似):
注册docker仓库账号
地址: Docker Hub
本地提交容器为镜像
1
| docker commit -m "描述日志" -a "作者" 容器ID 新镜像名
|
- 登录docker hub
- 推送到远程仓库
- 别人使用