Docker简介,安装及常用命令

1.Docker简介

1.1 Docker理念

        Docker是为了解决运行环境和配置问题的软件容器技术,为了方便持续集成并有助于整体发布的容器内核级虚拟化技术。每个Docker镜像只使用本地操作系统的部分资源,可以最大程度地复用物理资源。Docker本身就是管理镜像的引擎,可以创建本地镜像,拉取远程镜像,启动镜像实例。

1.2 Docker基本组成

镜像(image)=======》JAVA Class-------------只读模板
容器(container)====》JAVA Object------------实例
仓库(repository)===》JAVA MVN_REPO------本地(私人),私服,官方(dockerHub,aliyun)
箭头后的是类比JAVA中的角色,可以更好的帮助理解docker。

1.3 Docker架构

1.Docker是一个C/S模式的架构,后端是一个松耦合的架构
2.Docker Daemon 作为架构主体部分,首先提供Dcoker Server的功能,使其可以接收Docker Client的请求
3.Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式存在。
4.Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph形式存储
5.当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境
6.当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver完成
7.Libcontainer是一项独立容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现对容器的操作

2.Docker 安装

本文为在CentOS7上安装Docker,安装方式采用yum安装,官方文档地址:Install Docker Engine on CentOS | Docker Docs

1.移除旧版本的docker

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

2.在yum中添加docker的仓库地址

yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

下载yum-utils工具,并通过该工具添加docker的repo地址,这里添加的是国内阿里云镜像地址,官网的地址为 https://download.docker.com/linux/centos/docker-ce.repo ,会比较慢,推荐使用阿里云的镜像地址

3.安装Docker引擎

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

等待安装完毕后,官方文档说可能会提示需要接受GPG key,如果是 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 就接受一下,但目前来说,我安装Docker还从来没有遇到过这种情况。在安装Docker的同时还会创建一个docker用户组,但其中默认是没有用户的。

4.启动Docker并确认Docker引擎已经成功安装

systemctl start docker
docker run hello-world
[root@docker ~]# systemctl start docker
[root@docker ~]# ps -ef|grep docker
root       8940      1  0 16:11 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root       9149   7164  0 16:12 pts/0    00:00:00 grep --color=auto docker
[root@docker ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

如果出现以上内容说明Docker引擎已经成功安装

5.卸载docker命令

systemctl stop docker
yum remove -y docker*
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

了解一下如何卸载,可以测试一下

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

        在运行hello-world时我们可以发现下载速度比较慢,则会使因为docker默认会使用dockerhub的仓库去拉取镜像,但由于是国外网站,国内使用会被限速,因此推荐配置一下阿里云镜像加速器。
        阿里云允许用户申请个人的镜像加速器,具体步骤为申请阿里云账号==》登录阿里云==》进入容器镜像服务ACR==》申请镜像加速器==》将个人的镜像加速器id配置到linux上。

mkdir -p /etc/docker
#创建docker配置目录
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://pwvyfw2v.mirror.aliyuncs.com"]
}
#创建daemon.json的配置文件,并添加加速器地址
systemctl daemon-reload
#重载配置
systemctl restart docker
#重启docker

3.Docker常用命令

3.1 帮助启动类命令
#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#重启docker
systemctl restart docker
#查看docker状态
systemctl status docker
#开启开机自启动
systemctl enable docker
#禁用自启动
systemctl disable docker
#查看docker概要信息
docker info
#查看docker总体帮助文档
docker --help
#查看docker命令帮助文档
docker [具体的命令] --help
3.2 镜像命令
#列出本地主机上的镜像
docker images
#REPOSITORY——镜像仓库源,TAG——镜像版本号,IMAGE ID——镜像ID,CREATED——镜像创建时间,SIZE——镜像大小
#-a 列出本地所有镜像(包含历史)
#-q 只显示镜像ID

#搜索镜像
docker search *imageName
#NAME——镜像名,DESCRIPTION——镜像说明,STARS——点赞数,OFFICIAL——是否官方,AUTOMATED——是否自动构建
#--limit n 只列出前n个镜像,默认为25个

#拉取镜像
docker pull *imageName[:TAG]
#默认拉取最新版,加上TAG后拉取指定版本

#查看镜像/容器/数据卷所占空间
docker system df
#TYPE——Images(镜像)、Containers(容器)、Local Volumes(本地占用)、Build Cache(构建缓存),TOTAL——总数,ACTIVE——活动数,SIZE——大小,RECLAIMABLE——可回收大小

#删除镜像
docker rmi ImageId(ImageName)[:TAG] [...]
#删除镜像时可能会提示已被容器使用,可以使用-f参数强制删除,也可以将容器删除后再删除镜像,空格隔开多个镜像可以一次删除多个镜像
3.3 容器命令
#新建+启动容器
docker run [OPTIONS] IMAGE [COMMAND][ARG...]
    #OPTIONS说明
    --name="容器新名"	#为容器指定一个新名称,默认与仓库名相同
    -d	#后台运行容器并返回容器ID(启动守护式容器)
    -i	#以交互模式运行容器,通常与 -t 同时使用
    -t	#为容器重新分配一个伪输入终端,通常与 -i 同时使用
    -P	#随机端口映射
    -p	#指定端口映射
    
#列出当前正在运行的容器
docker ps [OPTIONS]
	#OPTIONS说明
	-a	#列出所有容器(包括历史)
	-l	#显示最近创建的容器
	-n	#显示最近n个创建的容器
	-q	#只显示容器编号
	
#退出容器,这里指进入正在运行的容器并且以命令行交互,即使用了 -it 参数
#退出并使容器停止(命令)
exit
#退出但容器不停止(按键)
Ctrl+p+q

#启动已停止运行的容器
docker start containerName(containerId)
#重启容器
docker restart containerName(containerId)
#停止容器
docker stop containerName(containerId)
#强制停止容器
docker kill containerName(containerId)
#删除已停止的容器
docker rm containerId
#查看容器日志
docker logs containerId
#查看容器内运行的进程
docker top containerId
#查看容器内部细节
docker inspect containerId
#进入正在运行的容器并以命令行交互(这种方式exit不会导致容器停止)
docker exec -it containerId /bin/bash
#进入容器启动命令的终端
docker attach containerId
#将容器内的文件cp到主机上
docker cp containerId:Cpath localPath
#导出和导入容器
docker export containerId > localPath/fileName.tar.gz
cat fileNmae.tar.gz | docker import - imageUser/imageName:TAG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值