当前位置:   article > 正文

Docker学习笔记_validating services.gitlab additional property por

validating services.gitlab additional property port is not allowed

Docker学习笔记

1.初始Docker

容器技术:解决软件跨环境迁移问题
解决

  • 开发
  • 测试
  • 生产
    环境之间差异,版本+代码
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.1解决不同组件依赖的兼容性问题

在这里插入图片描述

1.2安装Docker

命令行安装即可

1.3Docker架构

  • 客户端:
  • 服务端:镜像和容器
  • 仓库Registry:DockerHUB

在这里插入图片描述

1.3.1镜像

将应用程序及其依赖、环境、配置打包在一起

1.3.2容器

镜像运行起来就是容器,一个镜像可以运行多个容器

1.4Docker换源,换成国内镜像

在这里插入图片描述
在这里插入图片描述

2.Docker命令

可参照菜鸟教程

2.1Docker服务相关命令

2.1.1启动Docker服务

systemctl start docker
  • 1

2.1.2停止Docker服务

systemctl stop docker
  • 1

在这里插入图片描述

2.1.3重启Docker服务

systemctl restart docker
  • 1

在这里插入图片描述

2.1.4查看Docker服务状态

systemctl status docker
  • 1

在这里插入图片描述

2.1.5开机启动Docker服务

 systemctl enable docker
  • 1

2.2镜像相关命令

在这里插入图片描述

2.2.1查看本地镜像

docker images
  • 1

在这里插入图片描述

2.2.2搜索远程镜像

docker search redis
  • 1

在这里插入图片描述

2.2.3拉取远程镜像

Docker HUB 拉取相关软件的镜像

docker pull redis:3.5(3.5版本号)
  • 1

在这里插入图片描述

2.2.4删除本地镜像

docker rmi imageid
docker rmi redis:3.5(Image id 重复时)
  • 1
  • 2

在这里插入图片描述
删除所有镜像

docker remi `docker images -q`
  • 1

2.3容器相关命令

2.3.1查看容器

docker ps
  • 1

在这里插入图片描述
查看所有容器

docker ps -a
  • 1

2.3.2创建容器

方式1

docker run -i -t --name=c1 redis
-i 保持容器运行
-t 容器退出后自动关闭
  • 1
  • 2
  • 3

方式2

docker run -id --name=c2 redis
-d 守护,后台运行容器
-- name 为容器起名
  • 1
  • 2
  • 3

在这里插入图片描述

2.3.3进入容器

docker exec -it c2 /bin/bash
  • 1

在这里插入图片描述

2.3.4启动容器

docker start c1
  • 1

在这里插入图片描述

2.3.5停止容器

docker stop c2
  • 1

2.3.6删除容器

运行的容器不可以删除

docker rm c2(容器名称)
  • 1

在这里插入图片描述

docker rm `docker ps -aq`
  • 1

2.3.7查看容器信息

docker inspect c1
  • 1

在这里插入图片描述

3.Docker应用部署

3.1MySql部署

在这里插入图片描述端口映射 -p
在这里插入图片描述

3.1.1搜索MySQL镜像

docker search mysql
  • 1

3.1.2拉取MySQL镜像

去DockerHUb

docker pull mysql:5.6
  • 1

3.1.3创建容器,设置端口映射、目录映射

# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
  • 1
  • 2
  • 3
docker run -id \
-p 3306:3306 \
--name=c_mysql
-v $PWD/conf:/etc/mysql/conf.d\
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

$PWD:当前路径
docker run :就是创建并运行容器
-- name mn :给容器起个名字叫mn
-v $PWD/conf:/etc/mysql/conf.d :将主机目录下conf/my.cnf挂载到容器的/etc/mysql/my.cnf 配置目录
-p 8080:80 :把宿主机的8080端口映射到容器内的80端口
-e MYSQL_ROOT_PASSWORD=123456:初始化root密码
mysql:5.6 :镜像名称

3.1.4操作容器中的MySQL

docker exec -it c_mysql /bin/bash
  • 1

登录mysql

mysql -uroot -p123456
  • 1

在这里插入图片描述

3.2Tomcat部署

3.2.1搜索Tomcat镜像

docker search tomcat
  • 1

3.2.2拉取Tomcat镜像

docker pull tomcat
  • 1

3.2.3创建容器,设置端口映射、目录映射

#在/root目录下创建tomcat目录用于存放tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
  • 1
  • 2
  • 3
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat

  • 1
  • 2
  • 3
  • 4
  • 5

-p 8080:8080:将容器的8080端口映射到主机的8080端口
-v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps

3.2.4操作容器中的Tomcat

使用外部机器访问Tomcat
在这里插入图片描述

3.3Nginx部署

3.3.1搜索Nginx镜像

docker search nginx
  • 1

3.3.2拉取Nginx镜像

docker pull nginx
  • 1

3.3.3创建容器,设置端口映射、目录映射

#在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
#在~/nginx/conf/下创建nginx.conf文件,粘贴下面代码块的内容
vim nginx.conf

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
	
	include /etc/nginx/conf.d/*.conf;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

创建容器

docker -run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

-p 80:800:将容器的80端口映射到宿主机的80端口
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的/conf/nginx.conf挂载到容器的:/etc/nginx/nginx.conf配置目录
-v $PWD/html:/usr/share/nginx/html:将主机当前目录挂载到容器的/val/log/nginx日

3.3.4操作容器中的Nginx

外部访问Nginx即可

3.4Redis部署

3.4.1搜索Redis

docker search redis
  • 1

3.4.2拉取redis

docker pull redis:5.0
  • 1

3.4.3创建容器

docker run -id --name=c_redis -p 6379:6379 redis:5.0
  • 1

3.4.4测试访问

redis-cli.exe -h 192.168.187.129 -p 6379
-h 192.168.187.129 宿主机的ip地址
  • 1
  • 2

4.备份与迁移

5.Dockerfile(构建镜像)

5.1Docker镜像原理与制作

5.1.1原理

复用
分层的文件系统
在这里插入图片描述在这里插入图片描述

5.1.2制作镜像

在这里插入图片描述容器转镜像

docker commit 容器id 镜像名称:版本号
  • 1

在这里插入图片描述
镜像不可以传输,可以将镜像转换成压缩文件

docker save -o 压缩文件名称 镜像名称:版本号
  • 1

压缩文件还原成镜像

docker load -i 压缩文件名称
  • 1

在这里插入图片描述
目录挂载的不生效

5.2DockerFile概念及作用

统一,开发、测试、运维的运行环境
在这里插入图片描述
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder

作用
在这里插入图片描述

5.3案例1:定义dockerfile,发布springboot项目

5.3.1springboot项目准备

在这里插入图片描述

5.3.2将项目打包

在这里插入图片描述
根据路径找到打好的文件
在这里插入图片描述在这里插入图片描述

5.3.2将文件传输到虚拟机

  1. 参照别人安装Xshell教程安装
    在这里插入图片描述

  2. 使用rz命令进行查看是否安装了lrzsz程序

  3. 如果没有安装,使用yum -y install lrzsz进行安装

  4. 输入 rz进行文件上传
    在这里插入图片描述

5.3.4将文件移动至dockerfiles目录下

如果没有目录docker-files,先进行创建

mkdir ~/docker-files
  • 1
mv springboot-hello-0.0.1-SNAPSHOT.jar ./docker-files/
  • 1

5.3.5编辑dockerfile将jar包添加到镜像中

  1. 定义父镜像:FROM java:8
  2. 定义作者信息:MAINTAINER jqqq007 <www.jqqq007.wkl>
  3. 将jar包添加到容器:ADD springboot-hello-0.0.1-SNAPSHOT.jar app.jar
  4. 定义容器启动执行的命令:CMD java -jar app.jar
  5. 通过dockerfile 构建镜像:docker build -f dockerfile文件路径 -t 镜像名称:版本
vim springboot_dockerfile  编辑一个文件
添加以上命令
  • 1
  • 2

在这里插入图片描述
执行,就可生成镜像

docker build -f ./springboot_dockerfile -t app .
  • 1

在这里插入图片描述
查看镜像
在这里插入图片描述
通过镜像app,创建运行容器

docker run -id -p 9000:8080 app
  • 1

访问
在这里插入图片描述

5.4案例2:自定义centos7镜像

要求:

  1. 默认登录路径为/usr
  2. 可以使用vim

5.4.1查看原来的centos7挂载目录

在这里插入图片描述是挂载在根目录/下

5.4.2查看原来的centos7是否带有vim

在这里插入图片描述结果不带

5.4.3开始自定义自己的centos7

创建一个dockerfile

vim centos_dockerfile
  • 1

添加以下命令

FROM centos:7
MAINTAINER JQ<jq.cn>
RUN yum install -y vim
WORDIR /usr
CMD/bin/bash
  • 1
  • 2
  • 3
  • 4
  • 5

RUN yum install-y vim:执行安装vim命令
WORDIR /usr:定义默认的工作目录
CMD/bin/bash:定义容器启动执行的命令

5.4.4构建镜像自己的镜像

通过dockerfile 构建镜像:docker build -f dockerfile文件路径 -t 镜像名称:版本

docker build -f ./centos_dockerfile -t appcentos:1 
  • 1

5.4.5创建容器执行

在这里插入图片描述

6.Docker服务编排

6.1服务编排概念

在这里插入图片描述

6.2Docker Compose(服务编排工具)

在这里插入图片描述
DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/

在这里插入图片描述

6.3DockerCompose安装使用

#Compose 目前已经完全支持Linux、MAC OS、Windows,在安装Compose之前,需要先安装Docker。下面以编译好的二进制包方式安装在Linux中
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.0.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

#设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
#查看版本信息
docker-compose -version

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

卸载dockerCompose

#二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

  • 1
  • 2
  • 3

6.4案例:DockerCompose编排Nginx+springboot项目

6.4.1创建docker-compose目录

mkdir docker-compose/
cd ~/docker-compose
  • 1
  • 2

6.4.2编写docker-compose.yml文件

vim docker-compose.yml
  • 1
version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
   	- ./nginx/conf.d:/etc/nginx/conf.d
  app:
    image: app
    expose:
      - "8080"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6.4.3创建./nginx/conf.d目录

mkdir -p ./nginx/conf.d
cd ./nginx/conf.d
  • 1
  • 2

6.4.4在./nginx/conf.d目录下编写itdocker.conf文件

vim itdocker.conf
  • 1
server {
	listen 80;
	access_log off;
	
	location / {
		proxy_pass http://app:8080;
	}
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6.4.5在~/docker-compose目录下 使用dockers-compose 启动容器

cd ~/docker-compose
  • 1
docker-compose up
  • 1

6.4.6测试访问

192.168.56.10:80/hello
在这里插入图片描述

6.4.7错误:services.nginx Additional property app is not allowed

docker-compose up
services.nginx Additional property app is not allowed
  • 1
  • 2

此时一定要去检查docker-compose.yml书写格式,特别是缩进格式!

7.Docker容器数据卷

在这里插入图片描述

7.1数据卷的概念及作用

在这里插入图片描述
容器与虚拟机进行目录挂载
解决

  • Docker容器删除后,数据还会存在
  • Docker容器与外部机器之间进行文件交换
  • 容器之间的数据交换

一个容器可以被多个容器进行同时挂载
一个容易也可以被挂载多个数据卷

7.2配置数据卷

在这里插入图片描述

  • 目录必须是绝对路径
  • 目录不存在可以自动创建
  • 可以挂载多个数据卷

7.2.1挂载目录

docker run -it --name=c1 -v /root/data/:/root/data_container redis:3.5
  • 1

挂载多个目录

docker run -it --name=c2 \
-v /root/data:/root/dedadasdad \
-v /root/data2:/root/dadssds

  • 1
  • 2
  • 3
  • 4

7.2.2多个容器挂载同一个数据卷

在这里插入图片描述

docker run -it --name=c1 -v /root/data/:/root/data_container redis:3.5
  • 1
docker run -it --name=c2 -v /root/data/:/root/data_container redis:3.5
  • 1

7.3配置数据卷容器

在这里插入图片描述

7.3.1配置

在这里插入图片描述
自动在宿主机分配一个文件

docker run -it --name=c3 -v /volume redis:3.5
  • 1
docker run -it --name=c1 --volumes-from c3 redis:3.5
  • 1
docker run -it --name=c2 --volumes-from c3 redis:3.5
  • 1

8.Docker私有仓库(管理自己的镜像)

在这里插入图片描述

8.1搭建私有仓库(注意ip变化)

8.1.1拉取私有仓库镜像

docker pull registry
  • 1

在这里插入图片描述

8.1.2启动私有仓库容器

docker run -id --name=registry -p 5000:5000 registry
  • 1

8.1.3打开浏览器 访问私有仓库

输入地址https://私有仓库服务器ip:5000/v2/_catalog
看到{“repositories”:[]}表示私有仓库搭建成功
在这里插入图片描述

8.1.4修改deamon.json

vim /etc/docker/daemon.json
#在上述文件中添加一个key,保存退出。
#此步用于让docker信任私有仓库地址
#注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip
{"insecure-registries": ["私有仓库服务器ip:5000"]}
  • 1
  • 2
  • 3
  • 4
  • 5

8.1.5重启docker 服务与registry仓库

systemctl restart docker
docker start registry
  • 1
  • 2

8.2上传镜像到私有仓库

在这里插入图片描述

8.2.1标记镜像为私有仓库的镜像

docker tag centos:7 私有仓库服务器ip:5000/centos:7
  • 1

8.2.2上传标记的镜像

docker push 私有仓库服务器ip:5000/centos:7
  • 1

在这里插入图片描述

在这里插入图片描述

8.3从私有仓库拉取镜像

#拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7
  • 1
  • 2

在这里插入图片描述

9.Docker容器虚拟化与传统虚拟机比较

在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/74272
推荐阅读
相关标签
  

闽ICP备14008679号