包含dockerarg的词条
本篇文章给大家谈谈dockerarg,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、怎样获取docker容器的环境变量
- 2、docker build 命令
- 3、如何在Ubuntu系统下安装docker
- 4、怎样使用Docker帮助
- 5、docker-compose.yml说明和编写
怎样获取docker容器的环境变量
ENV 设置环境变量 ENV ENV指令可以用于为docker容器设置环境变量 ENV设置的环境变量,可以使用 docker inspect命令来查看。闭弊同时还可以颤塌使用docker run --env =来修改环境变量。 Note: 环境变量的设置要合理,比如将轿洞族环境变量设置为非交互的 ENV DE...
docker build 命令
docker build 命令用于使用 Dockerfile 创建镜像。
语法 docker build [OPTIONS] PATH | URL | -
创建一个空dir,名为py:
编辑docketfile 和 requirement.txt
然后创建镜像
docker build -t myimage
OPTIONS说明:
--build-arg=[] : 设置镜像创建时的变量;
--cpu-shares : 设置 cpu 使用权重;
--cpu-period : 限制 CPU CFS周期;
--cpu-quota : 限制 CPU CFS配额;
--cpuset-cpus : 指定使用的CPU id;
--cpuset-mems : 指定使用的内存 id;
--disable-content-trust : 忽略校验,默认开启;
-f : 指定要使用的Dockerfile路径;
--force-rm : 设置镜像过程中删除中间容器;
--isolation : 使用容器隔离技术;
--label=[] : 设置镜像使用的元数据;
-m : 设置内存最大值;
--memory-swap : 设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache : 创建镜像的过程不使用缓存;
--pull : 尝试去更新镜像的新版本;
--quiet, -q : 安静模式,成功后只输出镜像 ID;
--rm : 设置镜像成功后删除中间容器;
--shm-size : 设置/dev/shm的大小,并罩默认值是64M;
--ulimit : Ulimit配置。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式
实例
1. 使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
$ docker build -t runoob/ubuntu:v1 .
Question: 这是不是name: tag的形式????
2. 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
$ docker build github.com/creack/docker-firefox
3. 也可以通过 -f Dockerfile 文件的位置:
$ docker build -f /path/to/a/Dockerfile .
在 Docker 守护进程执行 Dockerfile 中的指令前,首先会对纯掘 Dockerfile 进行语法检查,有语法错误绝裤闹时会返回:
$ docker build -t test/myapp .Sending build context to Docker daemon 2.048 kBError response from daemon: Unknown instruction: RUNCMD
[img]如何在Ubuntu系统下安装docker
ubuntu下安装Docker
Docker 是 dotCloud 最近几个月刚宣布的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非常方便。因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法。更多的玩法还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI 等等。
注意:由于Docker需要在Linux Kernel 3.8及以上才可以很好的工作【本人在ubuntu12.04 lts 内核3.2也正常安装】,官方更是推荐Ubuntu系统,这里有两种选择:Ubuntu 12.04 LTS或最新的Ubuntu 13.10 而本凳晌文比较喜欢倾向LTS,幸好有办法解决Kernel版本问题。
1、更新Ubuntu内核
使用如下命令行更新内核至3.8.0-25
sudo apt-get install linux-image-3.8.0-25-generic
sudo apt-get install linux-headers-3.8.0-25-generic
完成后重启电脑,通过命令 “uname -r” 来查看内核是否成功更新。
2、安装lxc-docker
root@ubuntu: sudo apt-get install software-properties-common #增加 add-apt-repository 命令
root@ubuntu: sudo apt-get install python-software-properties
root@ubuntu: sudo add-apt-repository ppa:dotcloud/lxc-docker #增加一个ppa源,如:ppa:user/ppa-name
root@ubuntu: sudo apt-get update #更新系统
root@ubuntu: sudo apt-get install lxc-docker
3、测试doctor是否安装成功
root@ubuntu:~# docker #出现如下信息表示docker安装成功
Usage: docker [OPTIONS] COMMAND [arg...]
-H=[tcp://127.0.0.1:4243]: tcp://host:port to bind/connect to or unix://path/to/socket touse
A self-sufficient runtime for linux containers.
...
4、Hello World
4.1、下载官方ubuntu image
linjiqin@ubuntu:~$ sudo docker pull ubuntu #pull命令需要到国外的镜像仓库,拉取镜像,因为GFW的关系,拉取失败的可能性很大
4.2、运行hello world
linjiqin@ubuntu:~$ sudo docker run ubuntu /bin/echo hello world
5、docker常用命令
5.1、docker三种命令运行模式
docker有三种命令运行的方式:短暂方式、交互方式、daemon方式。
a、短暂方式:轮粗凳就是刚刚的腊旅那个”hello world”,命令执行完后,container就终止了,不过并没有消失,可以用 sudo docker ps -a 看一下所有的container,第一个就是刚刚执行过的container,可以再次执行一遍:
linjiqin@ubuntu:~$ sudo docker start container_id
不过这次看不到”hello world”了,只能看到ID,用logs命令才能看得到:
linjiqin@ubuntu:~$ sudo docker logs container_id
可以看到两个”hello world”,因为这个container运行了两次。
b、交互方式
linjiqin@ubuntu:~$ sudo docker run -i -t image_name /bin/bash #image_name为docker镜像名称
c、daemon方式
即让软件作为长时间服务运行,这就是SAAS啊!
例如,一个无限循环打印的脚本(替换为memcached、apache等,操作方法仍然不变!):
linjiqin@ubuntu:~$ CONTAINER_ID=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done")
在container外面查看它的输出
linjiqin@ubuntu:~$ sudo docker logs $CONTAINER_ID
或者连接上容器实时查看
linjiqin@ubuntu:~$ sudo docker attach $CONTAINER_ID
终止容器
linjiqin@ubuntu:~$ sudo docker stop $CONTAINER_ID
linjiqin@ubuntu:~$ sudo docker ps #看一下,已经没了
5.2、docker ps命令
linjiqin@ubuntu:~$ sudo docker ps #列出当前所有正在运行的container
linjiqin@ubuntu:~$ sudo docker ps -l #列出最近一次启动的,且正在运行的container
linjiqin@ubuntu:~$ sudo docker ps -a #列出所有的container
注意:
a、其他用法请参考 sudo docker ps -h
b、还有一种方式可以让程序在daemon模式下运行,就是在Dockerfile里设置USER为daemon
5.3、docker export命令
linjiqin@ubuntu:~$ container_id=`docker run -d image_name ls`
linjiqin@ubuntu:~$ docker export $container_id image.tgz
5.4、docker import命令
linjiqin@ubuntu:~$ cat image.tgz | sudo docker import - simple_dev #simple_dev为自定义的镜像名称
5.5、docker port命令
linjiqin@ubuntu:~$ docker run -p 80:8080 image cmd #映射容器的8080端口到宿主机的80端口
5.6、删除容器
5.6.1、删除所有容器
linjiqin@ubuntu:~$ sudo docker rm `sudo docker ps -a -q`
5.6.1、删除具体某个容器
linjiqin@ubuntu:~$ sudo docker rm $CONTAINER_ID
5.7、docker命令快速参考
linjiqin@ubuntu:~$ sudo docker images #查看本地镜像
linjiqin@ubuntu:~$ sudo docker attach $CONTAINER_ID #启动一个已存在的docker实例
linjiqin@ubuntu:~$ sudo docker stop $CONTAINER_ID #停止docker实例
linjiqin@ubuntu:~$ sudo docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行
linjiqin@ubuntu:~$ sudo docker inspect $CONTAINER_ID #查看container的实例属性,比如ip等等
sudo docker run -t -i -v /home/linjiqin/dev/docker:/home/mycontainer:rw -p 8000:8000 mydocker /bin/bash
写在前面,运行我们的镜像的命令使用上面的为参考,这样会挂载本地文件夹,并且会映射container的8000端口到宿主机的8000端口
/home/linjiqin/dev/docker为要挂载的本地文件夹,需提前创建
/home/mycontainer为docker映射路径,执行上面命令会帮我们创建
怎样使用Docker帮助
一 直接输入docker命令来查看Docker客户端的所有命令选项。
[root@localhost ~]# docker
Usage: docker [OPTIONS] COMMAND [arg...]
docker [ --help | -v | --version ]
A self-sufficient runtime for containers.
Options:
--config=~/.docker Location of client config files
-D, --debug Enable debug mode
-H, --host=[] Daemon socket(s) to connect to
-h, --help Print usage
-l, --log-level=info Set the logging level
--tls 明凯歼 Use TLS; implied by --tlsverify
--tlscacert=~/.docker/ca.pem Trust certs signed only by this CA
--tlscert=~/.docker/cert.pem Path to TLS certificate file
--tlskey=~/.docker/key.pem Path to TLS key file
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Commands:
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container'孙瞎s filesystem as a tar archive
history Show the history of an image
images List images
import 激冲 Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on a container, image or task
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry.
logout Log out from a Docker registry.
logs Fetch the logs of a container
network Manage Docker networks
node Manage Docker Swarm nodes
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart a container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
service Manage Docker services
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
swarm Manage Docker Swarm
tag Tag an image into a repository
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
volume Manage Docker volumes
wait Block until a container stops, then print its exit code
Run 'docker COMMAND --help' for more information on a command.
二 通过命令docker command --help更深入的了解指定的Docker命令使用方法。
[root@localhost ~]# docker version --help
Usage:docker version [OPTIONS]
Show the Docker version information
Options:
-f, --format string Format the output using the given go template
--help Print usage
docker-compose.yml说明和编写
模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。大部分指令跟 docker run 相关参数的含义都是类似的。
默认的模板文件名称为 docker-compose.yml ,格式为 YAML 格式。
可以将 Compose 文件命名为任何所需内容,以使其在逻辑上具有意义; docker-compose.yml 仅为标准名称。我们可以简单地将此文件命名为 docker-stack.yml 或更特定于项目的内容
注意每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile )等来自动构建生成镜像。
在 docker stack 下, build 指令不能使用,只能用 image
如果使用 build 指令,在 Dockerfile 中设置的选项(例如: CMD , EXPOSE , VOLUME , ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。
请注意,将 Compose 文件设置为 version:"3" 。本质上,这会使其兼容 swarm mode 。我们可以使用 deploy key (仅可用于 Compose 文件格式版本 3.x 及更高版本)及其子选项对每项服务(例如,web)进行负载均衡和优化性能。我们可以使用 docker stack deploy 命令(仅在 Compose 文件版本 3.x 及更高版本上受支持)运行此文件。您可以使用 docker-compose up 运行具有 非 swarm 配置的版本 3 文件。
指定 Dockerfile 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。
也可以使用 context 指令指定 Dockerfile 所在文件夹的路径。
使用 dockerfile 指令指定 Dockerfile 文件名。
使用 arg 指令指定构建镜像时的变量。
使用 cache_from 指定构建镜像的缓存
指定容器的内核能力(capacity)分配。
让容器拥有所有能力可以指定为:
去掉 NET_ADMIN 能力可以指定为:
覆盖容器启动后默认执行的命令。
仅用于 Swarm mode
指定父 cgroup 组,意味着将继承该组的资源限制。
例如,创建了一个 cgroup 组名称为 cgroups_1。
指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式。
仅用于 Swarm mode
指定设备映射关系。
解决容器的依赖、启动先后的问题。以下例子中会先启动 redis``db 再启动 web
自定义 DNS 服务器。可以是一个值,也可以是一个列表。
配置 DNS 搜索域。可以是一个值,也可以是一个列表。
挂载一个 tmpfs 文件系统到容器。
从文件中获取环境变量,可以为单独的文件路径或列表。
如果通过 docker-compose -f FILE 方式来指耐握定 Compose 模板文件,则 env_file 中变量的路径会基于模板文件路径。
如果有变量名称与 environment 指令冲突,则按照惯例,以后者为准。
环境念漏变量文件中每一行必须符合格式,支持 # 开头的注释行。
设置环境变量。你可以使用数组或字典两种格式。
只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据。
如果变量名称或者值中用到 true|false , yes|no 等表达 布尔 含义的词汇,最好放到引号里,避免 YAML 自动解析某些内容为对应的布尔语义。这些特定词汇,包括
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
暴露端口,但不映射到宿主机,只被连接的服务访昌高庆问。
仅可以指定内部端口为参数
类似 Docker 中的 --add-host 参数,指定额外的 host 名称映射信息。
会在启动后的服务容器中 /etc/hosts 文件中添加如下两条条目。
通过命令检查容器是否健康运行。
指定为 镜像名称或镜像 ID 。如果镜像在本地不存在, Compose 将会尝试拉取这个镜像。
为容器添加 Docker 元数据(metadata)信息。例如可以为容器添加辅助说明信息。
配置日志选项。
目前支持三种日志驱动类型:
options 配置日志驱动的相关参数:
设置网络模式。使用和 docker run 的 --network 参数一样的值。
配置容器连接的网络。
跟主机系统共享进程命名空间。打开该选项的容器之间,以及容器和宿主机系统之间可以通过 进程ID 来相互访问和操作。
暴露端口信息。
使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。
存储敏感数据,例如 mysql 服务密码。
指定容器模板标签(label)机制的默认属性(用户、角色、类型、级别等)。例如配置标签的用户名和角色名。
设置另一个信号来停止容器。在默认情况下使用的是 SIGTERM 停止容器。
配置容器内核参数。
指定容器的 ulimits 限制值。
例如,指定最大进程数为 65535,指定文件句柄数为 20000(软限制,应用可以随时修改,不能超过硬限制) 和 40000(系统硬限制,只能 root 用户提高)。
数据卷所挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro) 。
该指令中路径支持相对路径。
此外,还有包括 domainname , entrypoint , hostname , ipc , mac_address , privileged , read_only , shm_size , restart , stdin_open , tty , user , working_dir 等指令,基本跟 docker run 中对应参数的功能一致。
指定服务容器启动后执行的入口文件。
指定容器中运行应用的用户名。
指定容器中工作目录。
指定容器中搜索域名、主机名、mac 地址等。
允许容器中运行一些特权命令。
指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped 。
以只读模式挂载容器的 root 文件系统,意味着不能对容器内容进行修改。
打开标准输入,可以接受外部输入。
模拟一个伪终端。
Compose 模板文件支持动态读取主机的系统环境变量和当前目录下的 .env 文件中的变量。
例如,下面的 Compose 文件将从运行它的环境中读取变量 ${MONGO_VERSION} 的值,并写入执行的指令中。
如果执行 MONGO_VERSION=3.2 docker-compose up 则会启动一个 mongo:3.2 镜像的容器;如果执行 MONGO_VERSION=2.8 docker-compose up 则会启动一个 mongo:2.8 镜像的容器。
若当前目录存在 .env 文件,执行 docker-compose 命令时将从该文件中读取变量。
在当前目录新建 .env 文件并写入以下内容。
执行 docker-compose up 则会启动一个 mongo:3.6 镜像的容器。
关于dockerarg和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。