docker基础知识

linux 安装:
which wget
sudo apt-get install wget
wget -qO- https://get.Docker.com |sh

Ubuntu 18.04 安装 Docker-ce

1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选)

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn' /etc/apt/sources.list
sudo apt update
2.安装需要的包

sudo apt install apt-transport-https ca-certificates software-properties-common curl
3.添加 GPG 密钥,并添加 Docker-ce 软件源,这里还是以中国科技大学的 Docker-ce 源为例

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu
$(lsb_release -cs) stable"
4.添加成功后更新软件包缓存

sudo apt update
5.安装 Docker-ce

sudo apt install docker-ce
6.设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)

sudo systemctl enable docker
sudo systemctl start docker
7.测试运行

sudo docker run hello-world
8.添加当前用户到 docker 用户组,可以不用 sudo 运行 docker(可选)

sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp - docker

sudo usermod -aG docker $USER
9.测试添加用户组(可选)

docker run hello-world

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
--config string Location of client config files (default
"/home/lavender/.docker")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level
("debug"|"info"|"warn"|"error"|"fatal")
(default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default
"/home/lavender/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default
"/home/lavender/.docker/cert.pem")
--tlskey string Path to TLS key file (default
"/home/lavender/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit

Management Commands:
config Manage Docker configs
container Manage containers
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes

Commands:
attach Attach local standard input, output, and error streams 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
deploy Deploy a new stack or update an existing stack
diff Inspect changes to files or directories 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 Docker objects
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
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 one or more containers
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
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
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
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
wait Block until one or more containers stop, then print their exit codes

docker
参数详解
-D 默认false 允许调试模式(debugmode)
-H 默认是unix:///var/run/docker.sock tcp://[host[:port]]来绑定 或者unix://[/path/to/socket]来使用(二进制文件的时候),当主机ip host=[0.0.0.0],(端口)port=[4243] 或者 path=[/var/run/docker.sock]是缺省值,做为默认值来使用
-api-enable-cors 默认flase 允许CORS header远程api
-b 默认是空,附加在已存在的网桥上,如果是用'none'参数,就禁用了容器的网络
-bip 默认是空,使用提供的CIDR(ClasslessInter-Domain Routing-无类型域间选路)标记地址动态创建网桥(dcoker0),和-b参数冲突
-d 默认false 允许进程模式(daemonmode)
-dns 默认是空,使docker使用指定的DNS服务器
-g 默认是"/var/lib/docker":作为docker使用的根路径
-icc 默认true,允许inter-container来通信
-ip 默认"0.0.0.0":绑定容器端口的默认Ip地址
-iptables 默认true 禁用docker添加iptables规则
-mtu 默认1500 : 设置容器网络传输的最大单元(mtu)
-p 默认是/var/run/docker.pid进程pid使用的文件路径
-r 默认是true 重启之前运行的容器
-s 默认是空 ,这个是docker运行是使用一个指定的存储驱动器
-v 默认false 打印版本信息和退出

docker build [OPTIONS] PATH | URL | -
参数说明:

–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 :尝试去更新镜像的新版本;
-q :安静模式,成功后只输出镜像ID;
–rm :设置镜像成功后删除中间容器;
–shm-size :设置/dev/shm的大小,默认值是64M;
–ulimit :Ulimit配置。

docker commit :从容器创建一个新的镜像。
参数说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

docker events : 从服务器获取实时事件
参数说明:
-f :根据条件过滤事件;
--since :从指定的时间戳后显示所有事件;
--until :流水时间显示到指定的时间为止;

docker exec :在运行的容器中执行命令
参数说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
docker export :将文件系统作为一个tar归档文件导出到STDOUT。
参数说明:
-o :将输入内容写到文件。

docker history : 查看指定镜像的创建历史。
参数说明:

    -H :以可读的格式打印镜像大小和日期,默认为true;
    --no-trunc :显示完整的提交记录;
    -q :仅列出提交记录ID。

docker images : 列出本地镜像。
参数说明:
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
docker import : 从归档文件中创建镜像。
参数说明:
-c :应用docker 指令创建镜像;
-m :提交时的说明文字;
docker inspect : 获取容器/镜像的元数据。
参数说明:
-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
docker kill :杀掉一个运行中的容器。
参数说明:
-s :向容器发送一个信号
docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
参数说明:
-u :登陆的用户名
-p :登陆的密码
docker logs : 获取容器的日志
参数说明:
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
docker ps : 列出容器
参数说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
docker pull : 从镜像仓库中拉取或者更新指定镜像
参数说明:
-a :拉取所有 tagged 镜像
docker rm :删除一个或多少容器
参数说明:
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷
docker rmi : 删除本地一个或多少镜像。
参数说明:
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;

docker run :创建一个新的容器并运行一个命令
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a, --attach=[] 登录容器(以docker run -d启动的容器)
-c, --cpu-shares=0 设置容器CPU权重,在CPU共享场景使用
--cap-add=[] 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cap-drop=[] 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cidfile="" 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset="" 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
-d, --detach=false 指定容器运行于前台还是后台
--device=[] 添加主机设备给容器,相当于设备直通
--dns=[] 指定容器的dns服务器
--dns-search=[] 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
-e, --env=[] 指定环境变量,容器中可以使用该环境变量
--entrypoint="" 覆盖image的入口点
--env-file=[] 指定环境变量文件,文件格式为每行一个环境变量
--expose=[] 指定容器暴露的端口,即修改镜像的暴露端口
-h, --hostname="" 指定容器的主机名
-i, --interactive=false 打开STDIN,用于控制台交互
--link=[] 指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
-m, --memory="" 指定容器的内存上限
--name="" 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--net="bridge" 容器网络设置,待详述
-P, --publish-all=false 指定容器暴露的端口,待详述
-p, --publish=[] 指定容器暴露的端口,待详述
--privileged=false 指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart="" 指定容器停止后的重启策略,待详述
--rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=true 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
-t, --tty=false 分配tty设备,该可以支持终端登录
-u, --user="" 指定容器的用户
-v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录
-w, --workdir="" 指定容器的工作目录

docker search : 从Docker Hub查找镜像
参数说明:
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。

镜像使用:
创建镜像:
1.从已经创建的容器中更新镜像,并且提交这个镜像
runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/# 在运行的容器内使用 apt-get update 命令进行更新。
在完成操作之后,输入 exit命令来退出这个容器。

            此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。

            runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
            sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
            各个参数说明:

            -m:提交的描述信息

            -a:指定镜像作者

            e218edb10161:容器ID

            runoob/ubuntu:v2:指定要创建的目标镜像名
    2.使用 Dockerfile 指令来创建一个新的镜像
秋来凉风起,无限思远人
原文地址:https://www.cnblogs.com/lalavender/p/10436613.html