Docker 基础学习

一、Docker概念

可以理解为全新的虚拟机容器

二、安装Docker

环境: CentOS 7.x

首先更新yum: sudo yum -y update

然后执行安装命令:sudo yum install -y docker

Docker默认位置:/var/lib/docker

#cd进入不了docker文件必须加上sudo

三、管理Docker虚拟机

1、管理Docker虚拟机命令

启动Docker

sudo systemctl start docker

重启Docker

sudo systemctl restart docker
#使用命令查看Docker是否启动
ps -ef | grep docker

关闭Docker

sudo systemctl stop docker

2、Docker流程

docker命令主要流程

3、给当前用户赋予执行docker命令权限

#1、创建docker用户组
sudo groupadd docker
#2、将当前用户添加到docker组中 查看当前用户 whoami
sudo gpasswd -a${user} docker
#3、重启docker进程
sudo systemctl restart docker
#4、重新登录Xshell

四、DaoCloud镜像加速器

1、DaoCloud官网地址

[https://www.daocloud.io/mirror]()

2、配置DaoCloud

2.1 shell下执行命令

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

2.2 执行完上述命令后,多了个逗号,打开etc/docker/daemon.json文件,去掉“,”

#普通用户进入不了etc/docker/daemon.json文件
#使用su命令更换成root用户
vi etc/docker/daemon.json

2.3 重启Docker

sudo systemctl restart docker

五、镜像

1、在线安装镜像

#1、搜索java镜像
docker search java
#2、从dockerhub拉取并安装java镜像
docker pull docker.io/java
#安装指定版本镜像
#docker pull mysql:5.7

2、镜像相关基础命令

#查看所有镜像
docker images
#修改镜像名称
docker tag oldname newname
#备份镜像 (镜像导出)
docker sava java>/home/java.tar.gz
#镜像导入
docker load </home/java.tar.gz
#删除镜像
docker rmi 镜像名或镜像ID
#查看镜像依赖
docker history imageid

3、创建自己的镜像

#在test文件夹下创建一个Dockerfile,并在文件中写入
#FROM centos
#CMD echo "hello-docker!!!"
sudo vi Dockerfile
#-t代表IMAGE的名称, .代表在本文件夹下的Dockerfile
docker build -t hello-docker .

4、Dockerfile语法

#选取baseimage
FROM 
#scratch表示不依赖任何image,从头制作
FROM scratch
#镜像作者信息
LABEL
LABEL maintainer = "LiLi@qq.com"
LABEL version = "1.0"
LABEL description = "this is description"
#执行命令并创建新的image Layer
RUN
RUN yum update && yum install -y vom \
    python-dev #反斜线换行
RUN apt-get update && apt-get install -y perl \
    pwgen --no-install-recommends && rm -rf \
    /var/lib/apt/lists/* #注意清理cache
RUN /bin/bash -c'source $HOME/.bashrc;echo$HOME'
#设定当前工作目录,类似于cd命令
WORKDIR
WORKDIR /root #如果没有会自动创建root
WORKDIR demo
RUN pwd #输出结果/root/demo
#将本地文件添加到docker image中
ADD and COPY
ADD hello / #将hello文件添加到跟目录
ADD test.tar.gz / #添加到根目录并解压
WORKDIR /root ADD hello test/ #添加到/root/test中
WORKDIR /root COPY hello test/
#ADD与COPY区别
ADD除了COPY还可以对tar.gz解压缩
#设置常量
ENV name = "docker"
#取值
$name
#存储和网络
VOLUME:存储
VOLUME home:/soft
-v /home:/soft
EXPOSE:网络相关
#设置容器启动后默认执行的命令和参数
#如果docker run指定了其他命令,CMD命令会被忽略
#如果定义了多个CMD,只有最后一个会执行
CMD
#设置容器启动时运行的命令
#让容器以应用程序或者服务的形式运行
#不会被忽略,一定会执行
ENTRYPOINT

4、Dockerfile学习资料

https://github.com/docker-library/

六、容器

1、容器基础命令

#启动容器
docker run
#-it:代表交互式运行,进入docker环境
#--name代表容器名称
#-p 9000:8000 将宿主机9000端口映射到docker容器的800端口
#-v 将宿主机/home/project映射到容器的/soft目录
#--privileged 代表docker拥有操作宿主机文件的最高权限
docker run -it --name 容器名称 镜像名称 bash
docker run -it -p 9000:8080 -p 9001:8888  --name 容器名称  镜像名称  bash 
docker run -it -v /home/project:/soft --privileged  --name 容器名称 镜像名称 bash
#首先在原环境下mkdir一个test文件
#进入容器后在soft文件夹下创建一个touch docker.txt,并用echo "hello-docker" > docker.txt写入txt文件中,使用cat命令查看所写的内容。结果:宿主机的/usr/gy/test中有文件hello.txt

#查看运行的容器
docker container ls -a
docker ps -a
#退出容器
exit
#暂停容器
docker pause 容器名称
#恢复容器运行
docker unpause 容器名称
#停止容器
docker stop 容器名称
#重新启动容器
docker start -i 容器名称
#删除容器,可以使用"docker rm 容器id"来删除一个终止状态的容器;若想要删除一个运行中的容器,需要加参数-f
sudo docker rm -f 容器id
#删除所有容器
docker rm `docker ps -a -q`
#删除所有退出的容器
docker rm $(docker container ls -f "status=exited" -q)

七、镜像发布

1、镜像上传到dockerhub

注意点:镜像名字:dockerhub-用户名/镜像名称,否则就会出现无权限提示

step1:docker login

登录dockerhub

step2: docker push gy/imagename

step3: 验证:

方法一:登录dockerhub网站,找到提交的镜像

方法二:删除本地的镜像,重新拉去dockerhub上新提交的镜像

八、Docker中部署SpringBoot项目

1、创建项目并部署到阿里云服务器

  1. 基于SpringBoot创建hellodocker的web工程
  2. 将工程打包 mvn clear package -DskipTests
  3. 上传到Linux系统
  4. 防火墙开发5000端口
  5. 阿里云服务器开放安全组5000端口
  6. 项目在服务器运行起来
  7. 浏览器访问
#防火墙开放端口命令
sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent
#重启防火墙
sudo systemctl restart firewalld
#查看端口号是否开启
sudo firewall-cmd --query-port=5000/tcp

2、编写Dockerfile

2.1、基于CentOS 7镜像,编写Dockerfile

from centos:7
label # 可以不加
run yum install -y java
copy docker-hello.jar /app/
workdir /app
expose 5000
entrypoint ["java","-jar","docker-hello.jar"]

2.2构建镜像

docker bulid -t imagenane

2.3启动容器

docker run -p 5000:5000 imagename /bin/bash

九、使用Maven插件基于Dockerfile构建SpringBoot

1、docker-maven-plugin插件

插件地址:https://github.com/spotify/docker-maven-pl...

插件的简单使用

1)修改pom文件

<!-- 注意:Dockerfile文件放到resources目录下 -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <dockerHost>http://docker宿主机ip:2375
        </dockerHost>
        <!-- 注意imageName一定要是符合正则[a-z0-9
  -_.]的,否则构建不会成功 -->
        <imageName>docker-spring-boot-demo
        </imageName>
        <!-- 指定Dockerfile所在的路径 -->
        <dockerDirectory>${basedir}/src/main/
            resources</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.di
                    rectory}</directory>
                <include>${project.build.fin
                    alName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

2)开启docker远程服务

#进入/usr/lib/systemd/system目录,打开docker.service文件
#在[Service]部分的最下面添加下面两行
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
#docker重新读取配置文件,并重启docker服务
sudo systemctl daemon -reload
sudo systemctl restart docker
#查看docker进程
netstat -tnlp

3)构建镜像

mvn clean package docker:build

2、Dockerfile文件编写

Dockerfile放到resource目录下,在docker-maven-plugin插件中已经配置了Dockerfile的加载位置

from centos:7
run yum install -y java
copy docker-hello.jar /app/
workdir /app
expose 5000
entrypoint ["java","-jar","docker-hello.jar"]

3、push镜像

将Docker镜像push到DockerHub上

1)修改maven配置

找到settings.xml并添加一下段落

<servers>
    <server>
        <id>docker-hub</id>
        <username>DockerHub 的账号</username>
        <password>DockerHub 的密码</password>
        <configuration>
            <email>xx@xx.com</email>
        </configuration>
    </server>
</servers>

2)创建Repository

注册一个账号:[https://hub.docker.com/]()

在DockerHub上创建Create Repository

3)修改pom文件

项目pom.xml修改为如下:注意imageName的路径要和repo的路径一致

<properties>
<docker.image.prefix>monotonous</docker.image.prefix>
<docker.repo>fy19-springboot-docker-demo</docker.repo>
</properties>

4)构建镜像 使用maven命令

 mvn clean package docker:build -DpushImage
 mvn clean package docker:build -DpushImageTag
本作品采用《CC 协议》,转载必须注明作者和本文链接
小狗和莉莉
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!