Docker
1.镜像:类似虚拟机的镜像、用俗话说就是安装文件。
2.容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见的。
3.仓库:类似代码仓库,是Docker集中存放镜像文件的场所。
Docker 支持以下的 64 位 CentOS 版本
- CentOS 7
- CentOS 8
- 更高版本...
Docker
是一个开源的应用容器引擎,基于 Go
语言 并遵从 Apache2.0
协议开源。Docker
可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux
机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone
的 app
),更重要的是容器性能开销极低。
一、安装
官方一键脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
国内daocloud一键命令
curl -sSL https://get.daocloud.io/docker | sh
手动安装
1.把yum包更新到最新
sudo yum update
2.安装需要的软件包, yum-util
提供yum-config-manager
功能,另外两个是devicemapper
驱动依赖的。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4.查看仓库中docker
版本
yum list docker-ce --showduplicates | sort -r
5.安装docker
sudo yum install docker-ce
操作命令
$ sudo systemctl start docker #启动
$ sudo systemctl enable docker #开机启动
$ sudo systemctl stop docker #停止
$ docker version #查看版本
$ systemctl status docker.service #查看状态
卸载Docker
1.查询安装过的包
yum list installed | grep docker
2.如本机安装过旧版本
docker.x86_64,docker-client.x86_64,docker-common.x86_64
3.删除安装的软件包
yum -y remove docker.x86_64
yum -y remove docker-client.x86_64
yum -y remove docker-common.x86_64
4.较旧的Docker
版本称为 docker
或 docker-engine
如果已安装这些程序,请卸载它们以及相关的依赖项。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
GUI管理
推荐使用Portainer
作为容器的GUI
管理方案。官方地址:https://portainer.io/install.html
安装命令如下,安装完成后访问你的 IP:9000
即可进入容器管理页面。
$ docker volume create portainer_data
$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
二、镜像加速
有些镜像在国内拉取速度极其慢,慢到令人发指的程度。创建或修改 /etc/docker/daemon.json
文件,修改为如下形式
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
其他加速地址
1.Docker中国区官方镜像
https://registry.docker-cn.com
2.网易
http://hub-mirror.c.163.com
3.ustc
https://docker.mirrors.ustc.edu.cn
4.中国科技大学
https://docker.mirrors.ustc.edu.cn
其他加速方法
阿里云容器 生成自己的加速地址
登录:https://cr.console.aliyun.com “创建我的容器镜像”,得到专属加速地址
加载重启docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
查看是否成功
$ docker info
三、操作命令
1.创建容器
docker create -it boke-oraclexe:1.0
# 创建临时容器,退出后不再存在,常用于排错
docker run -it --rm boke-mysql5.5:1.1 bash
2.查看容器
docker ps -a
docker ps -a -q # 查看哪些是停止状态的容器
3.启动容器
docker start 容器ID
4.创建启动容器
docker run
实例
1.使用docker
镜像nginx:latest
以后台模式启动一个容器,并将容器命名为mynginx
docker run --name mynginx -d nginx:latest
2.使用镜像nginx:latest
,以后台模式启动一个容器,将容器的 80
端口映射到主机的 80
端口,主机的目录 /data
映射到容器的 /data
docker run -p 80:80 -v /data:/data -d nginx:latest
3.绑定容器的 8080
端口,并将其映射到本地主机 127.0.0.1
的 80
端口上。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
当使用docker run
命令创建启动容器时,Docker
在后台运行的标准操作有下面几个步骤
- 检测本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
- 从地址池配置一个IP地址给容器
- 执行用户指定的应用程序
- 执行完毕后终止容器
5.停止容器
# 运行中的容器status 为 up
# 停止中的容器status 为exit
docker stop 容器ID
6.进入容器
几种方式 1.docker attach 命令、2.docker exec 命令、3.nsenter工具,这里就说两种
attach
命令
docker attach 容器ID
docker attach
是一个Docker
自带的命令,下面来说说attach
命令的使用方法:其实使用docker attach
命令有时候很不方便,当多个窗口同时attach
到同一个容器的时候,所有窗口都会同步显示,当某个窗口因命令阻塞的时候,其他窗口也无法执行操作了。
exec
命令
docker exec -ti 容器ID /bin/bash
在Docker1.3
版本开始,提供了一个更方便的命令exec
。可以直接在容器内运行命令
7.删除容器
删除容器我们可以使用docker rm
命令,被删除的容器需要是终止状态的
命令用法:docker rm [OPTIONS] CONTAINER [CONTINER...]
支持的参数有-f -l -v
- -f --force=false:强项终止并删除一个运行中的容器。
- -l --link=false:删除容器的连接,但保留容器。
- -v --volumes=false:删除容器挂载的数据卷。
实例
1.强制删除容器 db01、db02
docker rm -f db01 db02
2.移除容器 nginx01
对容器db01
的连接,连接名 db
docker rm -l db
3.删除容器 nginx01
, 并删除容器挂载的数据卷
docker rm -v nginx01
4.删除所有已经停止的容器
docker rm $(docker ps -a -q)
8.容器迁移
导出 docker export 容器ID
导入docker import 容器ID
9.从容器里面拷文件到宿主机或从宿主机拷文件到容器
在宿主机里面执行命令:(docker cp 容器名)要拷贝的文件在容器里面的路径要拷贝到宿主机的相应路径
示例: 假设容器名为testtomcat
,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js
, 现在要将test.js
从容器里面拷到宿主机的/opt
路径下
示例:docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
docker cp
要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
示例:假设容器名为testtomcat,
现在要将宿主机/opt/test.js
文件拷贝到容器里面的/usr/local/tomcat/webapps/test/js
路径下
示例:docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
10.镜像管理
1.列出本机已有的镜像
$ docker images
红色标注的字段释义
- REPOSITORY: 来自于哪个仓库;
- TAG: 镜像的标签信息,比如
5.7、latest
表示不同的版本信息; - IMAGE ID: 镜像的
ID
, 如果您看到两个ID
完全相同,那么实际上,它们指向的是同一个镜像,只是标签名称不同罢了; - CREATED: 镜像最后的更新时间;
- SIZE: 镜像的大小
2.删除镜像
docker rmi #镜像ID
docker rmi -f #镜像ID,强制删除,不管有没有容器在使用