1、什么是docker

1.1、容器技术
1.2、容器与虚拟机比较虚拟机:
虚拟机:
1.3、docker特点
1、更高效的利用系统资源
2、更快速的启动时间
3、一致的运行环境
4、持续支付和部署
5、更轻松的迁移
6、更轻松的维护和扩展
2、docker组件学习
2.1、docker客户端和服务器

2.2、docker镜像
2.3、registry(注册中心/镜像仓库)
2.4、docker容器

3、docker的安装
3.1、准备工作
1、准备linux服务器

2、清除系统残余项
sudo yum remove docker

3、安装下载docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2


4、添加阿里云的软件源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
上面地址显示不可用,可以将地址换成
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、更新yum缓存
sudo yum makecache fast
3.2、安装docker
1、安装docker
sudo yum -y install docker-ce
2、启动docker
sudo systemctl start docker
docker info

3、开机启动docker
sudo systemctl start docker
docker info
sudo systemctl enable docker
4、移除docker-ce服务
sudo yum remove docker-ce
5、删除docker依赖项
sudo rm -rf /var/lib/docker
4、docker常用命令
docker search 镜像名称 //搜索镜像
docker pull 镜像名称:版本号 //拉取对应版本的镜像
docker pull 镜像名称 //默认拉取最新的镜像
docker images //查看本地已下载的镜像
docker ps //查看正在运行的容器
docker ps -a //查看所有的容器(包括run、stop、exited状态的)
docker container ls //查看正在运行的容器
docker rm 容器id //只能删除没有在运行的容器
docker rm -f 容器id //可以删除正在运行的容器
docker run -p 本地主机端口号:容器服务端口号 --name 容器名字 [-e 配置信息修改] -d 镜像名字
docker start 容器id //启动容器
docker stop 容器id //终止容器
docker rmi 镜像名称orid //删除镜像
docker rmi 镜像名称ori --force //强制删除镜像
4.1、停止与启动容器
4.2、文件拷贝
docker cp 需要拷贝的文件或目录容器名称:容器目录
docker cp 容器名称:容器目录需要拷贝的文件或目录
docker cp /1.txt redis:/ #把linux中的/1.txt文件,拷贝到redis容器中的 / 根目录 docker
cp redis:/2.txt / #把redis容器中的 /2.txt ,拷贝到 linux的 / 根目录
4.3、目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7
4.4、查看容器ip地址
docker inspect mycentos2
docker inspect --format='{{.networksettings.ipaddress}}' mycentos2
4.5、删除容器
docker rm docker ps -a -q
4.6、登录容器

1、使用attach进入容器
docker attach 53

除了使用容器id进入容器之外,也可以使用容器的别名进入容器:
docker attach java
2、使用exec命令进入容器
docker exec -it java /bin/bash
docker exec -it 53 /bin/bash

5、docker安装常用软件
5.1、安装 mysql
docker search mysql

我们这里安装mysql8.0 的,命令如下:
docker pull mysql:8.0
docker pull mysql //默认拉取最新版本


docker images mysql:8.0

docker run -p 3307:3306 --name mysql8.0 -e mysql_root_password=root -d mysql:8.0
参数说明:
-p 将本地主机的端口映射到docker容器端口(因为本机的3306端口已被其它版本占用,所以使用3307)
--name 容器名称命名
-e 配置信息,配置root密码
-d 镜像名称
docker ps
docker exec -it mysql8.0 bash
mysql -uroot -p
然后输入密码root就可以登录成功了

select version();

5.2、安装jdk
docker pull primetoninc/jdk:1.8

docker run -d -it --name java primetoninc/jdk:1.8
参数说明:
run:启动一个镜像容器
-d:指定容器运行于后台
-it:-i 和 -t 的缩写;
-i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name:第一个“java”是为容器指定了一个别名,而第二个“java”指的是下载镜像时的名称
java -versrion

6、docker中部署jar包运行
6.1、准备一个jar包
pom依赖:
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/pom/4.0.0"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://maven.apache.org/pom/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelversion>4.0.0</modelversion>
<groupid>cn.test</groupid>
<artifactid>dockerdemo</artifactid>
<version>1.0-snapshot</version>
<!--1、引入springboot-->
<parent>
<groupid> org.springframework.boot</groupid>
<artifactid>spring-boot-starter-parent</artifactid>
<version>2.0.5.release</version>
</parent>
<dependencies>
<!--web依赖-->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-maven-plugin</artifactid>
<version>2.3.5.release</version>
<configuration>
<!--自己手动导入的jar包也需要打包-->
<includesystemscope>true</includesystemscope>
</configuration>
</plugin>
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-surefire-plugin</artifactid>
<version>2.12.4</version><configuration>
<!--测试包下的代码出错不影响项目的编译-->
<testfailureignore>true</testfailureignore>
<!--跳过测试包代码-->
<skiptests>true</skiptests>
</configuration>
</plugin>
</plugins>
<finalname>dockerdemo</finalname>
</build>
</project>
@springbootapplication
@enablescheduling
public class app {
public static void main(string[] args){
springapplication.run(app.class, args);
}
}
import org.springframework.scheduling.annotation.scheduled;
import org.springframework.stereotype.component;
import java.util.date;
@component
public class testtask {
@scheduled(fixedrate = 2000)
public void test(){
system.out.println("定时任务:每隔两秒执行一次" + new date());
}
}
6.2、创建dockerfile文件


# jdk 是一个已有的包含 jdk 的镜像
from java
# 作者签名
maintainer libigtong
# 简化 jar 的名字路径
copy dockerdemo.jar /app.jar
# 执行 java -jar 命令 (cmd:在启动容器时才执行此行。run:构建镜像时就执行此行)
cmd java -jar /app.jar
# 设置对外端口为 8080
expose 8080

6.3、生成镜像
docker build -t docker_test:docker_demo -f /opt/dockertest/dockerfile
/opt/dockertest

6.4、启动镜像
docker run --name dockerapp -p 8080:8080 -d 28dae64bba9d
6.5、启动容器
docker start cc7c3a1582d0

6.6、运行效果查看
docker attach cc7c3a1582d0

docker stop cc7c3a1582d0

发表评论