systemctl stop firewalld
setenforce 0
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-utils:是yum的工具包集合,提供了yum-config-manager 工具。
device mapper:是 linux 的内核用来将块设备映射到虚拟块设备的 framework,
它支持许多高级卷管理技术。docker 的 devicemapper 存储驱动程序利用此框架的自动精简配置
(thin provisioning) 和快照功能来管理 docker 镜像和容器。
device mapper存储驱动程序需要 device-mapper-persistent-data和 lvm2。
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker.service
systemctl enable docker.service
安装好的Docker系统有两个程序,Docker服务端和docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。
Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
docker version
docker info
以阿里云为例(腾讯云等其他几个主流厂商也是有提供免费的镜像加速的)。
选择对于的操作系统,直接复制粘贴即可。
docker images
-a 列出本地所有镜像
-q 只显示镜像id
文字选项说明:
格式:docker search 关键字
docker search nginx
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。
格式:docker pull 关键字
docker pull httpd
格式:docker rmi 镜像名/id
docker rmi httpd
docker rmi dabbfbe0c57b
-f 强制删除
镜像下载后存放在 /var/lib/docker
cat /var/lib/docker/image/overlay2/repositories.json
docker inspect 镜像id或名称
-f 指定模式输出
格式:docker tag 旧名称:标签 新名称:标签
格式:docker save -o /路径/存储文件名 镜像名 (接指定绝对路径,实现支持存放位置)
-o 输出到的文件
格式:docker load < /路径/存储文件
docker load -i /路径/存储文件
-i 指定导入的文件
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。
登录后配置
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。
docker hub的网址:https://hub.docker.com/
setting/centos:tagname
//setting/centos是创建docker hub后的存储库名
docker tag httpd:latest setting/centos:tagname #添加新的标签
docker login #登录公共仓库
Username:
password:
docker push setting/centos:tagname #上传镜像
docker create [选项] 镜像
常用选项:
-i:让容器开启标准输入
-t:让Docker分配一个伪终端tty
-it:合起来实现和容器交互的作用,运行一个交互式会话shell
docker create -it nginx:latest
docker ps -a //-a:显示所有容器
-a 显示所有的容器
-f 根据条件过滤显示的内容
-l 显示最近创建的容器
-n 累出最近创建的n个容器
-q 静默模式,只显示容器编号
-s 显示总的文件大小
说明:
CONTAINER ID:容器的ID号
IMAGE:加载的镜像
COMMAND :运行的程序
CREATED :创建时间
STATUS:当前的状态
PORTS:端口映射
NAMES:名称
docker start 0865439bf85d
docker ps -a
#加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。
#示例1:
docker run -itd nginx:latest /bin/bash
#示例2:执行后退出
docker run centos:latest /usr/bin/bash -c ls -lh /
#示例3:执行后不退出,以守护进程方式执行持续性任务
docker run -d centos:latest /usr/local/bash -c "while true;do echo lcdb;done"
-t 表示进入的终端
-i 开启标准输入,表示想要交互
-d 默认不会进入容器,后台运行,可以使用docker exec进入。
-c 指定交互命令
docker run -itd nginx:latest /bin/bash
/bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。
docker run centos:latest /usr/bin/bash -c ls -lh /
#格式:docker inspect 容器id
docker ps -a #先查看运行时容器的id
docker inspect b90d59168cf0
进入容器的两种方式:
docker attach :通过这个方式进入,如果退出会导致容器也会停止
docker exec:通过这个方式进入,如果退出不回导致容器停止。
退出命令:exit
docker attach 容器id
docker exec -it 容器id /bin/bash
docker run -it centos:latest /bin/bash
用户可以讲任何一个docker从一台主机迁移至任意一台主机:
1、首选需要讲已创建好的容器导出为文件,使用【docker export】命令实现,该容器当前处于运行状态也可以正常导出。
2、导出后将该文件传输至其他主机,通过相应的导入命令以实现容器的迁移。
3、 与镜像的迁移基本同理
'命令格式:'
docker export [容器ID/名称] >文件名
'例:'
docker export 59faa88f097f > /opt/test/centos
--
scp /opt/test/centos root@192.168.10.12:/opt
'命令格式:'
cat [文件名] |docker import - [生成的镜像名称][:标签]
cat centos | docker import - centos:7
'#导入文件centsos成为本地镜像'
cat centos | docker import - centos:7
docker run -itd centos:7 /bin/bash
--
'命令格式:'
docker rm [容器ID/名称]
'例:'
docker ps -a
docker rm -f d6288ff65860
//容器内容拷贝到宿主机中
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
//宿主机中内容拷贝到容器中
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
docker cp b3c25e19d04e:/root/test.txt ~/
docker cp /root/test2.txt b3c25e19d04e:/root/
存放日志的位置
/var/lib/docker/containers/
查看日志信息
docker logs 容器id
docker logs 59faa88f097f
清理日志
方式一:
当日志占满之后如何处理
###设置docker日志文件数量及每个日志大小
vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://f613ce8f.m.daocloud.io"],
"log-driver": "json-file",
"log-opts": { "max-size" : "500m", "max-file" : "3"}
}
修改完需要重新加载 systemctl daemon-reload systemctl restart docker
方式二:
使用脚本并设置周期性任务,实现定期清理日志内容。
#!/bin/sh
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
cat /dev/null > $log
done
f613ce8f.m.daocloud.io"],
“log-driver”: “json-file”,
“log-opts”: { “max-size” : “500m”, “max-file” : “3”}
}
修改完需要重新加载 systemctl daemon-reload systemctl restart docker
[外链图片转存中...(img-Jt8DKevI-1663501547182)]
方式二:
~~~c
使用脚本并设置周期性任务,实现定期清理日志内容。
#!/bin/sh
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
cat /dev/null > $log
done