首页 > 其他分享 >云原生学习笔记-1-docker

云原生学习笔记-1-docker

时间:2022-11-21 19:56:53浏览次数:52  
标签:原生 容器 笔记 nginx Master 镜像 docker root

一、基础环境说明

1、操作系统:Centos7.6;1master;2node

2、docker版本:docker-ce 19.03.8-3

二、docker安装

1、使用阿里镜像仓库,mirror.aliyun.com

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
[root@Master ~]# yum list docker-ce.x86_64 --showduplicates | sort -r    #查看所有可安装dock包,显示详细版本号
[root@Master ~]# yum install docker-ce-19.03.8-3.el7 docker-ce-cli-19.03.8-3.el7 container.io    #安装指定版本的docker-ce及其它组件
[root@Master ~]# systemctl start docker.service
[root@Master ~]# systemctl enable docker    #启动docker服务,并加入开机启动

2、配置镜像加速器服务

  阿里云--控制台--产品与服务--容器与镜像服务,导入个人加速器

二、docker-使用

 1、常用命令

[root@Master ~]# docker pull busybox    #下载镜像,默认下载最新版本,latest
[root@Master ~]# docker pull redis:5.0.12-alpine3.13    #下载指定版本的镜像
[root@Master ~]# docker images    #查看所有已经下载的镜像
[root@Master ~]# docker rm a7aebae01283    #删除指定容器,已经运行的
[root@Master ~]# docker rmi 7614ae9453d1    #删除容器,可以使用名称+标签的方式进行删除
[root@Master ~]# docker rmi -f $(docker images -aq)    #删除所有镜像
[root@Master ~]# docker tag busybox:latest mybusy:v1    #修改镜像名,或tag
[root@Master ~]# docker ps    #查看所有已经运行的容器,-a 查看已经运行过的容器,
[root@Master ~]# docker create --name myredis -p 6379:6379 redis:latest    #创建一个容器,-p:指定容器与主机的暴露端口,前为主机的端口
[root@Master ~]# docker start myredis    #启动容器
[root@Master ~]# docker pause myredis    #容器暂停
[root@Master ~]# docker unpause myredis    #恢复暂停的容器
[root@Master ~]# docker stop nginx    #停止容器
[root@Master ~]# docker run --name nginx1 -it -p 8:80 busybox:latest    #启动并直接进入容器内部
[root@Master ~]# docker run --name nginx -d -p 80:80 nginx:latest    #使容器后台启动
[root@Master ~]# docker logs nginx    #打印容器日志;-f追踪日志

  2、进入容器-exec

[root@Master ~]# docker exec -it nginx /bin/bash    #进行容器,使用bash
[root@Master ~]# docker inspect nginx    #查看容器的详情
[root@Master ~]# docker image inspect nginx    #查看镜像的详细信息

   3、文件复制-cp

[root@Master ~]# docker cp index.html nginx:/usr/share/nginx/html/    #将宿主机文件复制到容器内
[root@Master ~]# docker cp nginx:/usr/share/nginx/html/index.html ./index.html    #将容器内的文件复制到宿主机
[root@Master ~]# docker diff nginx    #对比容器内的文件系统结构是否发生改变:A:添加,D:删除,C:更改

  4、docker commit

[root@Master ~]# docker commit nginx nginx1:v1    #将nginx容器修改后生成新的镜像;-a:提交的作者、-m:提交的日志
[root@Master ~]# docker commit -a "jhuaping" -m "test commit" nginx nginx-test:v1

  5、推送镜像到docker仓库

[root@Master ~]# docker login    #登录自己的docker仓库
#上传前需要将docker镜像改为仓库的镜像名一至才可上传
[root@Master ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
jhuaping/nginx-test   V1                  63166b78fccd        7 minutes ago       141MB
[root@Master ~]# docker tag nginx-test:V1 jhuaping/nginx-test:V1    #将镜像上传到镜像仓库
#阿里个人镜像仓库:容器镜像服务/实例列表/镜像仓库/个人实例:点击新建的仓库可看到上推送与摘取的方案
https://cr.console.aliyun.com/repository/cn-chengdu    #阿里地址:浏览器访问

  6、镜像的导入、导出

[root@Master ~]# docker export -o mynginx.tar nginx    #将nginx容器导出为nginx.tar文件
[root@Master ~]# docker import mynginx.tar mynginx:v2    #将导出的mynginx.tar 导入为镜像
[root@Master ~]# docker save -o mynginx.tar nginx:latest    #将nginx:latest镜像保存为文件
[root@Master ~]# docker load -i busybox.tar    #保存的文件导入为镜像
#推荐使用,先用docker commit将容器提交为镜像,然后使用docker save 将镜像保存为文件、再使用docker load导入为镜像

  7、docker 数据卷的挂载-v

#三种挂载方式:使用dockerfiile自动启动容器自动挂载;自行创建目录,启动容器时手动挂载;将数据挂载在内存中(不使用)
[root@Master ~]# docker run --name mynginx -d -v /nginxfile:/usr/share/nginx/html:ro -p 80:80 nginx    #启动容器并指定将容器的目录挂载到宿主机的指定目录,ro以只读的方式挂载,默认为rw读写方式挂载
[root@Master ~]# cd /nginxfile/
[root@Master nginxfile]# vim index.html
[root@Master nginxfile]# cat index.html 
<h1>
this is mynginx IP:192.168.100.1
</h1>
#注意:经过-v挂载后,容器的该目录会与挂载的宿主机目录一至,会清除容器该目录本身的数据。如果宿主机的该目录是空目录那么,挂载后容器的该目录一定是空目录
[root@Master ~]# docker run --name mynginx1 -d -p 81:80 -v nginx:/usr/share/nginx/html nginx:latest    #以卷的形式挂载,html为卷名称而不是路径。以卷形式挂载的docker会自动管理,会将容器该目录本身有的数据同步到卷内
[root@Master ~]# docker inspect mynginx1    #通过inspect进行挂载详细查看,具体查看mounts部分
[root@Master ~]# docker volume ls    #可通过docker volume命令进行相关查看。
[root@Master ~]# docker volume inspect nginx    #通过inspect命令可看卷的详细信息

  8、docker卷管理

[root@Master _data]# docker run --name nginx1 -d -p 8181:80 -v /usr/share/nginx/html nginx    #会自动创建一个挂载卷,因未定义名称,会自行使用uuid为卷名
[root@Master _data]# docker run --name nginx2 -d -p 8182:80 -v nginx:/usr/share/nginx/html nginx
    #会创建一个以nginx为名称的挂载卷,宿主机所在目录为/var/lib/docker/volumes/nginx/_data。可使用inspect查看详细信息
[root@Master _data]# docker volume ls    #查看所有卷,也可使用inspect查看郑的详细信息
[root@Master _data]# docker volume create nginx    #创建一个名为nginx的挂载卷,可以供后面使用
[root@Master nginxfile]# docker volume rm nginx    #删除卷
[root@Master ~]# docker run -d --name nginx2 -p 8082:80 -v /nginxfile/html/:/usr/share/nginx/html --restart=always nginx    #--always:开启自动启动容器
[root@Master ~]# docker update mynginx --restart always    #更新mynginx容器开机自动启动

   9、Dockerfile

创建一个Dockerfile
[root@Master dockerfile]# vim Dockerfile
#这是我的Dockerfile,以#号做为注释符
FROM alpine

#给镜像添加标签,一般是维护者
LABEL maintainer=“jianghuaping”

#运行的指令,安装了软件,修改了文件,默认是id=0的用户,也就是root;这个是基础系统的root,这里为alpine的root用户
#表示镜像构建过程中运行的命令,而不是每次启动时支持的命令
RUN echo "this is test Dockerfile"

#镜像每次启动时执行的命令;如果命令很长,可以使用sh文件,让镜像启动时执行sh文件;也可以直接在CMD位置写出需要执行的镜像即可
CMD ping www.baidu.com
[root@Master dockerfile]# docker build -t mytest:v1 -f Dockerfile .    #根据Dockerfile创建一个镜像;.表示当前目录
Sending build context to Docker daemon   2.56kB
Step 1/4 : FROM alpine
latest: Pulling from library/alpine
59bf1c3509f3: Pull complete 
Digest: sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300
Status: Downloaded newer image for alpine:latest
 ---> c059bfaa849c
Step 2/4 : LABEL maintainer=“jianghuaping”
 ---> Running in 1f893fe46650
Removing intermediate container 1f893fe46650
 ---> d1282d743892
Step 3/4 : RUN echo "this is test Dockerfile"
 ---> Running in 12c3842e2ca5
this is test Dockerfile
Removing intermediate container 12c3842e2ca5
 ---> ff0fde7ba8a9
Step 4/4 : CMD ping www.baidu.com
 ---> Running in 9e6867484d87
Removing intermediate container 9e6867484d87
 ---> 52c1491f901c
Successfully built 52c1491f901c
Successfully tagged mytest:v1

 

标签:原生,容器,笔记,nginx,Master,镜像,docker,root
From: https://www.cnblogs.com/j--huaping/p/16835063.html

相关文章

  • docker安装python
    dockerfileFROMpython:3.6.8WORKDIR/homeRUNapt-getupdate\&&apt-getinstall-y--no-install-recommendscron\&&rm-rf/var/lib/apt/lists/*\&......
  • delphi D11编程语言手册 学习笔记(P225-P343) OOP(面向对象)
      这本书可以在Delphi研习社②群256456744的群文件里找到.书名:Delphi11AlexandriaEdition.pdf●P139类是抽象的,变量是类的具现.类在定义时,只是......
  • 【菜菜的sklearn课堂笔记】支持向量机-线性SVM用于分类的原理
    视频作者:菜菜TsaiTsai链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili本节要注意一下决策边界和决策边际的概念。以上一节的二维数据为......
  • Docker部署flink备忘
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本文目的是给自己备忘的,在后面的工作和学习中若想快速搭建Flink......
  • docker资源配额
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od37docker资源配额7.1docker容器控制cpuDocker通过cgroup来控制容器使用的资源限......
  • docker私有镜像仓库harbor
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od38docker私有镜像仓库harborHarbor介绍Docker容器应用的开发和运行离不开可靠的......
  • docker运行jar包
    1.将jar包传到服务器2.在jar包的同路径下新建一个dockerfile(内容如下)FROMjava:8#Defaultputyourapplicationpackageinto/home/admin/app/ENVAPP_BASE/home......
  • 基于dockerfile构建镜像
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od34基于dockerfile构建镜像4.1dockerfile语法详解Dockerfile是一个用来构建镜像......
  • docker数据持久化
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od35docker数据持久化5.1docker容器的数据管理5.1.1Docker容器的数据卷数据卷是......
  • docker容器互联
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od36docker容器互联6.1docker容器的网络基础6.1.1docker01.安装docker的时候,会......