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

注意:阿里云的这个镜像加速服务只针对于Docker客户端版本大于 1.10.0 的用户

上面这个地址也可以使用你们自己的,阿里云产品与服务中搜索容器镜像服务

这个就是你自己的加速地址

二、几个名词,概念

1、镜像:

镜像就像是一个应用软件,类似于.exe文件,将docker中的所有内容打包成固定格式,就叫镜像。

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

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

2、镜像相对于虚拟机为什么小?

虚拟机会将操作系统一起打包,但是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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值