Centos7系列
docker安装前的准备工作
能通公网
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
- 永久、临时关闭selinux
[root@bogon ~]# cat /etc/sysconfig/selinux
---------------------------------------------------------
SELINUX=disabled #永久关闭
--------------------------
setenforce 0 #临时关闭
- CentOS-Base.repo要放在/etc/yum.repos.d/下
- 需要制作本地yum源
- 安装docker-CE社区版本
一、用yum清掉旧的docker版本
yum -y remove docker
二、安装依赖
yum -y install yum-utils device-mapper-persistent-data lvm2
三、添加docker-ce版本的yum源配置文件
curl https://download.docker.com/linux/centos/docker-ce.repo \-o /etc/yum.repos.d/docker-ce.repo
或
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
四、yum开始安装docker-ce社区版
yum -y install docker-ce docker-ce-cli containerd.io
五、初始化操作
systemctl start docker
systemctl enable docker
六、验证版本
[root@bogon ~]# docker version
Client: Docker Engine - Community
Version: 20.10.14
API version: 1.41
Go version: go1.16.15
Git commit: a224086
Built: Thu Mar 24 01:49:57 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
七、添加docker国内镜像源(默认国外镜像源,下载很慢,需要改回国内的)
cat /etc/docker/daemon.json # 配置镜像加速器
{
“registry-mirrors”:[“https://registry.docker-cn.com”],
"max-concurrent-downloads":1
}
或
{
"registry-mirrors": ["https://m2lv5yea.mirror.aliyuncs.com"]
}
或
{
"storage-driver": "overlay2",
"insecure-registries": ["registry.access.redhat.com","quay.io"],
"registry-mirrors": ["https://60699eq2.mirror.aliyuncs.com","https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"live-restore": true,
"log-opts": {
"max-size": "100m"
},
"data-root":"/data/docker"
}
systemctl daemon-reload
systemctl restart docker
八、docker常用的命令
- docker search centos #查找镜像源,私人上传的镜像,必须以作者名/镜像名方式上传
- docker pull hello-world #下载镜像 镜像名字:版本号
docker pull centos:7 - docker imagesc #查看本地所有镜像.镜像还没解包,起容器才是是解包
- docker build -t Mr.wu/centos7:v1 .
Mr.wu:作者名 centos7:镜像名 v1:版本号
. 代表构建镜像配置文件Dockerfile的位置
-t 代表指定镜像名称
1)创建Dockerfile的存储目录
例:mkdir -p /db/dockerfile/library/centos/7
cd /db/dockerfile/library/centos/7
2)创建docker.sh脚本 #容器要想启动,里面至少要封装一个永久不退出的进程;没有进程,容器起不来,所以需要配一个无限循环脚本
cat docker.sh
#!/bin/bash
while true
do #docker公网的镜像仓库dockerhup
echo “Hello.world”
sleep 2
done
3)创建Dockerfile的配置文件,名称必须是Dockerfile
cat Dockerfile (Dockerfile相当于images的配置文件)
FROM centos #此镜像基于centos操作系统之上,centos操作系 统的镜像本地必须有;本地没有操作系统,会自动从公网镜像仓库下载
LABEL MAINTATNER=“Mr.wu.com” #作者的名字
RUN ln -sfv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ln -s软链接 f:强制覆盖 v:有信息输出启用镜像时区为上海时区
COPY docker.sh /home/test/
RUN chmod +x /home/test/docker.sh
CMD [“/home/test/docker.sh”]
开始构建镜像,执行docker build -t Mr.wu/centos7:v1 .
docker run -dit -name 容器名 ImageID/镜像名 /bin/bash
创建容器并且运行,镜像启动以后叫容器。-d代表后台运行-i代表 在容器里可以使用命令交互 –t制作一个伪终端用于登录。所以-dit 参数必须加!末尾/bin/bash也可以不加,不加启用CMD执行;加了/bin/bash,就不会启用Dockerfile中的CMD!
- docker run -dit --name nginx_test -p 80:80 nginx:latest
#把本地的80端口映射到容器的80端口在启动镜像
0.0.0.0:80 –> 80/tcp
代表本地任意IP的80端口以tcp协议映射到容器的80端口
curl 127.0.0.1 显示NGINX的网页内容 - docker ps #查看所有容器的进程,包括运行退出的
- docker ps -a #查看正在运行的容器的进程
- docker logs 容器名/ID号 #查看容器的日志
- docker attach 容器名/容器ID号
#从本地系统切入到容器里,此命令不常用
exit 退出容器,代表/bin/bash退出,容器里没有进程了 - docker stop 容器ID号/容器名 #停止正在运行的容器的进程
- docker start 容器ID号 #运行(已停止的)容器
- docker rm 容器ID号 #删除已经停止的容器,先停后删
- docker rmi 镜像名/Image号
删除镜像之前,先确定镜像没有启动成容器,先停容器再删容器后 删镜像
docker commit 容器名 新镜像名
例:docker commit test1 Mr.wu/centos7:v2
代表将更改后的容器进程保存为一个新的镜像(比如切到容器里, 执行一个简单的命令mkdir -p /nsj/raptor4003 然后exit,提交成一个新的镜像 - docker exec 容器名 执行命令
#在本地系统直接向容器下达命令,不用切到容器里
docker exec -it test /bin/bash 可以切进容器里,exit后,容器进程仍在.优于attach - docker cp 本地系统的文件 容器名:/目录/
用于容器进程和本地系统之间相互复制文件
docker cp docker.sh test1:/nsj/
docker exec test1 ls /nsj
docker cp test1:/nsj/yum.log /tmp - docker create -it ImageID
创建容器但不直接运行,运行可以用start - docker diff 容器名
#比对容器和原始镜像的区别,有哪些已经改变的文件或文件夹
docker diff test1
C /root/.bash_history # C代表多东西 A代表少东西
A /tmp/docker.sh - docker events #时时监测容器的变化情况,监控命令
- docker export 容器ID号/容器名 > 容器.tar
将容器里的进程(导出容器)导出为.tar包,放到本地,导回就成镜 像了 - docker import 容器.tar Mr.wu/centos7:3
例: docker import test1.tar Mr.wu/centos7:3
#将导出的.tar包创建成一个新镜像 - docker history ImageID号/镜像名
#查一个镜像的历史修改记录 - docker info
#查看当前操作系统的docker运行信息 - docker inspect ImageID号/镜像名
#查看指定镜像的详细信息、配置文件 - docker kill 容器ID号/容器名
#强行停止一个或多个正在运行的容器进程,比stop效果快 - docker save 镜像名 > 镜像名.tar
#将一个本地的镜像(导出镜像)导出为.tar包放到本地 - docker load < 镜像名.tar
#用于将save导出的.tar包重新加载回镜像,和原来的镜像名字、ImageID完全相同 - docker logs 容器ID号 #用于输出容器进程内的日志
- docker pause 容器ID号 #暂停容器进程
- docker unpause 容器ID号 #恢复容器进程
- docker port 容器名
输出容器端口映射及协议,一般可以被代替docker ps -a
#docker run -dit --name nginx_test -p 80:80 nginx:latest
例:把本地的80端口映射到容器的80端口在启动镜像
0.0.0.0:80 –> 80/tcp
代表本地任意IP的80端口以tcp协议映射到容器的80端口
curl 127.0.0.1 显示NGINX的网页内容 - docker rename 容器旧名 容器新名 #给容器进程改名
- docker restart 容器ID号 #重启容器进程
- docker stats 容器ID号
-用于实时输出容器的资源使用情况,类似top - docker tag Mr.wu/centos:3 Mr.wu/centos:4
类似创建镜像的软链接,两个镜像的ID号都一样,根据ID号,两个可以一起强删 - docker top 容器ID号 #查看指定容器的进程信息
- docker update –help
#调整一个或多个容器的启动配置,可以配置CPU和内存的参数并启动 镜像 - docker version #查看docker的版本信息
- docker wait 容器ID号
捕捉一个或多个容器的退出状态,并返回退出状态码 - login && logout && push
- login:登录docker hup官方公有仓库
- logout:退出docker hup 官方公有仓库
push:用于将本地镜像推到docker hup 官方公有镜像仓库 - docker hup官方公有镜像仓库 https://hup.docker.com/
docker hup 国内无法注册账户
安装docker-compose
版本一
curl -L “https://github.com/docker/compose/releases/download/v2.1.1/docker-compose-
(
u
n
a
m
e
−
s
)
−
(uname -s)-
(uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
版本二(pip方式安装)
yum -y install python3
wget https://bootstrap.pypa.io/pip/3.6/get-pip.py instead
或
wget https://bootstrap.pypa.io/get-pip.py
或
wget https://bootstrap.pypa.io/pip/3.6/get-pip.py
python3 get-pip.py
pip -V
pip install docker-compose
docker-compose version
安装查看docker启动容器的命令runlike
yum -y install python36
pip3 install runlike
runlike -p 容器名