docker学习
Posted F3nGaoXS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker学习相关的知识,希望对你有一定的参考价值。
docker学习
1、安装docker
https://www.runoob.com/docker/macos-docker-install.html
选择匹配自己操作系统的版本进行安装,如果比较慢的话可以使用阿里的开源镜像站下载:
http://mirrors.aliyun.com/docker-toolbox/
2、配置docker镜像源加速
由于docker下载镜像默认是从dockerhub上下载,会比较慢,所以建议配置国内的镜像源,具体配置方法参看:
https://www.runoob.com/docker/docker-mirror-acceleration.html
3、docker的基本概念
Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
4、docker容器(container)
运行容器(run)
docker run
参数
- -t:在新容器内指定一个伪终端或终端。
- -i:允许你对容器内的标准输入 (STDIN) 进行交互。
- -d:以后台模式启动容器
- -p:容器内部端口绑定到指定的主机端口。
- -P:容器内部端口随机映射到主机的高端口。
- –name:命名容器
列出容器(ps)
docker ps
(默认)查看正在运行的容器
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
- created(已创建)
- restarting(重启中)
- running 或 Up(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\\udp)。
NAMES: 自动分配的容器名称。
参数
- -a:查看所有容器
- -l:查询最后一次创建的容器
查看容器内的标准输出(logs)
docker logs <CONTAINER ID> | <NAMES>
参数
- -f:像
tail -f
一样来进行标准输出(追加输出正在变化的文件)
停止容器(stop)
docker stop <CONTAINER ID> | <NAMES>
重启容器(restart)
docker restart <CONTAINER ID> | <NAMES>
启动停止的容器(start)
docker start <CONTAINER ID> | <NAMES>
进入后台运行的容器(exec)
docker exec <CONTAINER ID> | <NAMES>
根据容器编号或者容器名称来进入一个后台运行的容器
如:
% docker exec -it 5262dfdbd369 /bin/bash
导出容器为镜像(export)
docker export <CONTAINER ID> > <filename>
将本地的某个容器导出为镜像
如:到当前位置下的docker目录中,名称为ubuntu.tar
% docker export 5262dfdbd369 > ./docker/ubuntu.tar
导入镜像(import)
docker import
将远程或者本地的某个容器导入为镜像
如:将当前位置下的docker目录中的ubuntu.tar导为镜像test/ubuntu:v1
% ./docker/ubuntu.tar | docker import - test/ubuntu:v1
如:从远程导入某个容器
% docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器(rm)
(容器必须是停止状态)
docker rm <CONTAINER ID> | <NAMES>
如:
% docker rm -f 5262dfdbd369
查看容器映射的端口号(port)
docker port <CONTAINER ID> | <NAMES>
查看容器内部运行的进程(top)
docker top <CONTAINER ID> | <NAMES>
查看容器的配置以及状态信息(inspect)
会返回一个JSON格式的文件
docker inspect <CONTAINER ID> | <NAMES>
5、docker镜像(image)
列出镜像(images)
docker images
列出本机上的所有镜像
- **REPOSITORY:**表示镜像的仓库源
- **TAG:**镜像的标签(代表该镜像的不同版本)
- **IMAGE ID:**镜像ID
- **CREATED:**镜像创建时间
- **SIZE:**镜像大小
如:ubuntu:15.10
即指定ubuntu的15.10版本。
如:training/webapp
不指定版本,则是会默认使用latest(最近)的版本。
拉取镜像(pull)
会从dockerhub中拉取镜像
docker pull
如:下载mysql的镜像
查看镜像(search)
可以从dockerhub来搜索镜像,或者使用search来根据关键字搜索镜像
docker search
如:搜索关键字httpd
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
删除镜像(rmi)
(需要先移除使用到该镜像的容器)
docker rmi <REPOSITORY> | <IMAGE ID>
利用commit创建镜像(commit)
参数
- -m: 提交的描述信息
- -a: 指定镜像作者
- **0824479d7fcd:**容器 ID
- test/ubuntu:v1: 指定要创建的目标镜像名
在对旧的镜像进行修改后可以提交为新的镜像
-
运行镜像为容器
% docker run -it ubuntu:15.10 /bin/bash
-
在容器中升级
apt-get update
-
退出容器
exit
-
将修改后的容器提交为新的镜像
% docker commit -m="ubuntu update" -a="test" 0824479d7fcd test/ubuntu:v1
利用dockerfile创建镜像(build)
docker build <dockerfilename>
参数说明:
- -t :指定要创建的目标镜像名
- :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
如:
docker build -t wqk/centos:6.7 ./dockerfile_test
利用当前目录下的dockerfile_test dockerfile文件创建一个wqk/centos:6.7镜像
设置镜像标签(tag)
docker tag CONTAINER_ID AUTH_NAME/REPOSITORY_NAME:TAG
如:
docker tag 860c279d2fec runoob/centos:dev
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
6、docker-compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
以上是关于docker学习的主要内容,如果未能解决你的问题,请参考以下文章
Docker学习笔记(6-1)Docker镜像与Docker仓库