首页 > 其他分享 >docker

docker

时间:2022-11-02 19:45:00浏览次数:66  
标签:容器 container ENTRYPOINT 镜像 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 两个参数,创建后就会自动进去容器)

"""

 

标签:容器,container,ENTRYPOINT,镜像,docker,运行
From: https://www.cnblogs.com/songyunjie/p/16852131.html

相关文章

  • docker容器设置固定IP
    创建虚拟网桥dockernetworkcreate--subnet=172.127.0.0/24docker-br0 删除网桥dockernetworkrmdocker-br0 创建容器参数如下--network指定网桥--ip指定ip......
  • docker rabbitmq安装延迟插件
    首先,已经安装有rabbitmq3.8.17    1、下载插件地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/tags  2、将下载的插件上传到容器中:/p......
  • docker搭建rabbitmq镜像集群
    目录一、搭建RabbitMq的运行环境1.通过search查询rabbitmq镜像2.通过pull拉取rabbitmq的官方最新镜像3.创建容器4.启动管理页面5.设置erlangcookie二、普通模式三......
  • Docker安装sonarqube
    1、安装postgresql数据库1.1、拉取postgres镜像dockerpullpostgres 1.2、运行镜像容器dockerrun--namedb-ePOSTGRES_USER=sonar-ePOSTGRES_PASSWORD......
  • Jenkins Pipeline 流水线 - 上传文件 Publish over SSH + Docker 编译 + 上传到阿里仓
    JenkinsPipeline流水线PublishoverSSH将jar上传到远程Docker服务器、执行编译命令生成镜像、将镜像上传到阿里仓库PublishoverSSHJar包上传、编译、上传生成......
  • docker 批量删除镜像
    删除虚悬镜像列出REPOSITORY和TAG均为<none>的虚悬镜像:$dockerimages--filterdangling=trueREPOSITORYTAGIMAGEIDCREATEDSIZE<none>......
  • docker 安装(windows10家庭版)
    安装:桌面版:https://www.docker.com/products/docker-desktop服务器版:https://docs.docker.com/engine/install/#server  启动报错解决:报错截图: 解决方法:控制面......
  • Docker--mysql(centos)
    Docker--mysql当前启动systemctlstartdocker自启动systemctlenabledocker1.拉取mysql镜像dockerpullmysql:5.7其他版本参考dockerhub2.创建容器,并启动1.......
  • Docker容器 获取宿主机CPU信息等或重启网卡命令操作介绍
    1.知识点介绍A.Docker和宿主机共用一个内核,Namespace的隔离依然没有完全隔离Linux资源,如:/proc、/sys、/dev/sd*等目录;B.使用Docker容器问题:在容器中执行top、......
  • docker安装phpmyadmin(win10已安装Docker Desktop)
    前提:已安装docker环境,可以输入dockerversion验证是否安装docker环境,已安装如图所示:  phpmyadmin安装参考地址:安装—phpMyAdmin5.3.0-dev文档下载镜像:dockerp......