Docker(一):安装、命令、应用

Docker(一):安装、命令、应用

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

一、 Docker的组成

镜像(image):

Docker镜像就相当于是一个文件系统,通俗来说就是用来创建容器的

容器(Container):

Docker 利用容器 (Container) 独立运行的一个或一组应用,容器是用镜像创建的运行实例,它可以被启动、开始、停止、删除,每个容器都是相互隔离的、保证安全的平台,可以把容器看做是一个简易版的Linux系统

容器就相当于Java中的对象,镜像相当于Java中的类

仓库(Repository)

仓库是集中存放镜像文件的场所
仓库注册服务器 (Registry) 上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签
仓库分为公开仓库和私有仓库两种形式
最大的公开仓库是DockerHub存放了数量庞大的镜像供用户下载,国内的公开仓库包括阿里云等

二、 Docker的底层原理

Docker的工作原理

Docker是基于C/S结构的系统,Docker的守护进程运行在Linux服务器(宿主机)上,当我们在Liunx服务器上(Docker-Client)输入Docker相关命令就会被发送给Doker-Server

为什么Docker比VM(虚拟机)快

1、Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker将会在效率上有明显优势
2、当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核,因而避免引导、加载操作系统内核等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS(虚拟机中的操作系统),这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统,则省略了这个复杂的过程,因此新建一个Docker容器只需要几秒钟

三、 Docker的安装

1.需要Liunx版本为CentOS7.0以上

2.卸载旧版本(非必须项)

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.安装Docker所需要依赖

# 想安装Docker,需要先将依赖的环境全部下载下来,就像Maven依赖JDK一样
yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 

4.设置镜像仓库

# 默认下载Docker会去国外服务器下载,速度较慢,可以设置为阿里云镜像源,速度更快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.安装Docker

yum makecache fast
yum -y install docker-ce

6.启动Docker并测试

安装成功后,需要手动启动,设置为开机启动,并测试一下 Docker
#启动docker服务
systemctl start docker
#设置开机自动启动
systemctl enable docker
#测试
docker run hello-world

7.配置阿里云镜像加速器

mkdir -p /etc/docker
vim /etc/docker/daemon.json  # 添加下方配置
------------------------
{
  "registry-mirrors": ["https://v2ltjwbg.mirror.aliyuncs.com"]
}
------------------------

# 重启服务
systemctl daemon-reload
systemctl restart docker

四、 Docker的中央仓库

# 1.Docker官方的中央仓库:这个仓库是镜像最全的,但是下载速度较慢。
https://hub.docker.com/

# 2.国内的镜像网站:网易蜂巢,daoCloud等,下载速度快,但是镜像相对不全。
https://c.163yun.com/hub#/home 
http://hub.daocloud.io/ (推荐使用)

3.在公司内部会采用私服的方式拉取镜像(添加配置)
#需要创建 /etc/docker/daemon.json,并添加如下内容
{
	"registry-mirrors":["https://registry.docker-cn.com"],
	"insecure-registries":["ip:port"]
}
#重启两个服务
systemctl daemon-reload
systemctl restart docker

五、 Docker常用命令

5.1 Docker帮助命令

1. docker version     # 显示Docker的版本信息
2. docker info           # 显示Docker的系统信息(包含镜像与容器的数量)
3. docker 命令 --help  # 查看帮助(就是显示这个命令有什么可选项)

5.2 Docker镜像命令

1. docker images:显示本机上所有安装镜像

# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
docker.io/hello-world        latest              bf756fb1ae65        8 months ago        13.3 kB
daocloud.io/library/tomcat   8.5.15-jre8         b8dfe9ade316        3 years ago         334 MB
------------
# 可选项

# docker images -a   # 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
docker.io/hello-world        latest              bf756fb1ae65        8 months ago        13.3 kB
daocloud.io/library/tomcat   8.5.15-jre8         b8dfe9ade316        3 years ago         334 MB
-------------

# docker images -q   # 只显示镜像的id
bf756fb1ae65
b8dfe9ade316
--------------

# docker images -aq  # 列出全部镜像的id
470671670cac
bf756fb1ae65

2. docker search:搜索镜像

# docker search mysql(镜像名)
NAME                              DESCRIPTION                                     STARS
mysql                             MySQL is a widely used, open-source relation…   9553             
mariadb                           MariaDB is a community-developed fork of MyS…   3471 

# 可选项
docker search mysql -f=STARS=3000 # 列出镜像星数大于3000的镜像

3. docker pull:下载镜像

# docker pull mysql      # 下载最新版本的MySQL
# docker pull mysql:5.7  # 下载指定版本的MySQL

4. docker rmi:删除镜像

docker rmi -f 镜像id                      # 删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id  # 删除指定的镜像
docker rmi -f $(docker images -aq)       # 删除全部的镜像

5.3 Docker容器命令

1.运行容器

运行容器需要定制具体镜像,如果镜像不存在,会直接下载

#简单操作
docker run 镜像的标识|镜像的名称[:tag]
# docker run b8dfe9ade316
# docker run daocloud.io/library/tomcat:8.5.15-jre8

#常用的参数
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识|镜像名称[:tag]
# docker run -d -p 8081:8080 --name tomcat_a daocloud.io/library/tomcat:8.5.15-jre8
#-d 代表后台运行容器
#-p 宿主机端口:容器端口  ---> 为了映射当前Linux的端口和容器的端口
#--name 容器名称  ---> 指定容器的名称
#-it   #-it [容器id] /bin/bash   使用交互模式运行,进入容器查看内容
#-v  /etc/www:/var/www   指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹)

2.查看容器

docker ps [-qa]
#-a 查看全部的容器,包括没有运行
#-q 只查看容器的标识

3.启动&停止&删除容器

docker start 容器id      # 启动容器
docker restart 容器id    # 重启容器
docker stop 容器id       # 停止正在运行的容器
docker kill 容器id       # 强制停止

docker rm 容器id         #删除指定容器
docker rm $(docker ps -qa) #删除全部容器

4.进入容器的内部

docker exec -it 容器id bash  #可以进入容器的内部进行操作

5.退出容器

exit          # 容器直接退出
Ctrl + P + Q  # 容器不停止退出 

5.4 Docker其它命令

1.查看日志

docker logs -tf 容器id             # 查看实时日志  
docker logs -t --tail 数量 容器id  # 查看指定数量的日志  
docker logs -f 容器id              #-f:可以滚动查看日志的最后几行

2.查看容器中的进程信息

docker top 容器id

3.复制内容到容器

docker cp 文件名称 容器id:容器内部路径   #将宿主机的文件复制到容器内部的指定目录

4.修改容器名字

docker rename [原名字] [新名字]

六、 制作自己的镜像,并推送到阿里云

1.制作镜像

制作镜像有两种方式,通过docker commit ; 通过Dockerfile

这里我们使用docker commit

# 查看修改后的容器id
docker ps -a
CONTAINER ID        IMAGE                             COMMAND                  CREATED      **
0e923ca1a9a1        daocloud.io/library/mysql:8.0.2   "docker-entrypoint.s…"   14 hours ago **

# 我们得知container_id为0e923ca1a9a1
# 接下来commit
docker commit 0e9
sha256:a7fee4550cb50ec9271d9af499ef87763b17f401b1a3d95b753aa90aa9d16eb5

# 至此我们就获得了一个自己制作的镜像,镜像id为a7fe

2.接下来你需要有一个阿里云账号,https://cr.console.aliyun.com/


3.创建命名空间,同时也可以创建镜像仓库(可以不创建,推送的时候自动创建)

这里我创建的命名空间名称为skyy


4.推送镜像到阿里云Docker Registry

# 登录
docker login --username=skyyemperor registry.cn-shanghai.aliyuncs.com

# 重命名镜像
docker tag a7fe registry.cn-shanghai.aliyuncs.com/skyy/halo:1.0

# 推送镜像
docker push registry.cn-shanghai.aliyuncs.com/skyy/halo:1.0

# 也可以从Registry中拉取
# docker pull registry.cn-shanghai.aliyuncs.com/skyy/tomcat:[镜像版本号]

七、 Docker应用

安装tomcat

运行Tomcat容器,为部署ssm工程做准备

docker run -d -p 8080:8080 --name tomcat daocloud.io/library/tomcat:8.5.15-jre8
#或者已经下载了tomcat镜像
docker run -d -p 8080:8080 --name tomcat 镜像的标识

运行MySQL容器

docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:8.0.2
  • 31
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值