初步了解Docker容器
- 一、认识Docker
- (一)、什么是Docker
- (二)、Docker与虚拟机的区别
- (三)、Docker的使用场景
- 二、Docker核心概念
- 三、CentOS安装Docker的两种方式
- 四、安装Docker
- 五、Docker基础操作
- (一)、镜像的操作
- (二)、容器的操作
- (三)、仓库的操作
- (四)、数据卷
- (五)、数据卷容器
- (六)、端口映射
- (七)、容器互联
一、认识Docker
(一)、什么是Docker
- Docker是一种轻量级的“虚拟机”
- 在Linux容器里运行应用的开源工具
(二)、Docker与虚拟机的区别
对比项目 | 虚拟机 | Docker |
启动时间 | 缓慢 | 快速 |
系统 | 逻辑隔离 | 共享内核 |
容量 | 大 | 小 |
安全 | 强 | 弱 |
(三)、Docker的使用场景
- 打包应用程序简化部署
- 可脱离底层硬件任意迁移
二、Docker核心概念
- 镜像
- 一个面向Docker容器引擎的只读版本
- 容器
- 从镜像创建的运行实例
- 仓库
- 集中保存镜像的地方
三、CentOS安装Docker的两种方式
- 使用CURL获得Docker的安装脚本进行安装
- 使用YUM仓库进行安装
四、安装Docker
1、安装最新版本Docker依赖环境(注意使用在线源)
systemctl stop firewalld.service
systemctl enable firewalld.service
setenforce 0
yum install -y yum-utils device-mapper-persistent-data lvm2
#yum-utils提供了yum-config-manager
#device mapper存储驱动程序需要device-mapper-persistent-data和lvm2
#Device Mapper是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备提供了一个高度模块化的内核架构
2、设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装Docker-CE,并启动Docker服务
yum install -y docker-ce
systemctl start docker.service
systemctl enable docker.service
4、镜像加速
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://485tahz4.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
5、网络优化
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker
五、Docker基础操作
docker version #docker版本信息
(一)、镜像的操作
docker search nginx #查看指定镜像
docker pull nginx #下载镜像
查看镜像
docker images 仓库名[:标签]
docker inspect 镜像ID
添加新标签
docker tag 名称[:标签] 新名称[:新标签]
删除镜像
docker rmi 仓库名[:标签]
或
docker rmi 镜像ID号 #当同一ID存在多个标签时无法使用此方法
导出镜像
cd /opt
docker save -o nginx nginx:latest
ls -lh nginx
导入镜像
docker load < nginx
或
docker --input nginx
上传镜像
docker tag nginx:latest abner/nginx:web #改标签
docker login #登录
username:
password:
email:
docker push abner/nginx:web
(二)、容器的操作
创建容器
docker create -it nginx:latest /bin/bash
#选项-i 让容器的标准输入保持打开
#选项-t 让Docker分配一个伪终端
查看容器运行状态
docker ps [选项]
#选项-a 列出所有容器,包括未运行的容器
启动容器
docker start 容器ID
#查看状态为up
启动执行命令查看系统根目录
docker pull paigeeworld/centos7
docker create -it paigeeworld/centos7 /bin/bash
docker start 容器ID
docker run paigeeworld/centos7 /usr/bin/bash -c ls #执行完成直接关闭状态是Exited
docker run -d paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done"
#持续在后台执行
终止运行
docker stop 容器ID
进入容器
docker ps -a
docker start 容器ID(一定要是运行状态)
docker exec -it 容器ID /bin/bash
exit #退出容器
容器导出
docker export 容器ID > nginx_c
容器导入(会生成镜像,而不会创建容器)
cat nginx_c | docker import - nginx:web
删除容器
docker rm 容器ID
批量删除容器
docker ps -a | awk '{print "docker rm "$1}' | bash
(三)、仓库的操作
创建私有仓库
docker pull registry
vim /etc/docker/daemon.json
{
"insecure-registries":["192.168.229.10:5000"],
"registry-mirrors": ["https://485tahz4.mirror.aliyuncs.com"]
}
systemctl restart docker.service
docker run -it registry
docker ps -a
私有仓库的镜像上传及下载
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
更改标记为192.168.229.10:5000/nginx
docker tag nginx:latest 192.168.229.10:5000/nginx
上传
docker push 192.168.229.10:5000/nginx
获取私有仓库列表
curl -XGET http://192.168.229.10:5000/v2/_catalog
显示
{"repositories":["nginx"]}
这样就标识上传镜像至私有仓库就成功了
测试私有仓库下载
docker pull 192.168.229.10:5000/nginx
(四)、数据卷
docker pull centos:7
宿主机目录/opt/test挂载容器种的/data1
docker run -v /opt/test:/data1 --name test1 -it centos:7 /bin/bash
cd /data1
touch test1
返回宿主机查看
ls /opt/test
这里的挂载目录如果不存在的话,会自动创建
(五)、数据卷容器
#数据卷容器
docker run --name web10 -v /data1 -v /data2 -it centos:7 /bin/bash
#新容器挂载数据卷容器web10
docker run -it --volumes-from web10 --name db1 centos:7 /bin/bash
(六)、端口映射
docker run -d -P httpd:
docker run -d -p 1234:80 httpd
-P:是随机指定端口
-p:是指定端口
(七)、容器互联
docker run -itd -P --name web11 centos:7 /bin/bash #创建并运行容器取名web11,端口号自动映射
docker run -itd -P --name web22 --link web11:web00 centos:7 /bin/bash
创建并运行容器取名web22,链接到web11和其通信进web22容器 ping web11
–link name:alias