首页 > 其他分享 >Docker

Docker

时间:2022-10-07 10:11:47浏览次数:71  
标签:容器 run dockerTest 指定 镜像 Docker docker

目录


基本概念


定义

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

组件

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像

容器与镜像的关系类似于面向对象编程中的对象与类

安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

镜像


镜像列表

docker images

获取镜像

docker pull [ubuntu:15.10]

查找镜像

docker search httpd

删除镜像

 docker rmi [ubuntu:15.10]

构建镜像

docker build

FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

导出镜像

docker commit

容器


查看容器

docker ps # 运行的容器
docker ps -a  # 所有容器

启动容器,并以命令行参数进入

$ docker run -it ubuntu /bin/bash
$ docker run -itd --name ubuntu-test ubuntu /bin/bash

  • -t:在新容器内指定一个伪终端或终端

  • -i:允许你对容器内的标准输入 (STDIN) 进行交互

  • -d:后台运行模式

  • -e:指定容器的环境变量

  • —name:指定容器名称

docker run —name kinaba -e ELASTICSEARCH_URL=http://127.0.0.1:9200
docker run -p 3306:3306 --name myMysql -e MYSQL_ROOT_PASSWORD=123456  -d mysql:5.7

  • -v:映射容器文件夹到宿主机

    docker run -it -v /test:/soft centos /bin/bash
    
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash

退出容器

  • exit 命令

  • 使用 CTRL+D 来退出容器

停止容器

docker stop <容器 ID>

启动容器

docker start <容器 ID>
docker restart <容器 ID>

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

docker attach #退出会导致容器停止
docker exec #推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

导出容器

docker export 1e560fca3906 > ubuntu.tar

导入容器

docker import - test/ubuntu:v1
docker import [http://example.com/exampleimage.tgz](http://example.com/exampleimage.tgz) example/imagerepo

删除容器

删除容器使用 docker rm 命令:

docker rm -f 1e560fca3906

端口映射

 docker run -d -p 5000:5000 training/webapp python app.py
  • -P:将容器内部使用的网络端口随机映射到我们使用的主机上
docker port bf08b7f2cd89

Dockerfile


Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

常用命令

  1. COPY/ADD

    复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

  2. ENTRYPOINT

    1. 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

    2. 在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。

  3. ENV

    设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。

  4. WORKDIR

    指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。

    docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。

  5. CMD/RUN

    • CMD 在docker run 时运行。

    • RUN 是在 docker build。

  6. FORM

    定制的镜像都是基于 FROM 的镜像

示例

FROM alpine

ENV PATH /root/dockerTest:$PATH

WORKDIR /root/dockerTest/
COPY dockerTest /root/dockerTest/

ENTRYPOINT ["./dockerTest"]

运行

docker build -t nginx:v3 .

. 是上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。

Compose


Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。

  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

相关命令

  1. version

    指定本 yml 依从的 compose 哪个版本制定的

  2. build

    指定为构建镜像上下文路径

  3. dns

    自定义 DNS 服务器,可以是单个值或列表的多个值

  4. image

    指定容器运行的镜像

  5. volumes

    将主机的数据卷或着文件挂载到容器里

  6. container_name

    指定自定义容器名称,而不是生成的默认名称

  7. ports

    指定端口与物理机之间的映射关系

示例

version: '3.7'
services:
  dockerTest:
    container_name: dockerTest
    build: ./
    image: docker-tt
    ports:
      - "8088:8088"
    volumes:
      - /root/dockerTest/web/:/root/dockerTest/web/

运行

docker-compose up -d

FQA


  1. 使用alpine3.9作为基础镜像构建go程序时, 出现Standard_init_linux.go:175 exec user process caused no such file

    运行在alpine3.9的go程序,涉及到动态编译与静态编译的问题,在alpine3.6上应该使用网络编译go,即增加 -tags netgo

标签:容器,run,dockerTest,指定,镜像,Docker,docker
From: https://www.cnblogs.com/cclever/p/16759142.html

相关文章

  • 理解Docker——深入引擎室
    本文主要内容Docker的架构在用户的宿主机上追溯Docker的内部结构使用DockerHub查找和下载镜像设置自己的Docker注册中心(registry)实现容器间的相互通信掌握Docker的架构是更......
  • Docker使用docker compose部署zfile 实现在线浏览下载
    需要先安装docker-composecurl-Lhttps://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname-s`-`uname-m`>/usr/local/bin/docker-c......
  • docker搭建个人云盘可道云kodbox
    1、拉取kodbox镜像(文章最后有自己编写yml文件可直接搭建)dockerpulltznb/kodbox:1.152、创建并启动kodboxdockerrun-d-it--namekodbox-p1111:80-v/data/do......
  • docker搭建扫雷小游戏
    下载HTML文件包链接:https://pan.baidu.com/s/1AFfkQMKBjAspgGNldRmHXQ提取码:9adg复制这段内容后打开百度网盘手机App,操作更方便哦下载httpd镜像[root@docker~]#......
  • docker搭建RPG小游戏
    编写Dockerfile[root@docker~]#vimDockerfileFROMcentos:7ADDhttp://23126342.s21d-23.faiusrd.com/0/ABUIABAAGAAg1M3F9wUoxOzFiwY?f=BrowserQuest.tar.gz&v=1592......
  • docker搭建2048小游戏
    下载2048游戏包链接:https://pan.baidu.com/s/1E5RkGgfLSo3XYmvJ7RId_Q提取码:1gc5复制这段内容后打开百度网盘手机App,操作更方便哦打包成镜像[root@docker~]#ls......
  • Docker
    什么是Docker官网的介绍是“Dockeristheworld’sleadingsoftwarecontainerplatform.”官方给Docker的定位是一个应用容器平台。Docker是一个容器平台的领导者......
  • Docker 上跑 Jupyter 还带GPU
    首先安好 nvidia-docker 才能看到GPU #root用户才可以分配GPUsudodockerrun-it--rm--namejupyter-p0.0.0.0:8888:8888--gpusall-v/home/ubuntu/jupyte......
  • Docker 上跑 Clickhouse
    dockerrun--rm--nameclickhouse-p8123:8123--ulimitnofile=262144:262144yandex/clickhouse-server 下面是从MYSQL导入表createtable<table_name>engine=......
  • Docker
    Dockerfile的使用Dockerfile是一个文件通过使用一些语法规则,它可以用来根据一个基础镜像,再加上自定义配置,来构建一个自定义镜像,比如说构建一个java后端应用。下面是一......