揭开docker的神秘面纱?Docker基础管理、Docker的常见命令以及如何搭建私有仓库?
一、Docker概述
1、Docker是什么?
●是一种轻量级的“虚拟机"
●在Linux容器里运行应用的开源工具
2、Docker与虚拟机的区别
3、Docker的使用场景
●打包应用程序简化部署
●可脱离底层硬件任意迁移
例:服务器从腾讯云迁移到阿里云
4、Docker引擎(Docker Engine)
- Docker Engine是具有以下主要组件的客户端-服务器应用程序:
- 服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
- REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。
- 命令行界面(CLI)客户端(docker命令)。
5、Docker的架构(Docker architecture)
-
Docker使用客户端-服务器架构。Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。
-
Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快
-
Docker Client:客户端
- Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker API。Docker客户端可以与多个守护程序通信。
-
Docker daemon:守护进程
- Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
-
Docker images:镜像
容器可以被打包成镜像 -
Docker container:容器
-
Docker registry:镜像仓库
- 存储镜像的地方,默认在公共的Docker Hub上查找,可以搞个人仓库。
- 存储镜像的地方,默认在公共的Docker Hub上查找,可以搞个人仓库。
二、Docker的核心概念及安装方式
1、Docker核心概念
镜像
- 一个面向Docker容器引擎的只读模板
容器 - 从镜像创建的运行实例
仓库 - 集中保存镜像的地方
2、CentoS安装Docker的两种方式
使用CURL获得Docker的安装脚本进行安装
使用YUM仓库来安装Docker
三、安装Docker(社区版)
1、安装依赖包
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
yum install -y docker-ce
systemctl stop firewalld.service
setenforce o
vim /etc/selinux/config
SELINUX=disabled
systemctl start docker.service
systemctl enable docker.service
4、镜像加速
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ygiebwn1.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
四、镜像的操作
1、查看docker版本信息
docker version
2、搜索镜像
docker search 关键字
3、获取镜像
docker pull 仓库名称[:标签]
EAUFS (联合文件系统)若干层下载
下载后存放在/var/lib/docker
/var/lib/docker/image/overlay/repositories.json //下载文件信息
4、查看镜像
dockers images 仓库名称【:标签】
docker inspect 镜像ID号
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 231d40e811cd 4 weeks ago 126MB
5、上传镜像
//改标签
docker tag nginx:latest abner/nginx:web//用户名/仓库名:镜像名
//登陆
docker login
Username: docker
password:
Email: xxx@xxx.com
//上传
docker push abner/nginx:web
五、容器的操作
1、容器创建
docker create -it nginx:latest /bin/bash
2、查看容器
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUs PORTS NAMES
6c9aabe7b1e5 nginx:latest "/bin/bash" About a minute ago Created adoring_dijkstra
docker ps -a 查看所有的容器信息
docker ps 只能查看正在运行的容器信息
3、启动容器
docker start 6c9aabe7b1e5
4、查看状态为up
docker ps -a
CONTAINER ID IMAGEC OMMAND CREATED STATUS PORTS NAMES
6c9aabe7b1e5 nginxlatest "/bin/bash” 2 minutes ago Up 36 seconds 80/tcp adoring_dijkstra
5、启动执行命令查看系统根目录
docker pull paigeeworld/centos7
docker create -it paigeeworld/centos7 /bin/bashdocker start 31c5e232b074
docker run paigeeworld/centos7 /usr/bin/bash -c ls
6、执行完成直接关闭状态
Exited
7、持续在后台执行
docker run -d paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done"
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUs PORTS NAMES
a029cbf81e0c paigeeworld/centos7 "/bin/bash -c 'while..” 19 seconds ago up 18 seconds boring_blackb
8、终止运行
docker stop a029cbf81e0c
9、容器进入
docker ps -a
/显示nginx容器状态
6c9aabe7b1e------5nginx:latest "/bin/bash” 18 minutes ago Exited (0) 5 seconds ago adoring_dijkstra
docker start 6c9aabe7b1e5(一定要是运行状态)
docker exec -it 6c9aabe7b1e5 /bin/bash
//退出容器 exit
10、容器导出
docker export 6c9aabe7b1e5 > nginx_c
11、容器导入(会生成镜像,而不会创建容器)
cat nginx_c | docker import - nginx:web
12、删除容器
docker rm 4d8dcf51a4ef
13、批量删除容器
docker ps -a | awk ‘{print “docker rm ”$1}’ | bash
六、私有仓库
1、下载仓库
docker pull registry
-------------------------以下是显示下载完成信息-----------------------------
Using default tag: latest
latest Pulling from library/registry
4064ffdc82fe: Pull complete
c12c92d1c5a2:Pull complete
4fbc9b6835cc: Pull complete
765973b0f65f: Pull complete
3968771a7c3a: Pull complete
Digest: sha256:51bb55f23ef7e25ac9b8313b139a8dd45baa832943c8ad8f7da2ddad6355b3c8
Status:Downloaded newer image for registry.latest
2、修改配置文件
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.221.10:5000"],//添加
"registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com]
}
systemctl restart docker.service
docker create -it registry /bin/bash
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATuS PORTS NAMES
6f7497fcc8c2 registry "/entrypoint.sh /b..” 59 seconds ago Created 20 seconds ago musing_turing
docker start 6f7497fcc8c2
3、宿主机的/data/registry自动创建挂载容器中的/tmp/registry
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
4、更改标记为192.168.221.10:5000/nginx
docker tag nginx:latest 192.168.221.10:5000/nginx
5、上传
docker push 192.168.221.10:5000/nginx
The push refers to repository [192.168.195.128:5000/nginx]
4fc1aa8003a3:Pushed
5fb987d2e54d:Pushed
831c5620387f:Pushed
latest: digest: sha256:189cce606b29fb2a33ebc2fcecfa8e33b0b99740da4737133cdbcee92f3aba0a size: 948
6、获取私有仓库列表
curl-XGET http://192.168.221.10:5000/v2/_catalog
7、显示上传成功
(""repositories":[""nginx"")
8、测试私有仓库下载
docker pull 192.168.221.10:5000/nginx
Using default tag: latest
latest: Pulling from nginx
000eee12ec04:Pull complete
eb22865337de:Pull complete
bee5d581ef8b: Pull complete
Digest: sha256:189cce606b29fb2a33ebc2fcecfa8e33b0b99740da4737133cdbcee92f3aba0aStatus: Downloaded newer image for 192.168.221.10:5000/nginx:latest
192.168.221.10:5000/nginx:latest
七、Docker 数据卷
docker pull centos
//宿主机目录/var/www挂载容器中的/data1
docker run -v /var/www:/data1 --name web1 -it centos /bin/bash
[root@202dd484fd62 /# cd /data1/
[root@202dd484fd62 data1]# touch test123
返回宿主机进行查看
[root@localhost ~]# ls /var/www/
八、数据卷容器
//数据卷容器
docker run --name web100 -v /data1 -v /data2 -it centos:7/bin/bash
//新容器挂载数据卷容器web100
docker run -it --volumes-from web100 --name db1 centos:7 /bin/bash
九、端口映射
docker run -d -P httpd:centos
docker run -d -p 49280:80 httpd:centos
docker ps -a
6d461287c25d httpdcentos "/run.sh” 7 seconds ago Up7 seconds 0.0.0.0:49280->80/tcp zen swanson
十、容器互联(使用centos镜像)
docker run -itd -P --name web11 centos:7 /bin/bash//创建并运行容器取名web1,端口号自动映射
docker run -itd -P --name web22 --link web11:web11 centos:7 /bin/bash
//创建并运行容器取名web2,链接到web1和其通信进web22容器 ping web1
//--link name:alias --link容器名:别名
小结
1、镜像 上传(push)/下载(pull)/打标签(tag)/删除(rmi)/导出(save)/导入(load)
2、容器 创建(create)/进入(exec)/运行(run)/删除(rm)/导出(export)/导入(import)
数据卷-v数据卷容器--volumes-from链接容器--link暴露端口随机-Р指定-p
3、仓库 下载registry镜像--->运行容器暴露端口5000---->修改daemon.json文件---->重启docker
打标签(IP:端口/名称)--->上传/下载