docker

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dw0ArpDe-1611713716960)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201104185132826.png)]

docker的安装

  1. 查看系统版本

    [root@iz2ze9n36uysr6g8wtg6nsz /]# cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="7"
    
  2. 安装docker

    查看帮助文档https://docs.docker.com/engine/install/centos/

#1.卸载之前的docker

#2.安装必要的包
sudo yum install -y yum-utils

#3.设置阿里云镜像地址
yum-config-manager \
    --add-repo \
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
   
#4.更新yum软件包索引
yum makecache fast
#5.安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
#6.启动docker
sudo systemctl start docker
#7.运行测试的helloword镜像
 sudo docker run hello-world
#查看所有的镜像 
docker images
#

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9jIPTisZ-1611713716964)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101113606066.png)]

# 查看docker版本
docker verison

#阿里云镜像加速
#1.登录阿里云,找到容器镜像服务-》镜像加速器,以后安装将很快
#2.配置使用
#针对Docker客户端版本大于 1.10.0 的用户

#您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://olrf6dso.mirror.aliyuncs.com"]
}
EOF

#重启镜像
sudo systemctl daemon-reload
sudo systemctl restart docker

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MIAkIWUX-1611713716967)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101114615053.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WbWuQwnd-1611713716970)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101114647980.png)]

Docker常用命令

帮助命令

docker version
docker info # docker更加详细的信息
docker 命令 --help # 帮助命令

帮助文档地址:https://docs.docker.com/reference/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UlOAPrUG-1611713716971)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101115115347.png)]

镜像命令

docker images

docker images#官方文档查看
 docker images --help
[root@iz2ze9n36uysr6g8wtg6nsz /]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        10 months ago       13.3kB

# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID
CREATED 
SIZE

#可选项
  -a, --all             Show all images (default hides intermediate images)
  -q, --quiet           Only show numeric IDs
docker images -aq

docker search

#docker hub进行网页搜索
# 用命令
[root@iz2ze9n36uysr6g8wtg6nsz /]# docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10121               [OK]                
mariadb                           MariaDB is a community-developed fork of MyS…   3716                [OK]                

#可选项
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output
docker search mysql --filter=STARS=3000

docker pull下载镜像

docker pull mysql #下载最新版
[root@iz2ze9n36uysr6g8wtg6nsz /]# docker pull mysql
Using default tag: latest 
latest: Pulling from library/mysql 
bb79b6b2107f: Pull complete #分层下载 docker images的核心 联合文件系统
49e22f6fb9f7: Pull complete 
842b1255668c: Pull complete 
9f48d1f43000: Pull complete 
c693f0615bce: Pull complete 
8a621b9dbed2: Pull complete 
0807d32aef13: Pull complete 
a56aca0feb17: Pull complete 
de9d45fd0f07: Pull complete 
1d68a49161cc: Pull complete 
d16d318b774e: Pull complete 
49e112c55976: Pull complete 
Digest: sha256:8c17271df53ee3b843d6e16d46cff13f22c9c04d6982eb15a9a47bd5c9ac7e2d
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #从什么地方下载

#可选信息
  -a, --all-tags                Download all tagged images in the repository
      --disable-content-trust   Skip image verification (default true)
      --platform string         Set platform if server is multi-platform capable
  -q, --quiet                   Suppress verbose output
#指定版本下载
docker pull mysql:5.7  

docker remove 删除

docker rmi -f # remove image f表示全部删除
docker rmi -f id #同过id进行删除
docker rmi -f $(docker images -aq) #删除所有镜像

容器命令

说明:有了镜像才可以创建容器,可以下载一个Linux镜像进行测试

新建容器并启动

docker run [可选参数] image镜像
#可选参数说明
--name="Name" 容器的名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p  指定容器的端口
	-p  主机端口:容器端口 8080:8080 (最常使用的方式)
	-p  容器端口
	容器端口
-P  大P随机指定端口

#测试
# it交互运行 /bin/bash用来指定交互运行的控制台
[root@iz2ze9n36uysr6g8wtg6nsz /]# docker run -it centos /bin/bash
[root@5c499572b015 /]# 
exit #退出容器,并且停止容器
#用快捷键 Ctrl+p+Q 退出容器不停止容器

列出所有的容器

#列出当前正在运行的容器
docker ps
#列出运行过的容器
docker ps -a
#显示刚刚运行的容器
docker ps -a -n=1
#显示容器的编号
docker ps -q

删除容器

docker rm -f 容器id #删除指定容器
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器

启动和停止容器的操作

docker start 容器id
docker restart 容器id
docker stop 容器id 
docker kill 容器id #强制停止当前的容器

常用的其他命令

后台启动容器(启动守候式容器)

docker run -d centos(centos是镜像名)
#问题,发现centos停止了,容器使用后台运行,必须要有一个前台进程,否则就会自动停止

查看日志

docker logs -f -t --tail 10 容器ID # 10表示显示的条数,
#  -t 是加入时间戳

#  -f 跟随最新的日志打印

#   --tail 数字 显示最后多少条
#测试
docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
docker logs -f -t --tail 10 容器ID

查看容器中进程的信息

docker top 容器id
#测试
docker top 12783f1da8fd
[root@iz2ze9n36uysr6g8wtg6nsz ~]# docker top 12783f1da8fd 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                2468                2430                0                   14:47               ?                 00:00:00            /bin/sh -c while true;do echo hello zzyy;sleep 2;done

查看容器内部信息

docker inspect 容器id
[
    {
        "Id": "12783f1da8fdc2d3755ce2478010e76bb728ad543ed99621160d353e9acfd43d",
        "Created": "2020-11-01T06:47:30.165841097Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo hello zzyy;sleep 2;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2468,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-11-01T06:47:30.503220955Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
   
        "Mounts": [],
        "Config": {
            "Hostname": "12783f1da8fd",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true;do echo hello zzyy;sleep 2;done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20200809",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
   
        }
    }
]

进入正在运行的容器并以命令行交互

#我们经常以后台的方式运行容器 ,这样可以用以下方式进入容器
#1.方式一 是在容器中打开新终端
docker exec -it 容器id bashShell
#测试
docker exec -it 12783f1da8fd  /bin/bash
#2.方式二 直接进入容器启动命令的终端,不会启动新的进程
docker attach 容器id

在容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目的主机路径
#测试
#在容器内新建java文件
[root@12783f1da8fd home]# touch chen.java
[root@12783f1da8fd home]# ls
chen.java
#在主机上进行拷贝动作
[root@iz2ze9n36uysr6g8wtg6nsz /]# docker cp 12783f1da8fd:/home/chen.java /home
[root@iz2ze9n36uysr6g8wtg6nsz /]# cd home
[root@iz2ze9n36uysr6g8wtg6nsz home]# ls
admin  chen.java
#此处拷贝是一个手动过程,未来可以使用-v卷的技术,可以实现,自动同步

小结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ctBgqNIX-1611713716973)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101164404034.png)]

attach    Attach to a running container                 # 当前 shell 下 attach 连接指定运行镜像

build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像

commit    Create a new image from a container changes   # 提交当前容器为新的镜像

cp        Copy files/folders from the containers filesystem to the host path   #从容器中拷贝指定文件或者目录到宿主机中

create    Create a new container                        # 创建一个新的容器,同 run,但不启动容器

diff      Inspect changes on a container's filesystem   # 查看 docker 容器变化

events    Get real time events from the server          # 从 docker 服务获取容器实时事件

exec      Run a command in an existing container        # 在已存在的容器上运行命令

export    Stream the contents of a container as a tar archive   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]

history   Show the history of an image                  # 展示一个镜像形成历史

images    List images                                   # 列出系统当前镜像

import    Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]

info      Display system-wide information               # 显示系统相关信息

inspect   Return low-level information on a container   # 查看容器详细信息

kill      Kill a running container                      # kill 指定 docker 容器

load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]

login     Register or Login to the docker registry server    # 注册或者登陆一个 docker 源服务器

logout    Log out from a Docker registry server          # 从当前 Docker registry 退出

logs      Fetch the logs of a container                 # 输出当前容器日志信息

port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口对应的容器内部源端口

pause     Pause all processes within a container        # 暂停容器

ps        List containers                               # 列出容器列表

pull      Pull an image or a repository from the docker registry server   # 从docker镜像源服务器拉取指定镜像或者库镜像

push      Push an image or a repository to the docker registry server    # 推送指定镜像或者库镜像至docker源服务器

restart   Restart a running container                   # 重启运行的容器

rm        Remove one or more containers                 # 移除一个或者多个容器

rmi       Remove one or more images             # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]

run       Run a command in a new container              # 创建一个新的容器并运行一个命令

save      Save an image to a tar archive                # 保存一个镜像为一个 tar 包[对应 load]

search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像

start     Start a stopped containers                    # 启动容器

stop      Stop a running containers                     # 停止容器

tag       Tag an image into a repository                # 给源中镜像打标签

top       Lookup the running processes of a container   # 查看容器中运行的进程信息

unpause   Unpause a paused container                    # 取消暂停容器

version   Show the docker version information           # 查看 docker 版本号

wait      Block until a container stops, then print its exit code   # 截取容器停止时的退出状态值

练习部署ngnix/tomcat/es+kibana

部署ngnix

systemctl start docker
#下载
docker pull nginx:版本号
#查看
docker images
#后台运行 暴露端口
docker run -d --name nginx01 -p 3344:80 nginx
#测试
curl localhost:3344


端口暴露

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hxRFMCYk-1611713716975)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101170153527.png)]

​ 思考问题:我们每次改动nginx配置文件都需要进入容器内部,非常的不方便,如果可以在容器外修改就好了,于是出现了-v数据卷

部署tomcat

#下载镜像
docker pull tomcat
#查看镜像是否下载成功
docker images
#创建tomcat容器并且后台运行tomcat容器 指定端口
docker run -d -p 3355:8080 tomcat
#查看运行的容器
docker ps
#测试
curl localhost:3355
#以命令行的方式进入tomcat
docker exec -it 26d455045262 /bin/bash
#webapps为空外网无法访问
root@26d455045262:/usr/local/tomcat# cd webapps
root@26d455045262:/usr/local/tomcat/webapps# ls
#将webapps。dist下文件全部复制到webapps下
root@26d455045262:/usr/local/tomcat# cp -r webapps.dist/* webapps
#可以成功访问
http://123.57.166.236:3355/

思考问题:我们以后部署项目,如果每次都要进入容器是不是很麻烦,我要是可以在外部提供一个映射到webapps下,我们在外部部署项目,就自动同步到内部就好了

部署es+kibana

#es 暴露的端口很多
#es 十分耗费内存  
docker stats#查看内存使用情况 
#正常下载执行 1核2G的服务器会卡死 因为es要1g多
#通过修改配置文件 -e 环境配置修改来增加内存限制
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
docker stats e07234c6a3c1 
#然后发现内存的使用情况变小了
#测试
crul localhost:9200
[root@iz2ze9n36uysr6g8wtg6nsz ~]# curl localhost:9200
{
  "name" : "01a278b2bfc0",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "QX-VdiHURuy7wWwi-ZmNxA",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ikkbm3SG-1611713716976)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101195042260.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EoCCnnil-1611713716977)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101200452138.png)]

可视化

portainer

docker图形化界面管理工具!提供一个后台的面板供我们操作

docker run -d -p 3366:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

Docker 镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oxwqLxt3-1611713716977)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101205123761.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rNcNYU2w-1611713716978)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101205350648.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GDgsGNIU-1611713716979)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201101220438532.png)]

commit镜像

docker commit提交容器成为一个新副本

docker commit -m="提交的描述信息" -a="作者" 修改过的容器id 自定义镜像名:[TAG]

容器数据卷

什么是容器数据卷

数据存在容器中,当容器删除之后,容器中的数据也会删除,于是希望有这样一个技术用于解决容器中的数据的持久化,将数据同步在本地,其实是将容器中的数据挂载出来。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z3Ci59k7-1611713716980)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102110221012.png)]

使用数据卷

方式一:使用命令来挂载 -v

docker run -it -v 主机目录:容器中的目录 镜像名 终端
# 测试
 docker run -it -v /home/ceshi:/home 0d120b6ccaa8  /bin/bash #0d120b6ccaa8  image的id
#查看数据卷是否挂载成功
docker inspect d57099f65bb7 #d57099f65bb7容器id
#测试容器与宿主机(主机)之间的数据共享

查看数据卷是否挂载成功(双向绑定)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nMMsP8mF-1611713716981)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102113655995.png)]

测试容器与宿主机(主机)之间的数据共享

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcj8Jyl3-1611713716982)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102113500150.png)]

停止容器,在主机上的操作依旧能够同步

mysql安装

本地的操作可以同步到远程数据库中

练习:安装mysql

docker pull mysql
docker images
#运行镜像创建容器;挂载需要同步的文件;配置mysql的密码(通过在docker hub上搜索mysql查看它的使用命令 -e);给容器重命名
 docker run -d -p 3306:3306 -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=1234 --name mysql01 625b734f984
 #发现一个问题如果是镜像选择最新的,无法在本地进行连接,选择5.7就可以
 docker run -d -p 3310:3306 -v /home/mysql1/data:/var/lib/mysql -v /home/mysql1/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
#测试本地连接数据库,新建数据库test

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hTfsCFxm-1611713716984)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102143037818.png)]

#linux中的使用
service mysql start 
#或
mysql
#
mysql -u root -p
#
show databases;
#
show tables;
#
use DB
#
 create table mytable(keyId int primary key, name char(10));
#
insert mytable(keyId,name) values(1,"chen");
#
select * from mytable;

具名和匿名挂载

# 匿名挂载 不指定主机名路径  —P随机指定端口
docker run -d -P --name nginx01 /etc/nginx nginx
#具名挂载 -v 卷名:容器内路径 相当于给卷起名 无/,不是以 /开头
docker run -d -P --name nginx01 -v juming:/etc/nginx nginx
#查看卷 可以看到卷挂载的路径
docker volume inspect juming 
#规定容器的读写权限
docker run -d -P --name nginx01 -v juming:/etc/nginx:ro nginx
docker run -d -P --name nginx01 -v juming:/etc/nginx:rw nginx
#ro 只能通过宿主机来操作,容器内部无法操作

初识Dockerfile

使用构建docker镜像的构建文件,其实是段命令脚本

通过这个脚本可以生成镜像,镜像是一层一层的,脚本的命令是一个一个的,每个命令就是一层

#写一个dockerfile 指 令必须大写
FROM centos

VOLUME ["volume1","volume2"]#挂载 容器内的文件

CMD echo "------end------"

CMD /bin/bash
#创建镜像 -f 那个是文件夹下的dockerfile文件 -t tag 镜像名 .表示在当前文件夹下生成
docker build -f /home/dockerF/dockerfile1 -t cwbImage .
#生成...
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos
 ---> 0d120b6ccaa8
Step 2/4 : VOLUME ["volume1","volume2"]
 ---> Running in 72798fcc8b59
Removing intermediate container 72798fcc8b59
 ---> b7f20e0bdd8c
Step 3/4 : CMD echo "------end------"
 ---> Running in 4e32b45aa8cb
Removing intermediate container 4e32b45aa8cb
 ---> 477404805b70
Step 4/4 : CMD /bin/bash
 ---> Running in bf59306e6750
Removing intermediate container bf59306e6750
 ---> 87e6eda0c235
Successfully built 87e6eda0c235
#查看
[root@iz2ze9n36uysr6g8wtg6nsz dockerF]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
cwbimage              latest              87e6eda0c235        4 minutes ago       215MB
#运行镜像
docker run -it cwbimage /bin/bash

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9YW2ftF-1611713716985)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102151600190.png)]

这个卷一定和外部的两个文件同步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XPPb00YR-1611713716986)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102152755896.png)]

#在colume1下新建文件test.text
#在对应的主机目录下进行查看,看是否进行同步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7dp8HsCg-1611713716987)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102153016871.png)]

因此也可以通过Dockerfile进行挂载

数据卷容器

多个mysql容器之间同步数据

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PvuQSqqN-1611713716988)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102155141451.png)]

–volumes-from

删除docker01 dokcer02依然可以访问这个文件 硬链接 

DockerFile

用来构建docker镜像,是一个参数脚本

  1. 编写dockerfile文件
  2. docker build 构建成为一个镜像
  3. docker run 运行镜像
  4. docker push发布镜像(docker hub,阿里云镜像仓库)
FROM  #基础信息
MAINTAINER
RUN 
ADD 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ysKTxq9L-1611713716989)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102164211288.png)]

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8e2Q01Pa-1611713716991)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102165637378.png)]

自己构建的centos中添加了vim 和net-tools

CMD和ENTRYPOINT

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gt1ilnr8-1611713716992)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102170032869.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3L8F0by6-1611713716993)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102170531028.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p3UuizAf-1611713716994)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201102170354064.png)]

总结

CMD中的命令会被“docker run 镜像id 命令1” 中的命令1替换,而entrypoint则不会,命令1会追加到其命令之后

部署SpringBoot博客项目

#开启docker
systemctl start docker
#创建mysql容器
 docker run -d -p 3306:3306 -v /Blog/mysql/data:/var/lib/mysql -v /Blog/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=1234 --name blogmysql mysql:5.7
#查看
docker ps
#本地测试连接docker中的mysql 并修改项目中jdbc驱动的地址 将localhost改为blogmysql1 用于link
连接成功
#打包springboot package
#编写Dockerfile
FROM java:8

ADD *.jar /blog.jar

VOLUME /tmp

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","./blog.jar"]
#xftp上传jar包和Dockerfile
#在blog文件夹下创建镜像
docker build -f Dockerfile -t myblog:1.0 .
#查看镜像
docker images
#运行镜像创建容器 并且link mysql blogmysql是mysql容器的别名
docker run -p 8080:8080 -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" --name myblog --link blogmysql:blogmysql1 -d 镜像id
#打印日志
docker logs -f 容器id
#测试
curl localhost:8080/

发布镜像

发布镜像到dockerHUB

#登录dockerhub
docker login -u dockerfish007
#247bf7d9db07是镜像id,dockerfish007是dockerhub登录名,/myblog007:1.1为自定义的镜像名称 然后生成一个dockerfish007/myblog007的image
docker tag 247bf7d9db07  dockerfish007/myblog007:1.1
#push到docker hub
docker push dockerfish007/myblog007:1.1

发布镜像到阿里云

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33k3SBkm-1611713716995)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201104201742064.png)]

#登录
docker login --username=牛肉爱上米粉 registry.cn-hangzhou.aliyuncs.com
#
docker tag 247bf7d9db07   registry.cn-hangzhou.aliyuncs.com/cwbstudy/blog:0.1
# 测试
docker images
#
docker push registry.cn-hangzhou.aliyuncs.com/cwbstudy/blog:0.1
#使用
docker pull registry.cn-hangzhou.aliyuncs.com/cwbstudy/blog:0.1

安装redis

安装redis

用yml安装

https://hub.daocloud.io/

version: '3.1'
services:
 redis:
  image: daocloud.io/library/redis:5.0.7-alpine
  restart: always
  container_name: redis
  environment:
   - TZ=Asia/Shanghai
  ports:
   - 6379:6379
#执行命令
docker-compose up -d
#报错没有此命令

解决:

#1.安装pip
yum -y install epel-release
 
yum -y install python-pip
 
#升级
pip install --upgrade pip
#2.安装docker-compose
pip install docker-compose

继续报错:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a3czAXVE-1611713716996)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201119180245385.png)]

解决:

#
pip uninstall pyrsistent
pip install pyrsistent==0.16.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-weYbULdd-1611713716997)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201119180327670.png)]

继续安装


docker-compose up -d

发现还是有错,错误提示如下:

[root@Cwb docker_redis]# docker-compose up -d
/usr/lib/python2.7/site-packages/paramiko/transport.py:33: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release.
  from cryptography.hazmat.backends import default_backend


ERROR: yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
  in "./docker-compose.yml", line 3, column 1
[root@Cwb docker_redis]# 

其实是yaml中不能用tab键,必须用空格

然后下载成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TxlxIPXt-1611713716998)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201119193303436.png)]

连接redis 通过redis-cli连接

#b3为容器标识 id前两位
docker exec -it b3 /bin/sh
#连接
redis-cli

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QgBeebmp-1611713716999)(C:\Users\hello\AppData\Roaming\Typora\typora-user-images\image-20201119194710901.png)]

下载图形界面在windows中操作redis
GitHub 搜索 redis desktop windows

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值