docker离线安装

下载地址 密码:pah1
官方地址

1. 安装docker-18.03.1-ce

  1. #解压
  2. [root@smsr ~]# tar xzvf docker-18.03.1-ce.tar
  3. #将解压出来的 docker 文件所有内容移动到 /usr/bin/ 目录下
  4. [root@smsr ~]# cp docker/* /usr/bin/
  5. #开启 docker 守护进程
  6. [root@smsr ~]# dockerd &
  7. #查看版本
  8. [root@smsr ~]# docker --version

2. docker注册为service

将以下文件放入 /usr/lib/systemd/system/docker.service 中,就可使用service docker restart/stop 等操作来启停docker

  1. #创建或编辑docker.service
  2. [root@smsr ~]# cd /usr/lib/systemd/system
  3. [root@smsr ~]# vi docker.service

进入vim界面后,按Insert键,进入编辑模式,把下面docker.service内容右键复制进去。
然后按Esc键退出编辑,输入:wq!,回车保存文件即可。

docker.service:

  1. [Unit]
  2. Description=Docker Application Container Engine
  3. Documentation=https://docs.docker.com
  4. After=network-online.target firewalld.service
  5. Wants=network-online.target
  6. [Service]
  7. Type=notify
  8. # the default is not to use systemd for cgroups because the delegate issues still
  9. # exists and systemd currently does not support the cgroup feature set required
  10. # for containers run by docker
  11. ExecStart=/usr/bin/dockerd
  12. ExecReload=/bin/kill -s HUP $MAINPID
  13. # Having non-zero Limit*s causes performance problems due to accounting overhead
  14. # in the kernel. We recommend using cgroups to do container-local accounting.
  15. LimitNOFILE=infinity
  16. LimitNPROC=infinity
  17. LimitCORE=infinity
  18. # Uncomment TasksMax if your systemd version supports it.
  19. # Only systemd 226 and above support this version.
  20. #TasksMax=infinity
  21. TimeoutStartSec=0
  22. # set delegate yes so that systemd does not reset the cgroups of docker containers
  23. Delegate=yes
  24. # kill only the docker process, not all processes in the cgroup
  25. KillMode=process
  26. # restart the docker process if it exits prematurely
  27. Restart=on-failure
  28. StartLimitBurst=3
  29. StartLimitInterval=60s
  30. [Install]
  31. WantedBy=multi-user.target

Docker-Compose

compose主要用于开发/测试场合,适合小规模应用的部署, 并不适合生产环境使用

1. 安装

下载docker-compose-Linux-x86_64文件,国内下载地址

  1. #复制到linux下 /usr/local/bin并改名为docker-compose
  2. [root@smsr ~]#mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
  3. #赋权
  4. [root@smsr ~]#chmod +x /usr/local/bin/docker-compose
  5. #查看版本
  6. [root@smsr ~]#docker-compose -v

2. 命令

注意:docker-compose命令必须在docker-compose.yml文件同目录下执行

  1. #修改文件后需要重新build,本地创建镜像
  2. [root@smsr ~]#docker-compose build
  3. #创建并启动容器,第一次可以直接up,可以跳过build环节,
  4. [root@smsr ~]#docker-compose up d --build
  5. #关闭并删除容器
  6. [root@smsr ~]#docker-compose down
  7. #开启服务
  8. [root@smsr ~]#docker-compose start
  9. #停止服务
  10. [root@smsr ~]#docker-compose stop
  11. #重启服务
  12. [root@smsr ~]#docker-compose restart
  13. #删除服务中的各个容器
  14. [root@smsr ~]#docker-compose rm
  15. #显示容器
  16. [root@smsr ~]#docker-compose ps
  17. #显示容器中的输出内容
  18. [root@smsr ~]#docker-compose logs

3. 导入镜像

  1. [root@smsr ~]# docker load i 镜像名.tar

4. mysql+redis+springboot+nginx

导入相关镜像后,在目录下创建docker-compose.yml文件,之后的相关操作都依赖该文件

  1. [root@smsr ~]# vi docker-compose.yml

进入vim界面后,按Insert键,进入编辑模式,把下面docker-compose.yml内容右键复制进去。
然后按Esc键退出编辑,输入:wq!,回车保存文件即可。

docker-compose.yml:

  1. version : '3'
  2. services:
  3. mysql:
  4. image: mysql:5.7
  5. container_name: mysql
  6. expose:
  7. - "3306"
  8. environment:
  9. MYSQL_DATABASE: test
  10. MYSQL_ROOT_PASSWORD: root
  11. MYSQL_ROOT_HOST: '%'
  12. restart: always
  13. redis:
  14. image: redis:3.0.3
  15. container_name: redis
  16. restart: always
  17. expose:
  18. - "6379"
  19. springboot:
  20. image: springboot
  21. restart: always
  22. container_name: springboot
  23. expose:
  24. - "8083"
  25. environment:
  26. - spring.profiles.active=test
  27. - TZ=Asia/Shanghai
  28. depends_on:
  29. - mysql
  30. - redis
  31. nginx:
  32. image: mynginx
  33. container_name: mynginx
  34. restart: always
  35. ports:
  36. - "80:80"
  37. depends_on:
  38. - springboot

version: 使用第几代语法来编写文件

services: 表示该文件管理启停的服务

image: 指定启动容器的镜像,镜像仓库/标签或者镜像id

container_name: 该服务自定义容器名称

restart: 服务重启策略,指定为always时,容器总是重新启动。no是默认的重启策略,在任何情 况下都不会重启容器。

expose: 暴露端口,但不映射到宿主机,只被连接的服务访问。端口为内部端口

ports: 暴露端口信息。使用宿主:容器 (HOST:CONTAINER)格式

environment: 添加环境变量,mysql中的环境变量为数据库名,数据库密码等。
springboot两个环境变量分别是指定工程运行环境和运行时区
可以在这里添加环境变量覆盖工程中的相应配置,如添加cacheType=jvm可以覆盖工程中的cacheType=redis配置

depends_on: 服务依赖,指定服务之间的依赖关系,表示需要先启动depends_on下面的服务后,再启动本服务。工程中可以使用依赖的服务名代替相关IP信息

工程配置文件:

  1. spring.datasource.url=jdbc:mysql://mysql:3306/test?characterEncoding=utf8
  2. spring.datasource.username=root
  3. spring.datasource.password=root
  4. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  5. spring.redis.hostName=redis
  6. spring.redis.port=6379
  7. spring.redis.pool.maxActive=1024
  8. spring.redis.pool.maxWait=1000
  9. spring.redis.pool.maxIdle=200
  10. spring.redis.timeout=0

nginx配置文件:

  1. upstream webapp{
  2. server springboot:8083 max_fails=3 fail_timeout=20s;
  3. }
  4. server {
  5. listen 80 default_server;
  6. listen [::]:80 default_server;
  7. server_name _;
  8. location /{
  9. proxy_pass http://webapp/;
  10. proxy_http_version 1.1;
  11. proxy_set_header Upgrade $http_upgrade;
  12. proxy_set_header Connection keep-alive;
  13. proxy_set_header Host $host;
  14. proxy_cache_bypass $http_upgrade;
  15. }
  16. }

network_mode: 当需要获取主机信息时如MAC等,可以选择主机模式,此时容器使用和主机同一网络,此时不可使用depends_on中的依赖服务名代替相关IP信息,因所有容器都处于主机网络,可用localhost代替相关IP信息。

  1. #桥接模式
  2. network_mode: "bridge"
  3. #主机模式
  4. network_mode: "host"
  5. #无网络模式(稍后可自定义)
  6. network_mode: "none"
  7. #与指定服务同网络
  8. network_mode: "service:[service name]"
  9. #与指定容器同网络
  10. network_mode: "container:[container name/id]"

注意:后面可以使用up、down等指令启停全部服务。

相关文章

docker-compose

https://www.cnblogs.com/neptunemoon/p/6512121.html
https://blog.csdn.net/pushiqiang/article/details/78682323
https://blog.csdn.net/whusj/article/details/80714200?utm_source=blogxgwz0
https://www.cnblogs.com/anech/p/6873828.html

docker-compose.yml文件详解

https://blog.csdn.net/liguangxianbin/article/details/79492866