首页
其他
Action
Another action
Something else here
游客
登录系统
16
46小时前
小四
是不是只有我死了 是不是只有我死了 是不是只有我死了 是不是只有我死了 是不是只有我死了
25小时前
二愣子
呵呵
昨天
查看所有消息
16
46小时前
小四
是不是只有我死了 是不是只有我死了 是不是只有我死了 是不是只有我死了 是不是只有我死了
25小时前
二愣子
呵呵
昨天
查看所有消息
16
46小时前
小四
是不是只有我死了 是不是只有我死了 是不是只有我死了 是不是只有我死了 是不是只有我死了
25小时前
二愣子
呵呵
昨天
查看所有消息
发布创作
docker 常用命令
超级管理员
|
557
|
2020-04-30
docker 常用命令 ### docker 架构 - `镜像` ( `Image` ) : 用于创建 Docker 容器的模板 - `容器` ( `Container` ) : 用于运行 镜像 实体 - `仓库` ( `Repository` ) : 用于保存 镜像 ### MacOS Docker 安装 ``` brew cask install docker ``` Get Started with Docker / 下载 / 注册 / 登录 https://www.docker.com/get-started ### docker 基本命令 ``` $ docker -h Flag shorthand -h has been deprecated, please use --help Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/Users/yuchong/.docker") # 客户端配置文件的位置(默认为“/Users/yuchong/.docker”) -c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use") # 用于连接到后台程序的上下文的名称(使用“DOCKER context use”覆盖DOCKER_HOST env var和默认上下文集) -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") # 设置日志级别(“debug”|“info”|“warn”|“error”|“fatal”)(默认“info”) --tls Use TLS; implied by --tlsverify # 使用TLS;隐含由--tlsverify --tlscacert string Trust certs signed only by this CA (default "/Users/yuchong/.docker/ca.pem") # 仅由此CA签署的信任证书 (默认 "/Users/yuchong/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/Users/yuchong/.docker/cert.pem") # TLS证书文件的路径 (默认 "/Users/yuchong/.docker/cert.pem") --tlskey string Path to TLS key file (default "/Users/yuchong/.docker/key.pem") # TLS密钥文件的路径 (默认 "/Users/yuchong/.docker/key.pem") --tlsverify Use TLS and verify the remote # 使用TLS并验证远程 -v, --version Print version information and quit # 打印版本信息并退出 Management Commands: builder Manage builds config Manage Docker configs container Manage containers context Manage contexts 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 # 从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 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 # 将容器的文件系统导出为tar存档 history Show the history of an image # 显示镜像的历史 images List images # 镜像列表 import Import the contents from a tarball to create a filesystem image # 从tarball导入内容以创建文件系统映像 info Display system-wide information # 显示系统范围的信息 inspect Return low-level information on Docker objects # 返回Docker对象的低级信息 kill Kill one or more running containers # 杀死一个或多个正在运行的容器 load Load an image from a tar archive or STDIN # 从tar存档或STDIN加载镜像 login Log in to a Docker registry # 登录Docker注册表 logout Log out from a Docker registry # 从Docker注册表注销 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) # 将一个或多个图像保存到tar存档(默认情况下流式传输到STDOUT) search Search the Docker Hub for images # 在Docker Hub中搜索镜像 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 Show the Docker version information # 显示Docker版本信息 wait Block until one or more containers stop, then print their exit codes # 阻止直到一个或多个容器停止,然后打印它们的出口代码 Run 'docker COMMAND --help' for more information on a command. ``` docker run 主要参数 ``` -d, --detach=false # 指定容器运行于前台还是后台,默认为false -i, --interactive=false # 打开STDIN,用于控制台交互 -t, --tty=false # 分配tty设备,该可以支持终端登录,默认为false -u, --user="" # 指定容器的用户 -a, --attach=[] # 登录容器(必须是以docker run -d启动的容器) -w, --workdir="" # 指定容器的工作目录 -c, --cpu-shares=0 # 设置容器CPU权重,在CPU共享场景使用 -e, --env=[] # 指定环境变量,容器中可以使用该环境变量 -m, --memory="" # 指定容器的内存上限 -P, --publish-all=false # 指定容器暴露的端口 -p, --publish=[] # 指定容器暴露的端口 -h, --hostname="" # 指定容器的主机名 -v, --volume=[] # 给容器挂载存储卷,挂载到容器的某个目录 --volumes-from=[] # 给容器挂载其他容器上的卷,挂载到容器的某个目录 --cap-add=[] # 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities --cap-drop=[] # 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities --cidfile="" # 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法 --cpuset="" # 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU --device=[] # 添加主机设备给容器,相当于设备直通 --dns=[] # 指定容器的dns服务器 --dns-search=[] # 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件 --entrypoint="" # 覆盖image的入口点 --env-file=[] # 指定环境变量文件,文件格式为每行一个环境变量 --expose=[] # 指定容器暴露的端口,即修改镜像的暴露端口 --link=[] # 指定容器间的关联,使用其他容器的IP、env等信息 --lxc-conf=[] # 指定容器的配置文件,只有在指定--exec-driver=lxc时使用 --name="" # 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字 --net="bridge" # 容器网络设置: bridge # 使用docker daemon指定的网桥 host # 容器使用主机的网络 container:NAME_or_ID > # 使用其他容器的网路,共享IP和PORT等网络资源 none # 容器使用自己的网络(类似--net=bridge),但是不进行配置 --privileged=false # 指定容器是否为特权容器,特权容器拥有所有的capabilities --restart="no" # 指定容器停止后的重启策略: no # 容器退出时不重启 on-failure # 容器故障退出(返回值非零)时重启 always # 容器退出时总是重启 --rm=false # 指定容器停止后自动删除容器(不支持以docker run -d启动的容器) --sig-proxy=true # 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理 ``` ### 基本操作 1. 镜像 镜像列表 ``` $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE `镜像的仓库源` `镜像的标签` `镜像ID` `镜像创建时间` `镜像大小` ubuntu latest 4e5021d210f6 9 days ago 64.2MB ``` 获取镜像 ``` $ docker pull ubuntu:14.04 14.04: Pulling from library/ubuntu 2e6e20c8e2e6: Pull complete 30bb187ac3fc: Pull complete b7a5bcc4a58a: Pull complete Digest: sha256:ffc76f71dd8be8c9e222d420dc96901a07b61616689a44c7b3ef6a10b7213de4 Status: Downloaded newer image for ubuntu:14.04 docker.io/library/ubuntu:14.04 ``` 搜索镜像 ``` $ docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED `镜像名称` `镜像描述` `赞数` `是否docker官方发布` `自动构建` nginx Official build of Nginx. 12897 [OK] ``` 删除进行 ``` $ docker rmi nginx ``` 构建镜像 ``` # 当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。 1. 从已经创建的容器中更新镜像,并且提交这个镜像。 $ docker run -t -i ubuntu:14.04 /bin/bash root@28c27ffa474a:/# sudo apt-get update # 我们使用更新命令来更新系统,还可以使用其他命令来进行其他操作 root@28c27ffa474a:/# exit # 完成操作后,输入 exit 命令退出容器 # ID = 28c27ffa474a 的容器,就是按照我们的需求更改的容器。 $ docker commit -m="ubuntu_14_04_update" -a="yuchong" 28c27ffa474a ubuntu:14.04_v2 sha256:fd83b072784e9e3efe00d61616330d0e4f116dd78d05d7f42109bc2703d5ef2b # -m : 提交的描述信息 # -a : 指定镜像作者 # 28c27ffa474a : 容器ID # ubuntu:14.04_v2 :创建的目标镜像名称(ubuntu),标签(14.04_v2) $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04_v2 fd83b072784e About a minute ago 210MB ubuntu latest 4e5021d210f6 10 days ago 64.2MB ubuntu 14.04 6e4f1fe62ff1 3 months ago 197MB # 使用 docker images 命令查看我们创建的新镜像 ubuntu:14.04_v2 $ docker run -t -i ubuntu:14.04_v2 /bin/bash root@d0d5f73a2a05:/# # 使用新镜像 ubuntu:14.04_v2 (d0d5f73a2a05) 来启动一个容器 2. 使用 Dockerfile 指令来创建一个新的镜像。 $ vim Dockerfile FROM ubuntu:14.04 run /bin/echo 'root:123456' | chpasswd # 每一个指令的前缀都必须大写 # FROM : 使用镜像源 # RUN : 在镜像内执行的命令 $ docker build -t ubuntu:14.04_v3 . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM ubuntu:14.04 ---> 6e4f1fe62ff1 Step 2/2 : RUN /bin/echo 'root:123456' |chpasswd ---> Running in 45c15fba28e8 Removing intermediate container 45c15fba28e8 ---> 270f24902f69 Successfully built 270f24902f69 Successfully tagged ubuntu:14.04_v3 # 使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像 # -t : 指定要创建的目标镜像名称 # . : Dockerfile 文件所在目录,可以指定绝对路径 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04_v3 fdc09ceb5ebf 4 seconds ago 197MB ubuntu 14.04_v2 fd83b072784e 14 minutes ago 210MB ubuntu latest 4e5021d210f6 10 days ago 64.2MB ubuntu 14.04 6e4f1fe62ff1 3 months ago 197MB # 使用 docker images 查看新创建的镜像 ubuntu:14.04_v3 (fdc09ceb5ebf) 已经在列表中 ``` 设置镜像标签 ``` docker tag fdc09ceb5ebf ubuntu:14.04_dev # 设置镜像 ID=fdc09ceb5ebf 的新标签 ``` 将镜像push到docker仓库 ``` docker push ubuntu_php7_nginx # ubuntu_php7_nginx : 本地镜像的REPOSITORY # 如果出现错误 # denied: requested access to the resource is denied # 说明: 推送的标签不正确,登录 https://hub.docker.com/ 创建仓库 (docker888888/ubuntu_php7_nginx) # 修改本地镜像标签 docker tag ubuntu_php7_nginx docker888888/ubuntu_php_nginx # 修改完成后,再推送到docker仓库 docker push docker888888/ubuntu_php_nginx ``` 2. 容器 启动容器 ``` $ docker run -it ubuntu:14.04 /bin/bash root@268c36713ab9:/# # -i : 交互式操作 # -t : 终端操作 # -d : 后台运行 # --name xxx : 备注名称(xxx) # /bin/bash : 放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。 ``` 退出容器 ``` root@268c36713ab9:/# exit # exit 命令为在容器中退出 ``` 查看容器列表 ``` docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 268c36713ab9 ubuntu:14.04 "/bin/bash" About a minute ago Exited (0) 2 seconds ago hopeful_bardeen d0d5f73a2a05 ubuntu:14.04_v2 "/bin/bash" 2 hours ago Exited (0) 2 hours ago wizardly_hamilton 28c27ffa474a ubuntu:14.04 "/bin/bash" 2 hours ago Exited (0) 2 hours ago gracious_poincare 493fed975290 ubuntu "/bin/bash" 20 hours ago Exited (0) 20 hours ago great_darwin # CONTAINER ID : 容器ID # IMAGE : 镜像名称 # COMMAND : 交互式命令 # CREATED : 创建时间 # STATUS : 状态 # PORTS : 端口 # NAMES : 备注名称 ``` 停止容器 ``` docker stop <容器ID> ``` 重启容器 ``` docker restart <容器ID> ``` 进入容器 ``` # 在启动容器时使用 -d 参数,容器启动后会进入后台。要想进入容器,可以通过如下命令 $ docker exec -it <容器ID> /bin/bash # 如果从容器中退出,不会导致容器停止 $ docker attach <容器ID> # 如果从容器中退出,会导致容器停止 ``` 导出容器 ``` docker export <容器ID> > ubuntu14.04.tar # 导出容器快照到本地文件 ubuntu14.04.tar ``` 导入容器 ``` cat ubuntu14.04.tar | docker import - ubuntu:14.04_import # 将容器快照文件导入为镜像 ``` ``` docker import http://xxx.com/ubuntu14.04.tar ubuntu:14.04_import # 通过指定 url 或者 某个目录来导入 ``` 删除容器 ``` docker rm -f <容器ID> ``` # 端口映射 ``` # -P (大写) # docker 会随机映射一个 49000 ~ 49900 的端口到内容部容器开放的网络端口 # -p (小写) # 指定要映射的IP和端口 $ -p 5000:5000 # 单端口映射 $ -p 5000:5000 -p 3000:80 # 多端口映射 $ -p 8000-9000:8000-9000 # 指定端口段樱色 $ -p 127.0.0.1:5000:5000 # 指定地址端口映射 $ -p 127.0.0.1::5000 # 指定地址随机端口映射 ```
一克字符 | EchoStr
互联网 ICP 备案:粤ICP备2024297332号
站长邮箱: echostr@163.com