docker的安装与部署

149 阅读3分钟

docker安装部署

实验环境

192.168.42.13;2-4核;4G以上内存

systemctl stop firewalld.service
setenforce 0

安装依赖包

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
#yum-utils:提供了 yum-config-manager 工具。
#device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
#device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

#设置阿里云镜像源
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker-ce社区版并设置为开机自动启动
[root@localhost ~]# yum install -y docker-ce

[root@localhost ~]# systemctl start docker.service
[root@localhost ~]# systemctl enable docker.service
#开启并且设置开机自启
[root@localhost ~]# docker version
#查看版本
[root@localhost ~]# docker info
#查看详细版本

image.png

image.png

image.png

image.png

docker镜像操作

搜索镜像

格式:docker search 关键字

[root@localhost ~]# docker search nginx
#搜索nginx的下载量

image.png

获取镜像

格式:docker pull 仓库名称

[root@localhost ~]# docker pull nginx
#获取nginx镜像
[root@localhost ~]# docker images
#显示镜像

image.png

镜像加速

首先需要登录阿里云,在搜索中搜索“容器镜像”。会有个“容器镜像服务”,点击开通;没有的话就在“活动与优惠”中查找;点击“镜像工具”,点下面的“镜像加速器”,会有加速器地址,下面还有配置镜像加速器的命令,复制命令。下面会有操作使用到。

image.png

#通过修改deamon配置文件/etc/docker/deamon.json来使用加速器
[root@localhost ~]# mkdir -p /etc/docker/
[root@localhost ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://hfgk9541.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://hfgk9541.mirror.aliyuncs.com"]
}

[root@localhost ~]# systemctl daemon-reload
#重新加载加速器
[root@localhost ~]# systemctl restart docker.service
#重启

docker相关的本地资源在/var/lib/docker目录里面
[root@localhost ~]# ls /var/lib/docker/

镜像是唯一的
#查看镜像文件信息
[root@localhost ~]# cat /var/lib/docker/image/overlay2/repositories.json
或者
[root@localhost ~]# docker images
#查看镜像是否在本地的镜像里面

image.png

image.png

根据镜像的唯一标识id号,获取镜像详细信息

格式:docker inspect 镜像id

[root@localhost ~]# docker inspect 3964ce7b8458

image.png

修改某个镜像里面标签

**格式:docker tag 仓库名称:旧标签 仓库名称:新标签 **

[root@localhost ~]# docker tag nginx:latest nginx:web
#将nginx镜像里面的latest修改为web
[root@localhost ~]# docker images
但是这样修改时两个,并不会删除之前那个
如果只需要一个,那么就删除之前那个

image.png

删除镜像

格式:docker rmi 仓库名称:标签

注意:如果某镜像被容器使用了,需要先删除整个镜像的所有容器,在去删除镜像

[root@localhost ~]# docker rmi nginx:latest
[root@localhost ~]# docker images

image.png

导入/导出镜像

**格式:docker save -o 存储文件名 存储的镜像 **

导出镜像
[root@localhost ~]# docker save -o nginx_01 nginx:web
#存出镜像命名为nginx存在当前目录下
[root@localhost ~]# scp nginx_01 root@192.168.42.14:/opt/
#将镜像远程复制到192.168.42.14机子上
导出镜像
[root@localhost ~]# docker load < nginx_01
#将nginx_01镜像导入nginx仓库中

image.png

image.png

image.png

容器操作

查询所有容器运行状态——docker ps -a

[root@localhost ~]# docker ps -a
#查看容器运行状态
解释:
CONTAINER ID:容器的id 
IMAGE:加载的镜像
COMMAND:运行的程序
CREATED:创建时间
STATUS:当前的状态
PORTS:端口映射
NAMES:名称

创建容器——docker create

格式:docker create [选项] 镜像

常用选项说明
-i让容器的标准输入保持打开
-t分配一个伪终端
-d在后台一直运行
[root@localhost ~]# docker create -it nginx:web /bin/bash
#将nginx:latest创建一个容器,和一个伪终端
[root@localhost ~]# docker ps -a

image.png

启动容器——docker start

格式:docker start 容器id/名称

[root@localhost ~]# docker start 7382ae45e800
#开启刚创建的容器
[root@localhost ~]# docker ps -a

image.png

运行容器(一次性执行)——docker run

[root@localhost ~]# docker pull httpd
#拉取httpd镜像
[root@localhost ~]# docker images
#查看镜像
[root@localhost ~]# docker create httpd:latest
#创建httpd:latest容器
[root@localhost ~]# docker ps -a
[root@localhost ~]# docker run -itd httpd:latest /bin/bash
#后台运行httpd:latest容器
[root@localhost ~]# docker ps -a

image.png

执行后退出

[root@localhost ~]# docker run httpd /usr/bin/bash -c ls -lh /
#使用运行httpd并执行ls -lh
/bin/bash/:是为了运行后面的命令

image.png

执行后不退出,你守护进程的方式持续性任务

[root@localhost ~]# docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"
#运行centos:7后,不退出,让他在后台持续运行
我这边没有下载镜像,如果要做,建议下载镜像,然后创建容器,在运行

image.png

进入容器——docker exec

进入容器的状态一定是up状态

一次性进去
[root@localhost ~]# docker run -itd centos:7 /bin/bash
#先进入容器
这边是使用run进入,可以使用**ctrl+d**退出,直接退出终端,容器也会停止运行
[root@localhost ~]# exit
#退出
永久性进入

退出之后,容器不会停止运行

[root@localhost ~]# docker exec -it dabbfbe0c57b /bin/bash
#永久进入
[root@localhost ~]# exit

容器的导出和导入——docker export

导出容器

格式:docker export 容器id/名称 > 文件名

[root@localhost ~]# docker export dabbfbe0c57b > centos7
导入容器

格式:cat 文件名 | docker import - 镜像名称:标签

方法1:
[root@localhost ~]# docker import centos7 centos_01
#导入后生产镜像,但是不会创建容器
方法2:
[root@localhost ~]# cat centos7 | docker import - centos_01

image.png

删除容器——docker rm -f

格式:docker rm [-f] 容器ID/名称

#不能删除运行状态的容器,只能-f强制删除,或者先停止在删除
[root@localhost ~]# docker rm dabbfbe0c57b

#基于名称匹配的方式删除
docker rm -f distracted_panini

#删除所有运行状态的容器
docker rm -f `docker ps -q`
 
#删除所有容器
docker rm -f `docker ps -aq`
 
#有选择性的批量删除 (正则匹配)
docker ps -a l awk ' {print "docker rm "$1}'l bash
 
#删除退出状态的容器
for i in `dockef ps -a l grep -i exit / awk '{print $1}' '; do docker rm -f $i;done

查看docker消耗的资源状态

docker stats

image.png