资讯详情

Docker安装与部署

一、Docker安装

centos下安装docker

其他系统参考以下文档

https://docs.docker.com/engine/install/centos/

1、移除以前docker相关包

sudo yum remove docker \                   docker-client \                   docker-client-latest \                   docker-common \                   docker-latest \                   docker-latest-logrotate \                   docker-logrotate \                   docker-engine 

2、配置yum源

sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

3、安装Docker

sudo yum install -y docker-ce docker-ce-cli containerd.io # docker-ce安装最新版本Docker,若要指定版本,则docker-ce-20.10.7 # docker-ce docker社区版 # docker-ce-cli docker命令行 # containerd.io docker环境   

4、启动

systemctl enable docker --now # 启动docker 并将其设置为启动  

5、配置加速

额外添加到这里docker核心生产环境配置cgroup

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://qbbzjf4y.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF sudo systemctl daemon-reload sudo systemctl restart docker 

注:阿里云的镜像加速服务仅针对

您也可以使用上述地址,在阿里云产品和服务中搜索容器镜像服务

这是你自己的加速地址

二、几个名词,概念

1、镜像:

镜像类似于应用软件.exe文件,将docker所有内容包装成固定格式,称为镜像。

docker hub相当于应用商店,需要什么镜像可以直接搜索?

https://registry.hub.docker.com但是这个docker hub是国外网站,下载慢,需要做镜像加速

为什么镜像比虚拟机小?

虚拟机会一起包装操作系统,但是docker不会,docker只包装不同的东西,比如不同的工作环境

三、Docker命令

1、获取镜像

docker pull mysql  #默认下载最新版本  镜像名:版本名(也称标签) tag) 下载指定版本: docker pull mysql:5.7.35   ## 下载的镜像都在本地 docker images  #查看所有镜像  # 删除镜像 docker rmi 镜像名:版本号/镜像id docker rmi mysql #如果没有指定版本,默认卸载最新 

2、启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]  docker run  设置项   镜像名   镜像启动运行的命令(默认在镜像中,一般不会写)   docker run --name=mynginx   -d  --restart=always -p  88:80   nginx # 设置项: # --name string    Assign a name to the container:给即将启动的容器起个名字 # -d:后台运行,控制台不会堵塞,保持长期运行 # --restart=always: 开机自启 # -p 端口映射 主机端口:Docker端口    # 检查正在运行的容器 docker ps # 查看所有 docker ps -a # 删除停止的容器 docker rm  容器id/名字 docker rm -f mynginx   #在运行中强制删除#  #停止容器 docker stop 容器id/名字 #再次启动 docker start 容器id/名字  #应用程序启动自启动 #--restart string  Restart policy to apply when a container exits (default "no")  docker update 容器id/名字 --restart=always  docker run --name=mynginx -d --restart=always nginx # 启动容器并设置启动自启动 

3.如何访问外网?Docker端口(端口映射)

3.1.什么是端口映射:

#比如nginx默认端口为80,我们将80端口绑定到主机的88端口, 也就是说,如果我们访问主机,ip:88端口会跳转Docker的80端口  #这个过程是端口映射  

3.2.实现端口映射

#update端口无法修改,因此已启动Docker只能先删除再重新动
docker rm -f mynginx

docker run --name=mynginx   -d  --restart=always -p  88:80   nginx:latest
# 把主机的88端口映射给容器的80端口 


然后使用docker ps即可看到端口映射,0.0.0.0代表任何主机访问88端口都会映射到80

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUy1R68M-1633922164713)(/upload/2021/10/image-a240b190fca544babd111e74ae90b03c.png)]

:如果自定义了端口,那么一定要在安全组中放行该端口

4、进入容器

docker exec -it container_id /bin/bash

5、修改内容

5.1、进入容器内部修改

#进容器里面修改nginx主页显示的内容
/usr/share/nginx/index.html

5.2、挂载数据到外部修改

docker run --name=mynginx   \
-d  --restart=always \
-p  88:80 \
-v /data/html:/usr/share/nginx/html:ro  \
nginx

# 修改页面只需要去 主机的 /data/html
-v 主机的目录:容器的目录  相当于端口映射一样的存在 ,但是并不会把容器的东西复制到主机对应目录下 
:ro 只读,容器里面不能修改,但是主机可以修改
:rw 读写,容器内外都可以读写

#挂载了数据之后,所有的页面必须在主机对应的路径有页面才能访问,否则访问失败403
echo 1111>""

6、提交改变

将自己修改好的镜像提交成一个新的镜像。如果当前容器丢失,可以从已提交的镜像创建容器

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit -a "lcq"  -m "nginx" 341d81f7504f mynginx:v1.0


6.1、将镜像落盘

docker save -o xxx images
docker save -o /homt/lcq/mynginx.tar mynginx:v1.0

6.2、镜像传输

scp /home/lcq/mynginx.tar root@47.113.225.7:/root/

6.3、加载镜像tar包

docker load -i /root/mynginx.tar
#运行测试
docker run -d --name=mynginx -p 88:80 mynginx:v1.0

6.4、推送到docker hub

docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
# 把旧镜像的名字,改成仓库要求的新版名字:new-repo:tagname
docker tag mynginx:v1.0 10535738/mynginx:v1.0

# 登录到docker hub
docker login
# 登录后可以一直保持登陆状态


docker logout(推送完成镜像后退出)

# 推送
docker push 10535738/mynginx:v1.0


# 别的机器下载
docker pull 10535738/mynginx:v1.0

7、命令补充

#查看容器运行日志:
docker logs 容器名/id

docker exec -it container_id /bin/bash

# docker挂在配置文件到外面  nginx
docker run -d -p 88:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx
# -v /data/conf/nginx.conf  这个如果没有创建,会默认从创建一个目录,所以需要我们先把nginx.conf文件准备好
docker cp container_id:/etc/nginx/nginx.conf /data/conf/nginx.conf
docker cp  要复制的内容 目的地

四、使用Dockerfile打包应用

Dockerfile

# 基础环境 从dockerhub上找 注意看linux版本的
FROM openjdk:8-jdk-slim
# 作者
LABEL maintainer=lcq

# 一旦文件打包好,就是一个单独的Linux系统,要把需要的文件先复制进来
COPY target/*.jar /app.jar
#应用程序入口 有ENTRYPOINT 和 CMD两种,区别是:
ENTRYPOINT["java","-jar","app.jar"]
# CMD

打包

docker build -t java-demo:v1.0 .
# -t 给镜像起一个名字
# . 表示当前目录下工作,因为文件都复制在这个目录下

启动

docker run -d -p 8080:8080 --name=java_demo java-demo:v1.0 

标签: r68mt片式功率电感

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台