ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库

Docker概述

Dcoker可以解决软件跨环境迁移的问题

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第1张图片

Docker安装

参考链接

为了避免每次命令都输入sudo,可以设置用户权限,注意执行后须注销重新登录

sudo usermod -a -G docker $USER

例如:当前用户为ningan
sudo usermod -a -G docker ningan

安装完成之后,查看docker版本命令:

docker -v
docker --version

Docker架构

菜鸟教程
Docker 包括三个基本概念:

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第2张图片

Docker命令

1.Docker服务相关命令

symtemctl表示system ctrl
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第3张图片

2.Docker镜像相关命令

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第4张图片

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第5张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第6张图片

示例:
docker pull redis:5.0

docker rmi 镜像id或软件:版本(rmi表示:remove image)
docker rmi redis:latest
docker rmi `docker images -q`   #删除所有本地镜像
docker images -q    #列出所有镜像id

如果不知道软件具体的版本号,可以到 docker hub搜索

2.Docker容器相关命令

查看容器
创建容器
进入容器
启动容器
停止容器
删除容器
查看容器信息
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第7张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第8张图片

示例:
$ docker pull ubuntu
$ docker run -it --name=c1 ubuntu /bin/bash
$ docker exec -it c1 /bin/bash  #如果容器退出去了需要再进去

启动/停止/删除容器:都可以通过id或者名称进行
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第9张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第10张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第11张图片

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第12张图片

Docker容器数据卷

1.数据卷概念

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第13张图片

2.配置数据卷

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第14张图片

#讲容器挂载在目录下,实现数据的持久化
$ docker run -it --name=c1 -v /home/ningan/docker/data:/root/data_container  ubuntu:latest /bin/bash

#一个容器挂载在多个目录下  用多个-v参数即可
$ docker run -it --name=c2 -v /home/ningan/docker/data2:/root/data2_container -v /home/ningan/docker/data3:/root/data3_container  ubuntu:latest

#同一个目录挂载不同的容器
$ docker run -it --name=c3 -v /home/ningan/docker/data4:/root/data4_container ubuntu:latest
$ docker run -it --name=c4 -v /home/ningan/docker/data4:/root/data4_container ubuntu:latest

$ docker exec -it c3 /bin/bash  #如果容器退出去了需要再进去

3.数据卷容器

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第15张图片
创建之前先查看刚刚设置的容器,全部删除:

$ docker ps -a 
$ docker rm c1 c2 c3 c4

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第16张图片

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第17张图片

$ docker run –it --name=c3 –v /volume ubuntu:latest /bin/bash 
$ docker run -it --name=c1 --volumes-from c3 ubuntu:latest /bin/bash
$ docker run -it --name=c2 --volumes-from c3 ubuntu:latest /bin/bash
$ docker inspect c3

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第18张图片

Docker应用部署

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第19张图片

(一).部署mysql

1. 搜索mysql镜像

docker search mysql

2. 拉取mysql镜像

docker pull mysql:5.6

出现错误:error pulling image configuration: …

error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/e6/e61c95a9851455112a52f8eb1aab6616569e32e6b8e087b1e3330ea50005508f/data?verify=1608173288-ggeO%2BMLtyayzIRJ%2FmFopTPrMb6Q%3D: dial tcp 104.18.125.25:443: i/o timeout

解决

参考博客
看错误明显是拉镜像的地址不对,无法连接。

由于daemon.json没有配置造成的,需修改daemon.json

vim /etc/docker/daemon.json
权限不够的话,加sudo

增加拉镜像的地址

{
"registry-mirrors":["https://hub-mirror.c.163.com","https://registry.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"]
}

修改后重启docker服务

service docker restart

再次拉取,可以成功拉取
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第20张图片

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

# 在自己自定义的目录下创建mysql目录用于存储mysql数据信息
mkdir mysql
cd mysql
docker run -id \
-p 3307: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

# 注意:现在演示用3306映射到3307,以后直接就是用3306映射到3307
  • 参数说明:
    • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
    • -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
    • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
    • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
    • **-e MYSQL_ROOT_PASSWORD=123456:**初始化 root 用户的密码。

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第21张图片

4. 进入容器,操作mysql

docker exec –it c_mysql /bin/bash

在docker中直接连接mysql

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第22张图片

5. 使用外部机器(eg.主机中的SQLyog)连接容器中的mysql

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第23张图片
在docker中创建数据库test01:
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第24张图片
在外部机器也能直接查看
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第25张图片

(二).部署tomcat

1. 搜索tomcat镜像

docker search tomcat

2. 拉取tomcat镜像

docker pull tomcat

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

# 在自定义目录下创建tomcat目录用于存储tomcat数据信息
mkdir tomcat
cd tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat 
  • 参数说明:

    • **-p 8080:8080:**将容器的8080端口映射到主机的8080端口

      **-v $PWD:/usr/local/tomcat/webapps:**将主机中当前目录挂载到容器的webapps

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第26张图片

4. 使用外部机器访问tomcat

在宿主机上创建test/index.html
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第27张图片
内容为:
在这里插入图片描述

在外部机器上输入:192.168.0.184:8080/test/index.html ,其中192.168.0.184是宿主机的ip,显示如下:
在这里插入图片描述

(三).部署Nginx

1. 搜索nginx镜像

docker search nginx

2. 拉取nginx镜像

docker pull nginx

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

# 在自定义目录下创建nginx目录用于存储nginx数据信息
mkdir nginx
cd nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第28张图片

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;
}

回退到nginx目录,执行:

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
  • 参数说明:
    • -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
    • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
    • -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第29张图片

4. 使用外部机器访问nginx

浏览器输入:192.168.0.184 回车显示403,因为html目录下什么都没有

做如下操作:
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第30张图片
输入:
在这里插入图片描述
刷新浏览器:192.168.0.184,则正常显示:
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第31张图片

(四).部署redis

1. 搜索redis镜像

docker search redis

2. 拉取redis镜像

docker pull redis:5.0

3. 创建容器,设置端口映射

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

此处为什么不创建redis目录了呢?
因为没有目录映射,所以不需要创建

4. 使用外部机器连接redis

redis-cli.exe -h 192.168.0.184 -p 6379

具体操作:

进入cmd窗口,找到自己的redis目录:
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第32张图片
在这里插入图片描述

Dockerfile

1.Docker镜像简介

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第33张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第34张图片

2.Docker镜像制作

(1).容器转为镜像

这种方式不太常用,如需学习具体案例操作,移步:该网站P503
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第35张图片

目录挂载的不会生效,其他的都会生效

(2).Dockerfile

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第36张图片

关键字 作用 备注
FROM 指定父镜像 指定dockerfile基于那个image构建
MAINTAINER 作者信息 用来标明这个dockerfile谁写的
LABEL 标签 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN 执行命令 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”]
CMD 容器启动命令 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]
ENTRYPOINT 入口 一般在制作一些执行就关闭的容器中会使用
COPY 复制文件 build的时候复制文件到image中
ADD 添加文件 build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV 环境变量 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG 构建参数 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME 定义外部可以挂载的数据卷 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]
EXPOSE 暴露端口 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR 工作目录 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER 指定执行用户 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK 健康检查 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD 触发器 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL 发送信号量到宿主机 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL 指定执行脚本的shell 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell

(2.1).自定义镜像

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第37张图片
虽然视频网站里定义的是centos,但是这里演示的是定义ubuntu的镜像

这里看到默认登录路径为root,并且不可以使用vim

# 这里看到默认登录路径为root,并且不可以使用vim
ningan@ubuntu:~/docker$ docker exec -it c1 /bin/bash
Error response from daemon: Container dc461df06514c3f621464120dc4fe02256e91dc6354baa92a3abe9c2da227522 is not running
ningan@ubuntu:~/docker$ 
ningan@ubuntu:~/docker$ docker start c1
c1
ningan@ubuntu:~/docker$ 
ningan@ubuntu:~/docker$ docker exec -it c1 /bin/bash
root@dc461df06514:/# 
root@dc461df06514:/# vim a.txt
bash: vim: command not found
root@dc461df06514:/# vi a.txt
bash: vi: command not found
root@dc461df06514:/# 
root@dc461df06514:/# touch a.txt
root@dc461df06514:/# exit
exit
ningan@ubuntu:~/docker$ 

开始制作镜像:

ningan@ubuntu:~/docker$ mkdir docker_files
mkdir: cannot create directory ‘docker_files’: Permission denied
ningan@ubuntu:~/docker$ sudo mkdir docker_files
[sudo] password for ningan: 
ningan@ubuntu:~/docker$ 
ningan@ubuntu:~/docker$ cd docker_files/
ningan@ubuntu:~/docker/docker_files$ 
ningan@ubuntu:~/docker/docker_files$ vim ubuntu_dockerfile
ningan@ubuntu:~/docker/docker_files$ sudo vim ubuntu_dockerfile
ningan@ubuntu:~/docker/docker_files$ 

ubuntu_dockerfile文件中的内容:(注意:这样子写会报错,可以直接往下看,也可以先尝试一下)

FROM ubuntu:latest

MAINTAINER  itheima <[email protected]>

RUN apt-get install -y vim

WORKDIR /usr

CMD /bin/bash

执行之后报错: E: Unable to locate package vim

ningan@ubuntu:~/docker/docker_files$ docker build -f ubuntu_dockerfile -t itheima_ubuntu:1 .
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM ubuntu:latest
 ---> f643c72bc252
Step 2/5 : MAINTAINER  itheima <[email protected]>
 ---> Running in cdcbe50bedd2
Removing intermediate container cdcbe50bedd2
 ---> cc1a7fac3f37
Step 3/5 : RUN apt-get install -y vim
 ---> Running in 118f82f6f213
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package vim
The command '/bin/sh -c apt-get install -y vim' returned a non-zero code: 100
ningan@ubuntu:~/docker/docker_files$ 

修改文件内容为:
RUN apt-get update && apt-get install apt-file -y && apt-file update && apt-get update && apt-get install vim -y

FROM ubuntu:latest

MAINTAINER  itheima <[email protected]>

RUN apt-get update && apt-get install apt-file -y && apt-file update && apt-get update && apt-get install vim -y

WORKDIR /usr

CMD /bin/bash

再次运行:

ningan@ubuntu:~/docker/docker_files$ docker build -f ubuntu_dockerfile -t itheima_ubuntu:1 .

执行成功
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第38张图片

测试一下,工作目录位于/usr下面,并且vim也可以用了

ningan@ubuntu:~/docker/docker_files$ docker run -it --name=cc itheima_ubuntu:1
root@1ebe42d9e96d:/usr# 
root@1ebe42d9e96d:/usr# vim a.txt

(2.2).部署springboot项目

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第39张图片

(2.2.1).先准备好springboot项目

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第40张图片
直接访问结果如下,可以正常访问!
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第41张图片

(2.2.2) 打jar包,并进行测试

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第42张图片

找到jar包的地址
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第43张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第44张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第45张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第46张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第47张图片
发现jar包没有任何问题!

(2.2.3) 将jar包上传到ubuntu系统上并新建dockerfile文件

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第48张图片

内容为:

FROM java:8
MAINTAINER itheima <[email protected]>
ADD docker-1.0-SNAPSHOT.jar app.jar
CMD java -jar app.jar

然后执行:

$ docker build -f springboot_dockerfile -t app .

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第49张图片

新建容器并进入:
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第50张图片

在主机上访问(其中网址为容器宿主机的ip),可以正常访问:
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第51张图片

Docker Compose

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第52张图片

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第53张图片

1.安装卸载

安装Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

卸载Docker Compose

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

2.使用docker compose编排nginx+springboot项目

步骤

需求:启动一个app的项目容器,再启动一个nginx容器,通过nginx反向代理来访问app容器里面的项目

  1. 创建docker-compose目录
mkdir docker-compose
cd docker-compose
  1. 编写 docker-compose.yml 文件
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. 创建./nginx/conf.d目录
mkdir -p ./nginx/conf.d    #-p可以创建多重目录
  1. 在./nginx/conf.d目录下 编写itheima.conf文件
server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://app:8080;
    }
   
}
  1. 在~/docker-compose 目录下 使用docker-compose 启动容器
docker-compose up
  1. 测试访问
http://192.168.XXX.XXX/hello

具体操作

# 终端1
ningan@ubuntu:~/docker$ mkdir docker-compose
ningan@ubuntu:~/docker$ cd docker-compose/
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ vim docker-compose.yml
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ mkdir -p ./nginx/conf.d
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ ll
total 16
drwxr-xr-x 3 ningan ningan 4096 Dec 18 07:23 ./
drwxr-xr-x 4 ningan ningan 4096 Dec 18 07:22 ../
-rw-r--r-- 1 ningan ningan  190 Dec 18 07:23 docker-compose.yml
drwxr-xr-x 3 ningan ningan 4096 Dec 18 07:23 nginx/
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ cd nginx/conf.d
ningan@ubuntu:~/docker/docker-compose/nginx/conf.d$ 
ningan@ubuntu:~/docker/docker-compose/nginx/conf.d$ vim itheima.conf
ningan@ubuntu:~/docker/docker-compose/nginx/conf.d$ 
ningan@ubuntu:~/docker/docker-compose/nginx/conf.d$ cd ../..
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ ll
total 16
drwxr-xr-x 3 ningan ningan 4096 Dec 18 07:23 ./
drwxr-xr-x 4 ningan ningan 4096 Dec 18 07:22 ../
-rw-r--r-- 1 ningan ningan  190 Dec 18 07:23 docker-compose.yml
drwxr-xr-x 3 ningan ningan 4096 Dec 18 07:23 nginx/
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ docker-compose up
Creating network "docker-compose_default" with the default driver
Pulling nginx (nginx:)...
ERROR: Head https://registry-1.docker.io/v2/library/nginx/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fnginx%3Apull&service=registry.docker.io: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ docker pull nginx
... 下载太慢了 没有办法只好换源了
 

# 终端2
ningan@ubuntu:~$ sudo vim /etc/docker/daemon.json

文件中写入:
{
“registry-mirrors”:[“https://docker.mirrors.ustc.edu.cn”]
}

ningan@ubuntu:~$ 
ningan@ubuntu:~$ systemctl daemon-reload 
ningan@ubuntu:~$ systemctl restart docker
ningan@ubuntu:~$ 
ningan@ubuntu:~$ 
ningan@ubuntu:~$ docker pull nginx   # 下载很快了
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
ningan@ubuntu:~$ 
ningan@ubuntu:~$ 
ningan@ubuntu:~$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
6ec7b7d162b2: Pull complete 
cb420a90068e: Pull complete 
2766c0bf2b07: Pull complete 
e05167b6a99d: Pull complete 
70ac9d795e79: Pull complete 
Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
ningan@ubuntu:~$ 


# 终端1
ningan@ubuntu:~/docker/docker-compose$ docker-compose up


可以看到,springboot已经启动了
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第54张图片

浏览器通过nginx的80端口反向代理来访问app容器里面的项目,成功!
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第55张图片

Docker 私有仓库

一、私有仓库搭建

# 1、拉取私有仓库镜像 
docker pull registry
# 2、启动私有仓库容器 
docker run -id --name=registry -p 5000:5000 registry
# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功
# 4、修改daemon.json   
vim /etc/docker/daemon.json    
# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip 
{"insecure-registries":["私有仓库服务器ip:5000"]} 
# 5、重启docker 服务 
systemctl restart docker
docker start registry

二、将镜像上传至私有仓库

# 1、标记镜像为私有仓库的镜像     
docker tag centos:7 私有仓库服务器IP:5000/centos:7
 
# 2、上传标记的镜像     
docker push 私有仓库服务器IP:5000/centos:7

三、 从私有仓库拉取镜像

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

演示如下:

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第56张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第57张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第58张图片
成功!

docker容器虚拟化 与 传统虚拟机比较

ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第59张图片
ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_第60张图片

说明:本博客中的内容大部分来源于 该网站 的课程ppt,主要作为自己学习的笔记使用!

你可能感兴趣的:(Java进阶,Linux,docker,linux)