Docker的安装与使用:
一、Docker的安装
-
建议关闭防火墙
关闭防火墙 systemctl stop firewalld.service 检查防火墙状态 systemctl status firewalld.service 开启防火墙改 systemctl start firewalld.service
-
添加docker软件包源:
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 默认地址是官方的,有的时候可能网络不太好,国内的可以设置为阿里的源 http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装docker-ce
yum install -y docker-ce
-
启动/关闭/版本/详细信息
启动 systemctl start docker 关闭 systemctl stop docker 版本 docker version 详细信息 docker info
-
设置开机启动
systemctl enable docker
-
配置加速器
vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] }
注意:配置完要重新读取一下
systemctl daemon-reload systemctl restart docker
二、Docker的常用命令
启动一个容器
docker run -d nginx 或者 docker container run -d nginx
查看本地镜像
docker image ls
查看历史,构建步骤等
docker history nginx
显示镜像的详细信息
docker inspect nginx
从镜像仓库拉取一个镜像
docker pull nginx(如果本地已经有这个镜像的话,就不会从远程的镜像仓库再去下载了)
删除一个镜像
docker rm nginx(可以加上-f)
清除没有被容器引用的镜像
docker image prune 清除一些不完整的镜像,没有使用到的镜像 (加上-a参数就是清除掉所有没有和容器关联的镜像)
docker save redis -o redis.tar保存一个或多个镜像到一个tar的归档文件
du -sh redis.tar查看归档包多大小
解压归档文件tar xvf redis.tar
docker load -i redis.tar导入到本地镜像仓库中
上面的save和load常用于一台电脑链接不上网络,就得去找一台有网络的电脑去下载需要的镜像,下载完了再把镜像挪到那台没有网的电脑上。
查看正在运行的容器
docker ps
查看容器内部的进程
docker top 容器id
指定端口号的启动容器
docker run -d -p 8080:80 nginx
docker run -d centos 退出
docker run -d nginx 启动
docker run -it -d centos 启动
docker run -it -d nginx 启动
-it一般是一块连用的,作用就是分配一个伪终端,这个伪终端就相当于一个进行。在运行docker run -d centos的时候是会退出的,因为运行的容器内部没有进程,所以会推出。但我们运行docker run -it -d centos的时候会给这个centos容器内部创建一个伪终端的进程,所以centos这个不会退出。
docker exec -it 容器id bash
进入容器终端并且的保留为容器终端的输入形式(-it和bash的结合作用)
-d的意思就是让容易在后台运行,如果不加-d就会在当前终端进行运行。一般都是-d,因为我们一般会启动很多的容器
docker run -d -e env=prod -p 88:80 --name web -h web --restart=always nginx
创建nginx容器,指定环境变量env=prod,暴露对外端口为88,指定容器名字web,指定主机名 web,指定容器退出时策略为always(当docker重启后这个容器也会跟着重启)
docker commit 容器名称 镜像名
docker ps
-a:查看所有的容器
-q:查看容器id
清除所有的容器:docker rm -f $(docker ps -qa)
持久化:
docker run -d -p 8080:80 -v /opt/wwwroot/:/usr/share/nginx/html nginx
将/opt/wwwroot/这个位置挂在到容器中的/usr/share/nginx/html这个位置,其实就相当于一个映射,可以理解为宿主机的目录覆盖了容器的那个目录。这种情况下我们查看容器中的这个目录会发现和宿主机的一模一样,当我们改了这里的东西,宿主机的对应位置也发生了改变;当我们改了宿主机的那个位置的文件,发现容器这种对应的文件也发生了响应变化。
容器网络:
容器在创建的时候,docker会分配一个ip地址,用于网络交互。
1、外界访问容器内部:先访问宿主机的地址和开放的端口号,然后通过iptables实现的DNAT的一个机制,也就是目标网络地址转换,转换成容器的ip地址和对应的端口号,进而完成访问。
2、容器访问外部:容器会根据iptables实现的SNAT源地址转换,转换成宿主机的地址,把数据包发送出去
三、Dockerfile的使用
dockerfile构建对象:
1、创建dockerfile文件 vi Dockerfile
FROM centos:7
RUN yum install epel-release -y && \
yum install nginx -y
CMD ["nginx", "-g", "daemon off;"]
这里的&& \ 意思就是可以执行多行
2、docker build -t nginx:v1 . 构建镜像
-t是指定镜像的名称
-f指定dockerfile的路径(默认读取Dockerfile的文件)
. 读取当前目录的Dockerfile文件
四、Harbor的搭建与基本使用
Harbor的部署与使用:(必须先安装Docker和Docker Compose)
1、安装docker-compose:先把docker-compose下载下来,上传到服务器上
2、将上传完的docker-compose移动到/use/local/bin/docker-compose
3、给这个文件赋予执行权限:chmod +x /usr/local/bin/docker-compose
4、检查docker-compose是否成功:docker-compose version
1、Harbor的安装有两种:在线安装(10M左右需要有网)和离线安装(文件500多M)
2、解压:tar zxvf harbor-offline-installer-v2.0.0.tgz
3、进入barbor文件夹:cd barhor
4、复制yml文件:cp harbor.yml.tmpl harbor.yml
5、编辑yml文件:vi harbor.yml
修改主机号:hostname:120.48.41.214
注释掉https,因为我们没有证书:先注释https相关配置
6、./prepare 准备
7、./install.sh 安装
8、访问:主机号是我们刚刚修改的IP地址,端口号默认80,密码默认Harbor12345,账号默认admin
密码可以修改yml文件:
harbor_admin_password: Harbor12345
推送到镜像仓库上:
1、需要先打个标签:docker tag tomcat:v1 120.48.41.214/library/tomcat:v1
2、推送:docker push 120.48.41.214/library/nginx:v1
注意:如果访问方式http方式,需要在yml文件上配置个可新人
ss -antp | grep 443
修改docker的json文件,加个可信任
"insecure-registries":["120.48.41.214"] 注意:别忘了逗号
3、重启docker:systemctl restart docker
查看所有容器:docker-compose ps
启动所有容器:docker-compose up -d