Docker的安装和使用

Docker的安装

Docker依赖的环境

想要安装Docker,需要先讲依赖的环境全部下载,就像Maven依赖JDK一样

yum -y install yum-utils device-mapper-persistent-data lvm2

指定Docker镜像源

Docker CE镜像

默认下载Docker会去国外服务器下载,速度较慢,我们可以设置为阿里云镜像源,速度更快

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

ubuntu

sudo apt-add-repository http://mirrors.aliyun.com/docker-ce/linux/ubuntu/docker-ce.repo

安装Docker

依然采用yum的方式安装

yum makecache fast
yum -y install docker-ce



启动Docker并测试

安装成功后,需要手动启动,设置为开机自启,并测试一下Docker

# 启动Docker服务
systemctl start docker
# 设置开机自动启动
systemctl enable docker
# 测试   运行hello-world 镜像 根据这个镜像 创建容器
docker run hello-world

查看本地全部镜像
docker images

配置阿里云镜像地址

访问该地址

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

复制这段代码,粘贴运行

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

可以看到已经配置进去了

Docker-Compose

之前运行一个镜像,需要添加大量的参宿,可以通过Docker-Compose编写这些参数。而且Docker-Compose可以帮助我们批量的管理容器。这些信息只需要通过一个docker-compose.yml文件去维护即可。

下载并安装Docker-Compose

下载并Docker-Compose

去github官网搜多docker-compose,下载1.24.1版本的Docker-Compose

github地址:https://github.com/docker/compose
下载路径:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64

建议安装方式
# 直接联网下载到本地 /usr/local/bin/docker-compose

curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

进入这个目录,给这个文件夹权限

chmod 777 docker-compose

测试

任意目录输入:

docker-compose

Docker-Compose管理MySQL和Tomcat容器

yml文件以key:value方式来指定配置信息
多个配置信息以换行+锁紧的方式来区分
在docker-compose.yml文件中,不要使用制表符

version: '3.1'
services:
  mysql:        # 服务的名称
    restart: always     # 代表只要docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4      # 指定镜像路径
    container_name: mysql       # 指定容器名称
    ports:
      - 3306:3306       #指定端口号的映射
    environment:
      MYSQL_ROOT_PASSWORD: root     # 指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai     # 指定时区
    volumes:
      - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql      # 映射数据卷
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8
    container_name: tomcat
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /opt/docker_mysql_tomcat/tomcat_webapps:/var/local/tomcat/webapps
      - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs

使用docker-compose命令管理容器

在使用docker-compose的命令时,默认会在当前目录下找docker-compose.yml文件

# 1. 基于docker-compose.yml启动管理的容器
docker-compose up -d

# 2. 关闭并删除容器
docker-compose down

# 3. 开启|关闭|重启已经存在的有docker-compose维护的容器
docker-compose start|stop|restart

# 4. 查看由docker-compose管理的容器
docker-compose ps

# 5. 查看日志
docker-compose logs -f

创建docker-compose.yam文件和要映射的文件夹

启动容器

看到启动成功

docker-compose配合Dockerfile使用

使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器

docker-compose文件

编写docker-compose.yml文件

#yml文件
version: '3.1'
services:
  ssm:
    restart: always
    build:		# 构建自定义镜像
      context: ../		# 指定dockerfile文件的所在路径
      dockerfile: Dockerfile		# 指定Dockerfile文件名称
    image: ssm:1.0.1
    container_name: ssm
    ports:
      - 8082:8080
    environment:
      TZ: Asia/Shanghai
Dockerfile文件

编写Dockerfile文件

from daocloud.io/library/tomcat:8.5.15-jre8
#copy ssm.war /usr/local/tomcat/webapps


镜像的操作

拉取镜像

从好枞阳仓库拉取镜像到本地

docker pull 镜像名称[:tag]

# 举个例子
docker pull daocloud.io/library/tomcat:8.5.15-jre8


删除本地镜像

需要先删除对应的容器,才能删除镜像

docker rmi 镜像id

#例如
docker rmi 9c7a54a9a43c


镜像的导入导出

如果因为网络原因可以通过硬盘的方式传输镜像,虽然不贵放,但是有效,但是这种方式导出的镜像名称和版本都是null,需要手动修改

# 将本地的镜像导出
docker save -o 导出的路径 镜像id
# 例如
docker save -o /usr/local/tmp/mytomcat8 b8dfe9ade316

# 加载本地的镜像文件
docker load -i 镜像文件
# 例如
docker load -i mytomcat8

# 修改镜像名称
docker tag 镜像id 新的镜像名称:版本
# 例如
docker tag b8dfe9ade316 mytomcat:1.0

加载本地镜像

修改镜像名称

使用本地导入的镜像运行一个容器

docker run -d -p 8080:8080 --name tomcat8 b8dfe9ade316

容器操作

运行容器

运行容器需要指定具体镜像,如果镜像不存在,会直接下载

# 简单操作
dorker run 镜像的标识|镜像名称[:tag]

# 常用的参数
docker run -d -p 宿主机端口:容器端口 --name 容器标识 镜像的标识|镜像名称[:tag]
# -d:代表后台运行容器
# -p:宿主机端口:容器端口;为了映射当前Linux的段都和容器的端口
# --name:容器名称,指定容器的名称

# 例如
docker run -d -p 8080:8080 --name tomcat8 b8dfe9ade316 

镜像标识直接复制docker images看到的列表

成功访问

查看当前运行的容器

docker ps

# 查看所有容器
docker ps -a

查看容器日志

docker logs -f 容器id
# -f:可以滚动查看日志的最后几行

进入容器内部

可以进入容器内部进行操作

docker exec -it 容器id bash

# 例如
docker exec -it a927e08235da bash


查看里面的目录,说明一个容器就是一个独立的Linux系统

退出容器

快捷键

control+p+q

复制内容到容器

将宿主机的文件复制到容器内部的指定目录
docker cp 文件名称 容器id:容器内部路径
将容器内部的文件复制到宿主机
docker cp 容器id:容器目录 宿主机目录


尝试修改容器内部文件,在容器内部还不能用vi编辑文件,讲起拷贝到宿主机,修改完,再拷贝回去

启动容器

docker start 容器id

# 重启容器
docker restart 容器id

停止容器

docker stop 容器id

# 停止所有容器
docker stop $(docker ps -qa)

删除容器

docker rm 容器id

# 例如
docker rm ed8fe073fe33

# 删除全部容器
docker rm $(docker ps -qa)

提交运行时容器成为镜像

docker commit -a='作者' -m='备注' 运行时容器ID 新镜像名称

# 例如
docker commit -a='zsx' -m='test' 85650af9f9ac tomcat8new


查看容器元信息

docker inspect 容器id

设置容器自动启动

docker update --restart=always 容器id

# 例如
docker update --restart=always 85650af9f9ac

Docker应用

Docker安装Tomcat

docker run -d -p 8080:8080 --name tomcat8088 daocloud.io/library/tomcat:8.5.15-jre8

Docker安装MySQL

docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 daocloud.io/library/mysql:5.7.4

容器卷

为了部署SSM的工程,需要使用到cp的命令将宿主机内的ssm.war文件复制到容器内部
数据卷:将宿主机的一个目录映射到容器的一个目录中。
可以在宿主机中操作目录中的内容,那么容器内部的文件,也会跟着一起改变

创建数据卷

创建数据卷之后,默认会存放在一个目录下/var/lib/docker/volumes/数据卷名称/_data

docker volume create 数据卷名称

查看数据卷详情

查看数据卷的详细信息,可以查询到存放路径,创建时间等等

docker volume inspect 数据卷名称

查看全部数据卷

docker volume ls

删除数据卷

docker volume rm 数据卷名称

容器映射数据卷

映射有两种方式:

  • 通过数据卷名称映射,如果数据卷不存在,Docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中
  • 通过路径映射数据卷,直接指定一个路径作为数据卷的存放位置,但是这个路径下是空的
# 通过数据卷名称映射
docker run -v 数据卷名称:容器内部的路径 镜像id

# 通过路径映射数据卷
docker run -v 路径:容器内部的路径 惊喜那个id

Dockerfile自定义镜像

我们可以从中央仓库下载一个镜像,也可以自己手动制作一个镜像,需要通过Dockerfile去指定自定义镜像的信息

Dockerfile

创建自定义镜像就需要创建一个Dockerfile,如下为Dockerfile的语言
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于操作系统(centos或者Ubuntu)基础镜像并最终创建一个新镜像;
我们前面讲过的用手动的方式,修改配置文件,或者添加、删除文件目录的方式,来构建一种新镜像;这种手工方式麻烦,容易出错,而且不能复用;
我们这里将Dockerfile,用脚本方式来构建自动化,可复用的,高效率的创建镜像方式,是企业级开发的首选方式
在软件系统开发生命周期中,采用Dockerfile来构建镜像:

  1. 对于开发人员:可以为开发团队提供一个完全一致的开发环境;
  2. 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作;
  3. 对于运维人员:在部署时,可以实现应用的无缝移植。
from: 指定当前自定义镜像依赖的环境  指定基础镜像  一切丑姑娘这里开始构建
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 生命镜像的默认工作目录
run: 执行的命令,可以编写多个
cmd: 需要执行的明林(在workdir下执行的,cmd可以写多个,只以最后一个为准)

# 举个例子,制作SSM容器镜像,而且ssm.war要放在Dockerfile的同级目录下
from daocloud.io/library/tomcat:8.5.15=jre8
copy ssm.war /usr/local/tomcat/webapps

通过Dockerfile制作镜像

编写完Dockerfile后需要通过命令将其只作为镜像,并且要在Dockerfile的当前目录下,之后即可在镜像中查看到指定的镜像信息,注意最后的 .

docker build -t 镜像名称[:tag]

@欧币杰昔

  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值