Docker

1.Docker概述

        Docker包括三个基本概念:镜像、容器、仓库

镜像(Image)Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

2.Docker安装

        Docker的安装分为外网和内网安装。

2.1 外网安装Docker

2.1.1 Ubuntu安装Docker

root@ubuntu:/home/lqs# wget -qO- https://get.docker.com/ | sh

2.1.2 配置Docker镜像加速

        Docker镜像加速地址:

  • 科大镜像:https://docker.mirrors.ustc.edu.cn/
  • 网易:https://hub-mirror.c.163.com/
  • 阿里云:https://<你的ID>.mirror.aliyuncs.com
  • 七牛云加速器:https://reg-mirror.qiniu.com

        这里使用阿里云镜像加速阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,查看阿里云加速地址。

  • Windows配置加速地址

        打开Docker Destop程序,在【Settings】-【Docker Engine】里面,配置加速地址:

{
  ...
  "registry-mirrors":["https://bbx6hlst.mirror.aliyuncs.com"],
  ...
}
  • Ubuntu16.04+、Debian8+、CentOS7配置加速地址

        对于使用 systemd 的系统,查看如下文件/etc/docker/daemon.json,如果没有daemon.json文件,则需要使用如下命令新建一个文件(注意mdkir命令是新建一个文件夹)

sudo touch daemon.json

        如果文件存在,则使用sudo vim /etc/docker/daemon.json命令,写入如下内容:

{
    "registry-mirrors":[
        "https://reg-mirror.qiniu.com/"
    ]
}

        之后输入以下命令,重新启动服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

        检查加速配置是否生效,输入命令docker info,如果看到以下内容,则表示配置成功:

Registry Mirrors:
  https://bbx6hlst.mirror.aliyuncs.com/

2.2 内网安装Docker

        Docker离线安装包下载地址:Index of linux/static/stable/x86_64/,这里以在Ubuntu里面安装为例,版本选择的是 docker-20.10.17.tgz

  • 通过Xftp将Docker离线安装包上传到Ubuntu任一文件目录下。
  • 使用tar命令,解压Docker离线安装包
tar -zxvf docker-20.10.17.tgz
  • 使用mv命令,将解压后的Docker离线安装包文件,移到可执行文件目录下
mv docker/* /usr/bin
  • 配置docker.service:vim /usr/lib/systemd/system/docker.service,输入以下内容
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service

[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

StartLimitBurst=3

StartLimitInterval=60s

LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

TasksMax=infinity

Delegate=yes

KillMode=process
OOMScoreAdjust=-500

[Install]
WantedBy=multi-user.target
  • 启动Docker服务
systemctl daemon.reload
systemctl start docker.service
systemctl info

#开机自启
systemctl enable docker

3.Docker常用命令

docker -v查看Docker版本
docker info查看Docker配置信息
docker images

查看本地主机上的镜像

docker pull

获取一个镜像

docker pull redis(获取redis镜像)

docker rmi

删除镜像

docker rmi nginx:latest(表示删除版本为latest的Nginx镜像)

docker run

创建并启动一个容器

docker run --name ixuea-redis -p 6379:6379 redis:latest

docker ps查看已经启动的容器
docker ps -a查看所有容器(包括已启动和未启动)
docker start

启动容器

docker start redis

docker stop

停止容器

docker stop redis

docker rm

删除未运行的容器

docker rm redis

docker rm -f

删除正在运行的容器

docker rm -f redis

4.Docker 镜像(Images)    

4.1 Docker官方镜像仓库

        官方镜像仓库地址:Docker Hub,带有DOCKER OFFICIAL IMAGE的是官方镜像。如下图所示:

 4.2 查看本机上的镜像

        使用docker images命令,来查看本地主机上的镜像

root@lqs-virtual-machine:/home/lqs# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
redis         latest    7614ae9453d1   7 months ago    113MB
hello-world   latest    feb5d9fea6a5   10 months ago   13.3kB

        字段含义如下:

REPOSITORY表示镜像的仓库源
TAG镜像的标签,代表这个镜像的版本
IMAGE ID镜像ID
CREATED镜像创建时间
SIZE镜像大小

4.3 获取一个新的镜像

        使用docker pull命令来获取一个新的镜像,如下所示,获取安装Ngnix,#是加上去对应内容的注释,用于解释具体含义:

root@ubuntu:/home/lqs# docker pull nginx
Using default tag: latest
# 表示从library/nginx下载
latest: Pulling from library/nginx
# docker镜像使用类似Git的方式管理,同时采用分层技术
1efc276f4ff9: Already exists 
baf2da91597d: Pull complete 
05396a986fd3: Pull complete 
6a17c8e7063d: Pull complete 
27e0d286aeab: Pull complete 
b1349eea8fc5: Pull complete 
# docker文件的签名
Digest: sha256:790711e34858c9b0741edffef6ed3d8199d8faa33f2870dea5db70f16384df79
# 下载完成
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

4.4 Docker导入导出镜像

        1.导出镜像

docker save -o nginx.tar nginx:latest

        2.导入镜像

docker load -i nginx.tar

5.容器

5.1 创建并启动一个容器

         使用命令docker run,如下所示,创建并启动一个Nginx容器:

docker run --rm --name lqs-nginx -p 80:80 nginx:latest

        字段含义如下:

docker run表示创建一个容器
--rm表示退出后,自动删除该容器。
--name表示给这个容器取一个名字
-p表示端口映射,格式为主机端口:容器端口,将容器端口映射到当前主机的端口,这样访问当前主机端口,就能访问到容器的端口
nginx:latest表示使用nginx镜像,latest表示使用最新的版本

           运行成功后,浏览器访问http://localhost:80/,就能看到Nginx默认页面了,如下所示:

  

6.Docker部署项目

  • 找一个目录存放相关文件,这里选择的目录为:/home/lqs/Work/Test
  • 在Test目录下,创建Dockerfile文件       

        使用命令touch Dockerfile来创建Dcokerfile文件,然后使用命令vim Dockerfile,编辑Dockerfile,输入以下内容:

#指定基础镜像,不需要另外安装jdk
FROM java:8
#维护者
MAINTAINER lqs
#将本地文件添加到容器中,并更名为sms-send.jar
COPY sms-send.jar sms-send.jar
#指定访问端口,与yml文件汇总的端口一致
EXPOSE 8080
#容器启动时,运行该程序
ENTRYPOINT ["java", "-jar", "sms-send.jar"]
  • 将jar包放在Test目录下,目录结构如下所示
lqs@lqs-virtual-machine:~/Work/Test$ ls -l
total 231044
-rw-rw-r-- 1 lqs lqs       118  8月 19 15:53 Dockerfile
drwxrwxr-x 2 lqs lqs      4096  8月 19 12:01 logs
-rw-rw-r-- 1 lqs lqs 236579642  8月 19 11:29 sms-send.jar
  • 构建镜像
docker build -t sms-send .
  • 创建并启动容器
docker run -p 8080:8080 --name sms-send \
> -v /home/lqs/Work/Test/logs:/home/lqs/Work/Test/logs \
> -d sms-send

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckyliuqs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值