docker概念了解
docker镜像、容器、仓库的基本概念
- 镜像
- Docker 镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的 CentOS 操作系统环境,里面仅安装了 httpd或用户需要的其它应用程序。 - 镜像可以用来创建 Docker 容器。
- Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
- 镜像的基本信息:
- 来自于哪个仓库, 比如 ubuntu
- 镜像的标记, 比如 14.04
- 它的 ID 号(唯一)
- 创建时间
- 镜像大小
- 容器
- Docker 利用容器来运行应用。
- 容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
- 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
- 注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
- 仓库
- 仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
- 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
- 最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 其作为默认docker仓库,但在国内下载速度很慢。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
- 注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
docker基本使用
基本命令列表
- 容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
- 容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
- 容器rootfs命令 — docker [commit|cp|diff]
- 镜像仓库 — docker [login|pull|push|search]
- 本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
- 其他命令 — docker [info|version]
使用举例
- 进入容器内:docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh
- 删除所有镜像:docker rmi $(docker images -q)
使用xshell的ssh连接
- 查看虚拟机IP:ifconfig.
- 在xshell里面使用ssh连接: docker/tcuser
- 进入虚拟机后,可以使用 sudo -i (docker用户下执行) 进入root用户。
阿里云docker镜像
- 登录阿里云docker registry:
$ sudo docker login --username=username registry.cn-shenzhen.aliyuncs.com
登录registry的用户名是您的阿里云账号全名,密码是您开通namespace时设置的密码。
- 从registry中拉取镜像:
$ sudo docker pull registry.cn-shenzhen.aliyuncs.com/honkon/configserver:[镜像版本号]
- 将镜像推送到registry:
$ sudo docker login --username=username registry.cn-shenzhen.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/honkon/configserver:[镜像版本号]
$ sudo docker push registry.cn-shenzhen.aliyuncs.com/honkon/configserver:[镜像版本号]
其中[ImageId],[镜像版本号]请你根据自己的镜像信息进行填写。
利用 Dockerfile 来创建镜像
Dockerfile 基本的语法是
使用 # 来注释
FROM 指令告诉 Docker 使用哪个镜像作为基础
接着是维护者的信息RUN 开头的指令会在创建中运行, 比如安装一个软件包, 在这里使用 apt-get 来安装了一些软件
编写完成 Dockerfile 后可以使用 docker build 来生成镜像
sudo docker build -t="ouruser/sinatra:v2" .
Dockerfile 中每一条指令都创建镜像的一层, 例如:
# This is a comment
FROM ubuntu:14.04
MAINTAINER Docker Newbee <newbee@docker.com>
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra
还可以利用 ADD 命令复制本地文件到镜像;用 EXPOSE 命令来向外部开放端口;用 CMD 命令来描述容器启动后运行的程序等。
docker compose管理多个容器和服务
- 安装docker-compose:curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 编写docker-compose.yml文件:docker-compose_filems.yml
nginx:
image: nginx:1.12.0【官方镜像】
volumes:
- /hq/filems/filedir:/filedir
ports:
- "9116:80"
storeFileMS:
image: registry.cn-beijing.aliyuncs.com/zenmind/storefilems【指定镜像地址】
ports:【端口映射 宿主port:容器port】
- "9115:9115"
volumes:【数据卷映射 宿主路径:容器路径】
- /hq/filems/filedir:/filedir
environment:【环境变量】
- env.eureka.address=http://192.168.190.215:9111/eureka/
- env.prd.active=true
- env.profiles.active=prd
- 运行:docker-compose up
- 查看容器运行状态:docker-compose ps
- 其他命令:
- 重启所有容器:docker-compose restart
- 重启App1:docker-compose restart App1
- 停止所有容器:docker-compose stop
- 停止App1:docker-compose stop App1
docker使用阿里云Docker镜像库加速
- ubuntu:
- curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
- 配置Docker加速器
您可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。
echo "DOCKER_OPTS=\"--registry-mirror=https://8l2t43bu.mirror.aliyuncs.com\"" | sudo tee -a /etc/default/docker
sudo service docker restart
- centos:
- curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
- 配置Docker加速器,您可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。
系统要求 CentOS 7 以上,Docker 1.9 以上。
sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=https://8l2t43bu.mirror.aliyuncs.com|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo service docker restart
- windows:
- 安装或升级Docker
- 推荐您安装Docker Toolbox。
Toolbox的介绍和帮助 和
Windows系统的安装文件目录 - 快速开始
# 创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default
docker-machine create -d virtualbox default
# 查看机器的环境配置,并配置到本地。然后通过Docker客户端访问Docker服务。
docker-machine env default
eval "$(docker-machine env default)"
docker info
配置Docker加速器
您可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。
docker-machine ssh default "echo 'EXTRA_ARGS=\"--registry-mirror=https://8l2t43bu.mirror.aliyuncs.com\"' | sudo tee -a /var/lib/boot2docker/profile"
docker-machine restart default
- macos:
- 安装或升级Docker
- 推荐您安装Docker Toolbox。
Toolbox的介绍和帮助 和
Windows系统的安装文件目录 - 快速开始
# 创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default
docker-machine create -d virtualbox default
# 查看机器的环境配置,并配置到本地。然后通过Docker客户端访问Docker服务。
docker-machine env default
eval "$(docker-machine env default)"
docker info
配置Docker加速器
您可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。
docker-machine ssh default "echo 'EXTRA_ARGS=\"--registry-mirror=https://8l2t43bu.mirror.aliyuncs.com\"' | sudo tee -a /var/lib/boot2docker/profile"
docker-machine restart default