• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
菩提叶子
博客园    首页    新随笔    联系   管理    订阅  订阅
docker

一、概念

docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类iphone的app),并且容器开销极其低。

二、docker优势

容器化越来越受欢迎,因为容器是:

灵活:即使是最复杂的应用也可以集装箱化。

轻量级:容器利用并共享主机内核。

可互换:您可以即时部署更新和升级。

便携式:您可以在本地构建,部署到云,并在任何地方运行。

可扩展:您可以增加并自动分发容器副本。

可堆叠:您可以垂直和即时堆叠服务。

三、docker重要的三个概念

1、image镜像,镜像是一个只读模板,可以通过repostory仓库拉取镜像或使用已有的镜像

2、container容器,容器是从镜像创建的运行实例

3、repostory仓库,存储镜像仓库

四、docker简单命令

1、通用命令

#1、查看版本号
docker version

#2、启动docker
sudo service docker start

#3、停止docker
sudo service docker stop

# 4、重启docker
sudo service docker restart

2、镜像命令

#1、列出所有镜像
docker image ls
# 上面的命令时省略了 --all
docker image ls --all

#2、拉取镜像
#如果不指定版本号,默认拉取最新版本的镜像
docker image pull <镜像名称:版本号>

#3、删除镜像
#删除的时候,必须注意是否有容器在运行当前镜像文件
#如果在使用,则需要先删除容器,才能删除镜像
docker image rm <镜像名称/镜像ID>

#4、把docker中的镜像打包成文件
#用于分享发送给他人,或备份
docker save -o <文件名.tar.gz>  <镜像名>

#5、把镜像文件加载到docker中
docker load -i <文件名.tar>

#6、把容器保存成镜像
docker commit <容器名称/容器ID> <新镜像名>

2.1、镜像获取

镜像获取的方式

1、repostory仓库拉取镜像

2、将容器保存成镜像

3、dockerfile制作镜像

Dockerfile <文件名/镜像名>

dockerfile的工作流程:

1、从FROM头部指定的镜像运行一个容器
2、做出指令,对容器进行修改
3、执行类似docker commit的操作,创建一个新的镜像层
4、基于此镜像创建一个新容器

dockerfile基本使用

#1、FROM: 构建镜像基于哪个镜像
FROM centos7

#2、MAINTAINER: 镜像维护者姓名或邮箱地址
MAINTAINER admin

#3、RUN: 构建镜像时运行的shell命令
#RUN在building时运行,可以写多条
RUN yum -y install httpd

#4、CMD: 运行容器时执行的shell命令
CMD ["/bin/bash"]

#5、EXPOSE: 声明容器的服务端口
EXPOSE 80 443

#6、ENV: 设置容器环境变量
 ENV MYSQL_ROOT_PASSWORD 123.com

#7、ADD: 拷贝文件或目录到镜像,如果是URL或压缩包会自动下载或自动解压
ADD <源文件>… <目标目录> ADD [“源文件”…“目标目录”]

#8、COPY: 拷贝文件或目录到镜像容器内
#跟ADD类似,但不具备自动下载或解压功能
#不支持绝对路径
COPY  <文件名>

#9、ENTRYPOINT: 运行容器时执行的shell命令
ENTRYPOINT ["/bin/bash","-c",“command”] ENTRYPOINT /bin/bash -c ‘command

#10、VOLUME: 指定容器挂载点到宿主机自动生成的目录或其他容器
VOLUME ["/var/lib/mysql"]

#11、USER: 为RUN、CMD、和ENTRYPOINT执行命令指定运行用户

#12、*WORKDIR: 为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录,意思为切换目录
WORKDIR: /var/lib/mysql = cd /var/lib/mysql

#13、HEALTHCHECK: 健康检查

#14、ARG: 构建时指定的一些参数

#######注意#######

"""
RUN是有条件限制的(好像是200条)
CMD和ENTRYPOINT在运行container时运行,只能写一条,如果写多条,最后一条生效
CMD在run时可以被COMMAND覆盖,ENTRYPOINT不会被COMMAND覆盖,但可以指定–entrypoint覆盖。
如果在Dockerfile里需要往镜像内导入文件,则,此文件或目录必须在Dockerfile所在目录或子目录下。
一个目录下,只能有一个Dockerfile文件,并且名称的大小写严格按照要求: Dockerfile.

"""

3、容器命令

必须先有镜像,才能运行创建容器,需要指定使用的镜像名,并且设置创建容器以后,执行对应的第一条命令 

#1、创建容器
docker run <参数选项>  <镜像名称> <命令>

#2、创建容器后不操作
docker run hello-world

#3、使用ubuntu镜像创建一个镜像
docker pull ubuntu:18.04
docker run -it --name=ubuntu1 ubuntu:18.04 bash

#4、查看所有正在启动运行的容器
docker container ls 

#5、查看所有容器,无论是否运行
docker container ls --all 

#6、启动容器【可以同时启动多个容器,容器之间使用空格隔开】
# 启动一个容器
docker container start <容器名称/容器ID>
# 启动多个容器
docker container start <容器名称/容器ID>  <容器名称/容器ID> <容器名称/容器ID>

#7、停止容器
docker container stop <容器名称/容器ID>

# 8、杀死容器,在容器无法停止的时使用
docker container kill <容器名称/容器ID>

#9、进入容器,要进入容器,必须当前容器是启动状态的
docker container exec -it <容器名称/容器ID>  

#10、删除容器
docker  container rm <容器名称/容器ID>

######docker run选项参数######
"""
必须启动的时候,让容器运行bash解析器,才能在接下来的操作让容器不会立刻关闭,而且也能够让我们可以输入linux终端命令, 如果我们一般创建一个容器,选项都是: -itd
-t    表示容器启动后会进入其命令行终端

-i     表示以“交互模式”运行容器

--name  表示设置容器的名称

-d    创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)

"""

 

posted on 2022-11-02 19:32  菩提叶子  阅读(42)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3