云原生-01-Docker入门到实战

Docker入门到实战

  • 1、Docker安装
    • 1.1 移除以前docker相关包
    • 1.2 配置yum源
    • 1.3 安装docker
    • 1.4 启动docker
    • 1.5 验证启动成功
    • 1.6 配置aliyun加速(阿里云服务器)
    • 1.7 安装过程中遇到的报错
      • 1.7.1 docker加速地址及相关配置有误
      • 1.7.2 docker状态正常,但执行docker命令失败
  • 2、Docker实战操作
    • 2.1 到hub.docker.com官网查询安装软件包
    • 2.2 下载容器镜像(以openresty为例)
    • 2.3 启动容器(以openresty为例)
  • 3 、进入容器子系统&修改内容
  • 4、将容器内容修改后提交
  • 5 、本地打包异地部署的2种方式
    • 5.1 本地打成tar包(物理传输后安装)
    • 5.2 推送远程仓库
    • 5.3 从远程仓拉取
  • 6、Docker其他命令

1、Docker安装

1.1 移除以前docker相关包

#删除原有docker包
yum remove docker*  

1.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

1.3 安装docker

#ce是社区版 cli是命令行工具
sudo yum install -y docker-ce docker-ce-cli containerd.io 

#以下是在安装k8s的时候使用的版本(后续k8s系列再用)
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

1.4 启动docker

#配置开机启动,并且现在就启动
systemctl enable docker --now

1.5 验证启动成功

云原生-01-Docker入门到实战_第1张图片
云原生-01-Docker入门到实战_第2张图片

1.6 配置aliyun加速(阿里云服务器)

获取阿里云镜像加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mzlfopuy.mirror.aliyuncs.com"]
}
EOF
#硬盘中docker内容发生改变  需要守护进程先reload再启动
sudo systemctl daemon-reload
sudo systemctl restart docker

1.7 安装过程中遇到的报错

1.7.1 docker加速地址及相关配置有误

解决方案:严格按照阿里云提供的加速配置来设置daemon.json

● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Sat 2022-07-09 20:49:20 CST; 6s ago
     Docs: https://docs.docker.com
  Process: 2030 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
 Main PID: 2030 (code=exited, status=1/FAILURE)

云原生-01-Docker入门到实战_第3张图片

1.7.2 docker状态正常,但执行docker命令失败

#原因:上一次docker未正常退出 
#解决方案:
#退出docker
systemctl stop docker.socket
#重启docker
sudo systemctl restart docker

云原生-01-Docker入门到实战_第4张图片

2、Docker实战操作

2.1 到hub.docker.com官网查询安装软件包

官网地址:https://hub.docker.com/

2.2 下载容器镜像(以openresty为例)

云原生-01-Docker入门到实战_第5张图片

#复制docker命令即可(直接拉取默认下载最新的tag包)
docker pull openresty/openresty
#指定版本号下载 :version
docker pull openresty/openresty:1.21.4.1-2-alpine-fat

#查看本地下载了哪些镜像
docker images

#本地删除镜像
docker rmi nginx (docker rmi nginx:latest)
docker rmi 镜像名:版本号/镜像id

云原生-01-Docker入门到实战_第6张图片

2.3 启动容器(以openresty为例)

#docker 常用的命令
Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run 设置项 镜像名

[OPTIONS]
#设置docker启动的容器名称 --name=xxx
docker run --name=myname(容器名) 镜像名
#-d后台运行
docker run -d --name=nginx1 openresty
#--restart服务器重启后应用的启动规则(默认no不启动)
# --restart=always 开机自启动
docker run --restart -d --name=myname(容器名) 镜像名

#做主机端口到容器端口的映射(前面是主机端口,后面是容器80端口)
docker run -p 88:80 --restart -d --name=myname(容器名) 镜像名

#查看正在运行中的容器
docker ps
#查看历史运行的容器
docker ps -a

#删除已经停止的容器
docker rm  c83b66687432(id)/nginx1(name)
#强制删除正在运行的容器
docker rm -f c83b66687432(id)/nginx1(name)

#停止容器
docker stop c83b66687432(id)

#再次启动容器
docker start 容器id/name

#更新容器配置
docker update 容器id/name --restart=always

云原生-01-Docker入门到实战_第7张图片
访问效果:
云原生-01-Docker入门到实战_第8张图片

3 、进入容器子系统&修改内容

# 进入容器内部的系统,修改容器内容
docker exec -it 容器id  /bin/bash

#openresty的安装目录 -> /usr/local/openresty
修改nginx配置即可

云原生-01-Docker入门到实战_第9张图片

4、将容器内容修改后提交

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

#-a作者信息 -m message消息 容器id  
docker commit -a "leifengyang"  -m "首页变化" 341d81f7504f 自定义镜像名:v1.0

 [root@worker1 ~]# docker commit -a "zk"  -m "修改首页" nginx1 changetest:v0.1
sha256:7f9e948dcb972c9786f542f5e063d3ebeb77328e938fe2d655f3e383b05c0587

#保存后重新启动
[root@worker1 ~]# docker run -d --name=nginx1 -p 88:80 changetest:v0.1
49cb611a5bb927e1021b79469144ecfcf7d3f5c72acbe773786e50a2eb132564

5 、本地打包异地部署的2种方式

5.1 本地打成tar包(物理传输后安装)

# 将镜像保存成压缩包(192.168.149.128)
docker save -o testTar.tar guignginx:v1.0

#将tar包传输到其他机器(直接拷贝到其他机器上)
scp testTar.tar [email protected]:/opt/huawei/openresty
# 别的机器加载这个镜像
docker load -i abc.tar
# 拷贝后离线安装即可

本地打成tar包并传输
云原生-01-Docker入门到实战_第10张图片
异地加载tar包并运行
云原生-01-Docker入门到实战_第11张图片
其他服务器访问的效果(虽然内容与上面相同,但主机ip不同)
云原生-01-Docker入门到实战_第12张图片

5.2 推送远程仓库

#本地先打tag包
#local-image本地的容器名 changetest:v0.1  远程仓名称 zwx883031/openresty_zk_test:v1.0
docker tag local-image:tagname new-repo:tagname
#完整的命令
docker tag  changetest:v0.1 zwx883031/openresty_zk_test:v1.0

#本地登录hub.docker账号
docker login

#推送到远程仓
docker push zwx883031/openresty_zk_test:v1.0

#退出账号
docker logout

云原生-01-Docker入门到实战_第13张图片

5.3 从远程仓拉取

云原生-01-Docker入门到实战_第14张图片

docker pull zwx883031/openresty_zk_test:v1.0

6、Docker其他命令

docker logs 容器名/id   排错

docker exec -it 容器id /bin/bash

# docker 经常修改nginx配置文件
docker run -d -p 80:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx

#把容器指定位置的东西复制出来 
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf  /data/conf/nginx.conf
#把外面的内容复制到容器里面
docker cp  /data/conf/nginx.conf  5eff66eec7e1:/etc/nginx/nginx.conf
  • 本文大部分内容参考 雷神 ,有兴趣查看原视频 云原生架构师第一课

你可能感兴趣的:(云原生,docker,云原生,容器)