Docker容器学习笔记
1.概念
1.1镜像:image
镜像是一个只读的模版,镜像是可以用来制作Docker容器,一个镜像可以制作多个容器。镜像可以比作Java的类,一个类可以有多个实例对象
1.2容器:
容器是镜像创建的运行实例,比作为Java类的实例对象。可以把容器看做是一个简易版的Linux环境,只包括root权限,进程空间,用户和网络空间。
1.3仓库
仓库是集中存放镜像文件的场所,每个不同的镜像都有不同的tag标签
2.Docker安装步骤
2.1.CentOS 7Linux系统安装 Docker
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
1)通过 uname -r 命令查看你当前的内核版本
2.2.安装之前需要删除旧版本的docker
$ sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
2.3.安装一些必要的系统工具
1)sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2)sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.4安装Docker
sudo yum -y install docker-ce
2.5.启动 Docker 后台服务
sudo systemctl start docker
2.6.测试运行 hello-world
docker run hello-world
2.7查看docker安装镜像
docker images
2.8.docker默认安装目录
/var/lib/docker
3.Docker 镜像加速器阿里云镜像仓库配置
阿里云地址
1.Ubuntu配置
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://0engwp1a.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.Mac配置
1. 安装/升级Docker客户端
对于10.10.3以下的用户 推荐使用Docker Toolbox
Mac安装文件:http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/
对于10.10.3以上的用户 推荐使用Docker for Mac
Mac安装文件:http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/
2. 配置镜像加速器
针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:
创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。
docker-machine create --engine-registry-mirror=https://0engwp1a.mirror.aliyuncs.com -d virtualbox default
查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。
docker-machine env default
eval "$(docker-machine env default)"
docker info
针对安装了Docker for Mac的用户,您可以参考以下配置步骤:
在任务栏点击 Docker Desktop 应用图标 -> Perferences,在左侧导航菜单选择 Docker Engine,在右侧输入栏编辑 json 文件。将
https://0engwp1a.mirror.aliyuncs.com加到"registry-mirrors"的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。
3.CentOS
1. 安装/升级Docker客户端
推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
2. 配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://wpjk4gpx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
4.Docker工作原理
Docker 大鲸鱼运行在宿主机上,镜像在Docker环境中,容器实例来自镜像模版中。
5.Docker使用命令
5.1.帮助命令
docker info:查看基础信息
docker help:查看docker所以可以使用的命令说明
docker version:查看docker版本信息
5.2.镜像命令
docker images:列出查看本地所以镜像模版
-a:查询所以本地镜像且包含中间层(如docker images -a)
-q:查询所以镜像ID
docker search xxx:查看远程仓库对应镜像的版本信息
-s:如docker search -s 100 nginx 查询starts>=100的nginx镜像模版
docker pull xxx:[tag]:远程仓库拉取xxx标签为tag镜像模版,tag可以省略,表示拉去最新版本的镜像,如docker pull nginx
docker rmi -f xxx:删除xxx镜像模版, -f为强制删除,可以省略,
删除多个镜像模版:如docker rmi -f nginx tomcat
全部删除镜像模版:如docker rmi -f $(docker images -qa) 使用组合命令进行全部删除
5.3.容器命令
docker run xxx:启动指定的镜像,如本地docker有该进行则进行运行,没有则进行远程拉取
-t:启动交互式容器
-i:使用伪终端的方式
-d:启动守护容器,如docker run -d -p 8888:8080 tomcat
-p:端口:如 docker run -it -p 8888(向外暴露的端口):8080(tomcat服务端口) tomcat
--name:容器别名
如:docker run -it --name nginx001(容器别名) nginx(运行的镜像名称)
exit:退出容器
docker ps:查看docker当前运行容器信息
-l:显示上一个容器运行的信息,如docker ps -l
-a:显示docker全部容器运行的信息,如dcoker ps -a
-n 3:显示docker上3个运行的容器信息,如docker ps -n 3
-q:只显示容器编号,如docker ps -q 显示当前运行容器编号或者docker ps -lq显示上一个运行的容器编号
docker start xxx(容器编码/名称):启动容器
docker restart xxx(容器编码/名称):重启容器
docker stop xxx(容器编码/名称):停止容器
docker kill xxx(容器编码/名称):强制停止容器
docker rm xxx(容器编码/名称):删除已停止的容器
-f:强制删除容器, 删除全部容器:docker rm -f ${docker ps -qa}
docker logs -f -t --tail 容器ID:查看docker日志, -t是时间,-f是最新日志da打印 --tail 显示最后多少条数据,如docker logs -f -t --tail 3 容器ID 查看最后三行日志
docker inspect 容器ID:查看容器内部所以细节内容
docker attach 容器ID:重新进入指定的开启容器终端
docker exec: 容器正在运行以交互的方式进入容器 docker exec -it zookeeper_zoo1_1 /bin/bash
docker cp 容器ID: 容器copy路径 copy到宿主机的路径:如docker cp xxx: /usr/xxx /usr/local
6.Docker 镜像原理
6.1镜像是什么?
镜像是一种轻量级可执行独立的软件包,里面包含代码,配置文件,环境变量,以及代码运行的环境等。镜像是一层套一层的嵌套。
docker commit 作用提交容器副本使之成为一个新的镜像
docker commit -m="提交的描述" -a"作者" 容器ID 创建目标镜像名称:[标签]
7.docker上传阿里镜像远程仓库
1. 登录阿里云Docker Registry
$ sudo docker login --username=18086456705 registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/xll_2020/xll_2020_demo_j:[镜像版本号]
3. 将镜像推送到Registry
$ sudo docker login --username=18086456705 registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xll_2020/xll_2020_demo_j:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/xll_2020/xll_2020_demo_j:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用"docker images"命令找到镜像,将该镜像名称中的域名部分变更为Registry专有网络地址。
$ sudo docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816