服务器容器化-docker(全)

文章目录

    • 另外两篇Docker笔记
    • Docker整体架构介绍
    • Docker环境搭建
      • 安装方法一
        • 卸载
      • 安装方法二 (建议):
    • docker的容器生命周期管理
      • docker的基本命令(Docker Container之CRUD)
        • 下载镜像 docker pull
        • 创建容器 docker create
        • 查看容器 docker ps ( docekr ps -a 查看所有)
        • 启动容器 docker run
        • 进入交互状态 docker exec -it [id] /bin/bash (exit 退出来)
        • 暂停/停止/杀死 [启动]容器 docker pause [启动 docker unpause] / docker stop [启动 docker start]/ docker kill [启动 docker start]
        • 删除容器 docker rm (-f 强制删除)
        • 查看日志 docker logs (-f :持久刷新查看) [id]
      • 限制资源启动
        • -c (-c 4000是cpu资源量)
        • -m 抢占流量 --memory-swap (内存资源)
        • --blkio-weight (io资源)
    • Dockerfile实战
      • 创建Dockerfile(vi dockerfile)
      • 解析Dockerfile 文件
      • 执行dockerfile命令 - docker build -t
        • 执行命令生成一个mysh镜像
        • 执行 docker run mysh
        • 执行docker run mysh -c date (利用CMD修改执行结束后的方法 从ls -L 改成为 date)
        • /bin/sh -c date (利用ENTRYPOINT 来修改结尾的命令 从ls -L 改成为 date)
        • 系统卷 -v
    • Docker 网络通信
    • Docker 生态圈
    • 微服务部署
      • 安装平台服务 rabbitMQ , Redis , Mysql
        • 安装 RabbitMQ
        • 安装redis
        • 安装mysql
        • 配置java 8 的dockerfile 启动jar

另外两篇Docker笔记

Docker构建笔记
docker学习笔记(安装 卸载 基本命令)

Docker整体架构介绍

服务器容器化-docker(全)_第1张图片
服务器容器化-docker(全)_第2张图片
服务器容器化-docker(全)_第3张图片
服务器容器化-docker(全)_第4张图片
服务器容器化-docker(全)_第5张图片
服务器容器化-docker(全)_第6张图片

Docker环境搭建

服务器容器化-docker(全)_第7张图片

安装方法一

  • 安装方法

yum install docker

  • 启动docker

systemctl start docker

卸载

  • 卸载docker
$ sudo yum remove docker \ 
                  docker-client \ 
                  docker-client-latest \ 
                  docker-common \ 
                  docker-latest \ 
                  docker-latest-logrotate \ 
                  docker-logrotate \  
                  docker-engine

安装方法二 (建议):

  • 下载docker安装脚本:curl -fsSL get.docker.com -o get-docker.sh

    curl -fsSL get.docker.com -o get-docker.sh
    
  • 运行脚本(执行阿里云源):sh get-docker.sh --mirror Aliyun

    sh get-docker.sh --mirror Aliyun
    
  • 重新加载配置:systemctl daemon-reload

    systemctl daemon-reload
    
  • 启动docker:systemctl restart docker

    systemctl restart docker
    
  • 查看docker版本:docker version

    docker version
    

docker的容器生命周期管理

服务器容器化-docker(全)_第8张图片
服务器容器化-docker(全)_第9张图片

docker的基本命令(Docker Container之CRUD)

下载镜像 docker pull

例如:

docker pull nginx

创建容器 docker create

例如:

docker create nginx

查看容器 docker ps ( docekr ps -a 查看所有)

docker ps -a

启动容器 docker run

例如:

docker run 1e86100fbcff

进入交互状态 docker exec -it [id] /bin/bash (exit 退出来)

例如

docker exec -it 1e86 /bin/bash

暂停/停止/杀死 [启动]容器 docker pause [启动 docker unpause] / docker stop [启动 docker start]/ docker kill [启动 docker start]

例子:

docker pause 1e86100fbcff
docker stop 1e86100fbcff
docker unpause 1e86100fbcff
docker start1e86100fbcff

删除容器 docker rm (-f 强制删除)

docker rm -f 1e86

查看日志 docker logs (-f :持久刷新查看) [id]

docker logs 4feg

限制资源启动

-c (-c 4000是cpu资源量)

 docker run -d -c 4000 nginx

-m 抢占流量 --memory-swap (内存资源)

例如:

docker run -d -m 200M --memory-swap=400M nginx

–blkio-weight (io资源)

 docker run -d --blkio-weight 300 nginx

Dockerfile实战

服务器容器化-docker(全)_第10张图片

创建Dockerfile(vi dockerfile)

vi Dockerfile

解析Dockerfile 文件

  • MAINTAINER aoteman (维护人员)

  • RUN mkdir test1 (容器启动后执行的命令)

  • RUN touch test2 (可多个命令执行)

  • COPY test3 . (复制test3到本目录)

  • ADD test4.tar.gz . (add可以进行解压)

  • —分割线—

  • EXPOSE 80 (暴露80端口)

  • VOLUME /data (指定目录)

  • ENTRYPOINT (始终执行)

  • CMD 命令 如果有外部传cmd命令,则文件内的不执行

Dockerfile文件内容

#Owned by Lin Shuzheng
FROM debian
MAINTAINER shuzheng
RUN mkdir test1
RUN touch test2
COPY test3 .
ADD test4.tar.gz .
ENTRYPOINT ["/bin/sh"]
CMD ["-c","ls -l"]

执行dockerfile命令 - docker build -t

执行命令生成一个mysh镜像

```
docker build -t mysh .
```

服务器容器化-docker(全)_第11张图片

执行 docker run mysh

服务器容器化-docker(全)_第12张图片

执行docker run mysh -c date (利用CMD修改执行结束后的方法 从ls -L 改成为 date)

在这里插入图片描述

/bin/sh -c date (利用ENTRYPOINT 来修改结尾的命令 从ls -L 改成为 date)

在这里插入图片描述


系统卷 -v

[root@training1 ~]# pwd
/root
[root@training1 ~]# ls
apache  Dockerfile  emacs  get-docker.sh


[root@training1 ~]# docker run -v $PWD/data:/data -d redis:3.2 redis-server
aa964b1b61fd2a8c503bb3cd63ee87235f85bead022b504f48f20eff575e5b05
[root@training1 ~]# ls
apache  data  Dockerfile  emacs  get-docker.sh

[root@training1 ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS              PORTS               NAMES
aa964b1b61fd        redis:3.2             "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp            tender_franklin
[root@training1 ~]# docker exec -it aa964b1b61fd /bin/bash

root@aa964b1b61fd:/data# touch update
root@aa964b1b61fd:/data# exit
exit

[root@training1 ~]# ls data/
update


服务器容器化-docker(全)_第13张图片

Docker 网络通信

服务器容器化-docker(全)_第14张图片

Docker 生态圈

服务器容器化-docker(全)_第15张图片

微服务部署

安装平台服务 rabbitMQ , Redis , Mysql

服务器容器化-docker(全)_第16张图片

安装 RabbitMQ

 docker run -d --name myrebbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management

安装redis

docker run -d -p 6379:6379 --name myredis redis redis-server
  • 挂载 配置redis.conf
docker run -d --privileged=true -p 6379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name reidsLinBookz redis redis-server /etc/redis/redis.conf --appendonly yes

参数说明:

–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限

-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件

-v /docker/redis/data:/data:映射数据目录

redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程

–appendonly yes:开启数据持久化

mkdir /docker
mkdir /docker/redis
mkdir /docker/redis/conf
mkdir /docker/redis/data

创建redis.conf配置文件
touch /docker/redis/conf/redis.conf

redis.conf文件内容自行添加:
切记注释掉:#daemonize yes 否则无法启动容器
重要话说三遍:注释掉#daemonize yes,注释掉#daemonize yes,注释掉#daemonize yes
#任何ip可以访问
bind 0.0.0.0
#守护进程
#daemonize yes
#密码
requirepass 123456
#持久化⽂件名称
dbfilename xdclass.rdb
#持久化⽂件存储路径
dir /data/
#持久化策略, 10秒内有个1个key改动,执⾏快照
save 10 1
######之前配置######
#导出rdb数据库⽂件压缩字符串和对象,默认是yes,会浪费CPU但是节省空间
rdbcompression yes
# 导⼊时是否检查
rdbchecksum yes


#aof持久化配置
#appendonly yes
#appendfilename "appendonly.aof"
#appendfsync everysec

# aof重写期间是否同步
no-appendfsync-on-rewrite no
# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 加载aof时如果有错如何处理
# yes表示如果aof尾部⽂件出问题,写log记录并继续执⾏。
no表示提示写⼊等待修复后写⼊
aof-load-truncated yes

安装mysql

 docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 mysql

配置java 8 的dockerfile 启动jar

Dockerfile

FROM java:8
ADD registry.jar  registry.jar
ENTRYPOINT ["java","-jar","registry.jar"]

你可能感兴趣的:(docker,服务器,容器)