Docker簡單入門

一、Docker概念

可以理解為全新的虛擬機(jī)容器

二、安裝Docker

環(huán)境: CentOS 7.x

首先更新yum: sudo yum -y update

然后執(zhí)行安裝命令:sudo yum install -y docker

Docker默認(rèn)位置:/var/lib/docker

#cd進(jìn)入不了docker文件必須加上sudo

三、管理Docker虛擬機(jī)

1、管理Docker虛擬機(jī)命令

啟動Docker

sudo systemctl start docker

重啟Docker

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

關(guān)閉Docker

sudo systemctl stop docker

2、Docker流程

docker命令主要流程

3、給當(dāng)前用戶賦予執(zhí)行docker命令權(quán)限

#1、創(chuàng)建docker用戶組
sudo groupadd docker
#2、將當(dāng)前用戶添加到docker組中 查看當(dāng)前用戶 whoami
sudo gpasswd -a${user} docker
#3、重啟docker進(jìn)程
sudo systemctl restart docker
#4、重新登錄Xshell

四、DaoCloud鏡像加速器

1、DaoCloud官網(wǎng)地址

https://www.daocloud.io/mirror

2、配置DaoCloud

2.1 shell下執(zhí)行命令

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

2.2 執(zhí)行完上述命令后,多了個逗號,打開etc/docker/daemon.json文件,去掉“,”

#普通用戶進(jìn)入不了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、鏡像相關(guān)基礎(chǔ)命令

#查看所有鏡像
docker images
#修改鏡像名稱
docker tag oldname newname
#備份鏡像 (鏡像導(dǎo)出)
docker sava java>/home/java.tar.gz
#鏡像導(dǎo)入
docker load </home/java.tar.gz
#刪除鏡像
docker rmi 鏡像名或鏡像ID
#查看鏡像依賴
docker history imageid

3、創(chuàng)建自己的鏡像

#在test文件夾下創(chuàng)建一個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"
#執(zhí)行命令并創(chuàng)建新的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'
#設(shè)定當(dāng)前工作目錄,類似于cd命令
WORKDIR
WORKDIR /root #如果沒有會自動創(chuàng)建root
WORKDIR demo
RUN pwd #輸出結(jié)果/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區(qū)別
ADD除了COPY還可以對tar.gz解壓縮
#設(shè)置常量
ENV name = "docker"
#取值
$name
#存儲和網(wǎng)絡(luò)
VOLUME:存儲
VOLUME home:/soft
-v /home:/soft
EXPOSE:網(wǎng)絡(luò)相關(guān)
#設(shè)置容器啟動后默認(rèn)執(zhí)行的命令和參數(shù)
#如果docker run指定了其他命令,CMD命令會被忽略
#如果定義了多個CMD,只有最后一個會執(zhí)行
CMD
#設(shè)置容器啟動時運(yùn)行的命令
#讓容器以應(yīng)用程序或者服務(wù)的形式運(yùn)行
#不會被忽略,一定會執(zhí)行
ENTRYPOINT

4、Dockerfile學(xué)習(xí)資料

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

六、容器

1、容器基礎(chǔ)命令

#啟動容器
docker run
#-it:代表交互式運(yùn)行,進(jìn)入docker環(huán)境
#--name代表容器名稱
#-p 9000:8000 將宿主機(jī)9000端口映射到docker容器的800端口
#-v 將宿主機(jī)/home/project映射到容器的/soft目錄
#--privileged 代表docker擁有操作宿主機(jī)文件的最高權(quán)限
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
#首先在原環(huán)境下mkdir一個test文件
#進(jìn)入容器后在soft文件夾下創(chuàng)建一個touch docker.txt,并用echo "hello-docker" > docker.txt寫入txt文件中,使用cat命令查看所寫的內(nèi)容。結(jié)果:宿主機(jī)的/usr/gy/test中有文件hello.txt

#查看運(yùn)行的容器
docker container ls -a
docker ps -a
#退出容器
exit
#暫停容器
docker pause 容器名稱
#恢復(fù)容器運(yùn)行
docker unpause 容器名稱
#停止容器
docker stop 容器名稱
#重新啟動容器
docker start -i 容器名稱
#刪除容器,可以使用"docker rm 容器id"來刪除一個終止?fàn)顟B(tài)的容器;若想要刪除一個運(yùn)行中的容器,需要加參數(shù)-f
sudo docker rm -f 容器id
#刪除所有容器
docker rm `docker ps -a -q`
#刪除所有退出的容器
docker rm $(docker container ls -f "status=exited" -q)

七、鏡像發(fā)布

1、鏡像上傳到dockerhub

注意點(diǎn):鏡像名字:dockerhub-用戶名/鏡像名稱,否則就會出現(xiàn)無權(quán)限提示

step1:docker login

登錄dockerhub

step2: docker push gy/imagename

step3: 驗(yàn)證:

方法一:登錄dockerhub網(wǎng)站,找到提交的鏡像

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

八、Docker中部署SpringBoot項(xiàng)目

1、創(chuàng)建項(xiàng)目并部署到阿里云服務(wù)器

  1. 基于SpringBoot創(chuàng)建hellodocker的web工程
  2. 將工程打包 mvn clear package -DskipTests
  3. 上傳到Linux系統(tǒng)
  4. 防火墻開發(fā)5000端口
  5. 阿里云服務(wù)器開放安全組5000端口
  6. 項(xiàng)目在服務(wù)器運(yùn)行起來
  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構(gòu)建鏡像

docker bulid -t imagenane

2.3啟動容器

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

九、使用Maven插件基于Dockerfile構(gòu)建SpringBoot

1、docker-maven-plugin插件

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

插件的簡單使用

1)修改pom文件

<!-- 注意:Dockerfile文件放到resources目錄下 -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <dockerHost>http://docker宿主機(jī)ip:2375
        </dockerHost>
        <!-- 注意imageName一定要是符合正則[a-z0-9
  -_.]的,否則構(gòu)建不會成功 -->
        <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遠(yuǎn)程服務(wù)

#進(jìn)入/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服務(wù)
sudo systemctl daemon -reload
sudo systemctl restart docker
#查看docker進(jìn)程
netstat -tnlp

3)構(gòu)建鏡像

mvn clean package docker:build

2、Dockerfile文件編寫

Dockerfile放到resource目錄下,在docker-maven-plugin插件中已經(jīng)配置了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)創(chuàng)建Repository

注冊一個賬號:https://hub.docker.com/

在DockerHub上創(chuàng)建Create Repository

3)修改pom文件

項(xiàng)目pom.xml修改為如下:注意imageName的路徑要和repo的路徑一致

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

4)構(gòu)建鏡像 使用maven命令

 mvn clean package docker:build -DpushImage
 mvn clean package docker:build -DpushImageTag
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容