初步了解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内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备提供了一个高度模块化的内核架构

docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址


2、设置阿里云镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

docker查看安装的容器地址 查看docker所有容器_docker_02


3、安装Docker-CE,并启动Docker服务

yum install -y docker-ce
systemctl start docker.service
systemctl enable docker.service

docker查看安装的容器地址 查看docker所有容器_docker_03


docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_04


4、镜像加速

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://485tahz4.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_05


5、网络优化

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p
service network restart
systemctl restart docker

docker查看安装的容器地址 查看docker所有容器_docker_06

五、Docker基础操作

docker version    #docker版本信息

docker查看安装的容器地址 查看docker所有容器_Docker_07

(一)、镜像的操作

docker search nginx    #查看指定镜像

docker查看安装的容器地址 查看docker所有容器_nginx_08

docker pull nginx    #下载镜像

docker查看安装的容器地址 查看docker所有容器_nginx_09

查看镜像

docker images 仓库名[:标签]
docker inspect 镜像ID

docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_10


添加新标签

docker tag 名称[:标签] 新名称[:新标签]

docker查看安装的容器地址 查看docker所有容器_Docker_11

删除镜像

docker rmi 仓库名[:标签]
或
docker rmi 镜像ID号    #当同一ID存在多个标签时无法使用此方法

docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_12

导出镜像

cd /opt
docker save -o nginx nginx:latest
ls -lh nginx

docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_13

导入镜像

docker load < nginx
或
docker --input nginx

docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_14

上传镜像

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查看安装的容器地址 查看docker所有容器_Docker_15

启动容器

docker start 容器ID
#查看状态为up

docker查看安装的容器地址 查看docker所有容器_nginx_16


启动执行命令查看系统根目录

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查看安装的容器地址 查看docker所有容器_docker_17


docker查看安装的容器地址 查看docker所有容器_nginx_18

docker run -d paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done"
#持续在后台执行

docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_19

终止运行

docker stop 容器ID

docker查看安装的容器地址 查看docker所有容器_Docker_20


进入容器

docker ps -a
docker start 容器ID(一定要是运行状态)
docker exec -it 容器ID /bin/bash
exit    #退出容器

docker查看安装的容器地址 查看docker所有容器_nginx_21


容器导出

docker export 容器ID > nginx_c

docker查看安装的容器地址 查看docker所有容器_Docker_22


容器导入(会生成镜像,而不会创建容器)

cat nginx_c | docker import - nginx:web

docker查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_23


删除容器

docker rm 容器ID

批量删除容器

docker ps -a | awk '{print "docker rm "$1}' | bash

docker查看安装的容器地址 查看docker所有容器_Docker_24

(三)、仓库的操作

创建私有仓库

docker pull registry

docker查看安装的容器地址 查看docker所有容器_nginx_25

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查看安装的容器地址 查看docker所有容器_nginx_26


私有仓库的镜像上传及下载

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查看安装的容器地址 查看docker所有容器_docker_27

(四)、数据卷

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查看安装的容器地址 查看docker所有容器_docker_28

(五)、数据卷容器

#数据卷容器
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查看安装的容器地址 查看docker所有容器_docker查看安装的容器地址_29

(六)、端口映射

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

docker查看安装的容器地址 查看docker所有容器_docker_30