资讯专栏INFORMATION COLUMN

Docker常用命令整理

Lavender / 619人阅读

摘要:常用命令容器相关运行开放端口后台运行命名设置环境变量进入容器交互环境,实际上是和的组合下面语句会在运行后,执行命令。

Docker 常用命令 docker container(容器相关)

1 . run运行

a. --publish/-p 开放端口

 docker container run --publish : :

b. --deatch/-d 后台运行

 docker container run --publish : -d :

c. --name 命名container

docker container run --publish : -d --name  :

d. --env/-e 设置环境变量

docker container run --publish : -d --env = --name  :

e. -it进入容器交互环境,实际上是-i-t的组合,下面语句会在运行container后,执行 命令。例如可以替换为bash,则会启动后进入bash交互环境,即容器内部的Linux环境,若需要退出,则执行exit退出,注意此时容器也会退出。

docker container run -it --name  : 

f. --network设置网络。Docker本身有自己的虚拟网络,通过该命令,可以指定虚拟网络,也可以指定直接通过NAT使用host网络,如:--network

g. -v绑定数据卷,

docker container run -v : : 

h. -v绑定磁盘数据卷

docker container run -v : : 
#path_in_local_mount 可以使用$(pwd)使用shell命令执行后的结果[PS:以此类推,其他语法处也可以使用]

2 . ls container列表

a. 显示运行中的container

docker container ls

b. 显示所有container

docker container ls -a

3 . rm 删除container

a. 删除指定container

#按照containId删除
docker container rm 
#按照名称删除
docker container rm name

b. -f强制删除(可删除运行中的container)

#按照containId强制删除
docker container rm -f 
#按照名称强制删除
docker container rm -f name

4 . top 查询容器中的进程

a.查询容器中的进程

b.

#查询指定containerID的Container进程详情
docker container top 
#查询指定name的Container进程详情
docker container top 

5 . inspect查询容器的配置详情

a. 返回形式为json结构,不返回活动中的容器和进行中的容器状态

b.

#查询指定containerID的Container配置详情
docker container inspect 
#查询指定name的Container配置详情
docker container tinspectop 

c.查看指定docker内网ip

docker container insepct --format "{{.NetworkSettings.IPAddress}}" 

6 . stats 查询所有容器的状态

a.实时返回container的运行状态,不显示容器名称,只显示容器ID

docker container stats

b.

#查询指定containerID的Container配置详情
docker container stats 
#查询指定name的Container配置详情
docker container stats 

7 . exec在container中执行命令

a . 当使用这种方式执行命令时,使用exit会退出容器,但是容器不会停止

b .

docker container exec -it  

8 . startstop:启动/停止容器

9 . port查看容器端口映射

#查询指定containerID的端口映射
docker container port 
#查询指定name的Container的端口映射
docker container port 

docker network

1 . ls显示所有网络

a.默认网络为bridge或者docker0 ,与host以NAT形式通讯

b.host网络是跳过docker的虚拟网络,直连到主机网络,这种方式牺牲了容器的安全性

c.none网络是在容器中移除了eth0只剩下localhost网络接口

docker network ls

2 . inspect查看网络具体信息

a.以Json形式返回具体的网络信息,其中IPAM显示驱动名称,网关和网段

b.Containers显示连接到该网络的Container信息以为IP地址

docker network inspect 

3 . create创建网络

a.创建网络时默认使用bridge驱动,在创建的时候也可以指定第三方驱动来创建含有特定驱动的网络,如weave驱动
b.此命令还有其他选项可以在创建时指定,如:ip等,具体查看help即可
#创建默认驱动的网络
docker network create 
#创建指定驱动的网络
docker network create --driver  
#创建可互相通讯的network
docker network create --driver overlay 

4 . connect连接指定网络到容器

docker network connect  

5 . disconnect取消连接指定网络到容器

docker network disconnect  

6 . 运行时指定需要暴露的端口,这样能保护docker内部的端口,只能在虚拟网络里访问,外部可访问的只有暴露出的端口

docker machine

1.用于创建docker虚拟机,必须同时安装 virtualbox才能使用

2.也可以使用在下网站创建docker集群:https://labs.play-with-docker...,只能活跃4H

3.也可以使用云服务例如:https://www.digitalocean.com

#创建虚拟机
docker-machine create 
#ssh连接
docker-machine ssh 
#查看虚拟机环境变量
docker-machine env 

Docker Images Dockerfile
# NOTE: this example is taken from the default Dockerfile for the official nginx Docker Hub Repo
# https://hub.docker.com/_/nginx/
# NOTE: This file is slightly different than the video, because nginx versions have been updated 
#       to match the latest standards from docker hub... but it"s doing the same thing as the video
#       describes
FROM debian:stretch-slim
# all images must have a FROM
# usually from a minimal Linux distribution like debian or (even better) alpine
# if you truly want to start with an empty container, use FROM scratch

ENV NGINX_VERSION 1.13.6-1~stretch
ENV NJS_VERSION   1.13.6.0.1.14-1~stretch
# optional environment variable that"s used in later lines and set as envvar when container is running

RUN apt-get update 
    && apt-get install --no-install-recommends --no-install-suggests -y gnupg1 
    && 
    NGINX_GPGKEY=573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62; 
    found=""; 
    for server in 
        ha.pool.sks-keyservers.net 
        hkp://keyserver.ubuntu.com:80 
        hkp://p80.pool.sks-keyservers.net:80 
        pgp.mit.edu 
    ; do 
        echo "Fetching GPG key $NGINX_GPGKEY from $server"; 
        apt-key adv --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$NGINX_GPGKEY" && found=yes && break; 
    done; 
    test -z "$found" && echo >&2 "error: failed to fetch GPG key $NGINX_GPGKEY" && exit 1; 
    apt-get remove --purge -y gnupg1 && apt-get -y --purge autoremove && rm -rf /var/lib/apt/lists/* 
    && echo "deb http://nginx.org/packages/mainline/debian/ stretch nginx" >> /etc/apt/sources.list 
    && apt-get update 
    && apt-get install --no-install-recommends --no-install-suggests -y 
                        nginx=${NGINX_VERSION} 
                        nginx-module-xslt=${NGINX_VERSION} 
                        nginx-module-geoip=${NGINX_VERSION} 
                        nginx-module-image-filter=${NGINX_VERSION} 
                        nginx-module-njs=${NJS_VERSION} 
                        gettext-base 
    && rm -rf /var/lib/apt/lists/*
# optional commands to run at shell inside container at build time
# this one adds package repo for nginx from nginx.org and installs it

RUN ln -sf /dev/stdout /var/log/nginx/access.log 
    && ln -sf /dev/stderr /var/log/nginx/error.log
# forward request and error logs to docker log collector

EXPOSE 80 443
# expose these ports on the docker virtual network
# you still need to use -p or -P to open/forward these ports on host

CMD ["nginx", "-g", "daemon off;"]
# required: run this command when container is launched
# only one CMD allowed, so if there are multiple, last one wins

docker image

1 . build新建Image

在有Dockerfile的目录下执行,新建Image命令
在创建Image的时候,会按照命令一层一层的写入,建议在dockerfile中将不经常变化的层信息写在上面,把经常修改的层写在下面,这样当再次床架image时,会根据SHA1判断并使用相同的层,以便于提高创建image效率
docker image build -t  

2 . history 查看image的layers历史信息

该命令查看image的层历史
docker image history 

3 . inspect 查看image详细信息,包含所有的层信息

docker image inspect 

4 . ls 查看所有DockerImage列表

docker image inspect 

5 . tag 修改image的tag

docker image tag : :

6 . pull 从DockerHub拉取image

docker image pull :

7 . push 推送image到DockerHub

docker image push :

docker volume

1.ls 查询所有volume列表

docker volume ls

2.rm 删除指定volume

docker volume rm 

3.inspect 查询volume信息

docker volume inspect 

4.prune 删除所有未使用的本地数据卷

docker volume inspect 

5.create 创建数据卷

docker volume create 

Docker Swarm

结构



docker swarm

1 . init 初始化Docker Swarm 单节点,默认为Leader-Manager,会创建Token供其他Swarm加入(join)时使用,创建Raft协议

docker swarm init

2 . init --advertise-addr 当创建swarm时指定的host名称对应多个ip地址时,需要具体指定哪个IP

docker swarm init --advertise-addr 

3 . join当创建玩一个swarm节点时,系统会提示如何加入节点

docker swarm join --token  :

4 . join-token获取Join时需要的token

docker swarm join-token manager

docker node

1 . ls 查看Swarm中的Node列表

只有Swarm-Leader才能使用,Worker不支持
docker node ls

2 . inspect 查看Swarm中的Node详情

docker node inspect 

3 . ps 查看Swarm中的Node状态

#查看node整体信息
docker node ps
#查看指定node的信息
docker node ps 

4 . rm 删除Swarm中的Node

docker node rm 

5 .update 更新swarm节点

docker node update --  
#更新接的角色为Manager
docker node update --role manager 

docker service

用于替代docker run

创建后,如果使用docker container rm命令删除某个container,则Swarm会自动创建一个新的container,以保证整体节点数量

1 . create 创建swarm节点

#创建单节点
docker service create 
#创建多节点
docker service create --replicas  
docker 17.10 之后,组要指定--detach true表示后台运行,若不指定该参数会同步显示所有执行过程

2 . ls 查看创建的service信息

docker service ls

3 . ps 查看service的任务信息或者Container信息

docker service ps 

4 . update 更新service

相比于docker updatedocker service update提供更多更新操作,可用于更新docker配置
docker service update  
docker 17.10 之后,组要指定--detach true表示后台运行,若不指定该参数会同步显示所有执行过程

5 . rm 删除service

docker service rm 

其他

1 . docker swarm 自带loadbalancer,但是是无状态的loadbalancer,不支持session,cookie等机制,可以在docker swarm 集群前置Nginx来实现真正的负载均衡

LoadBalancer


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27601.html

相关文章

  • Dockerfile 与 Compose 环境搭建学习笔记(一)

    摘要:的主要作用是自己根据基础镜像,重新定制镜像,而不是直接从官方仓库拿现成的使用。以接下来要构建的环境来说明下,下面我将要搭建一个的开发环境,需要进行配合。它的主要作用是持久化数据,避免容器销毁后内部数据丢失暴露到宿主机的端口。 以前一直使用 Vagrant 作为自己的开发环境,并且在上家公司也推行大家采用 Vagrant 作为开发环境,保障公司使用的是同一套开发环境。随着docker的流...

    TZLLOG 评论0 收藏0
  • Dockerfile 与 Compose 环境搭建学习笔记(一)

    摘要:的主要作用是自己根据基础镜像,重新定制镜像,而不是直接从官方仓库拿现成的使用。以接下来要构建的环境来说明下,下面我将要搭建一个的开发环境,需要进行配合。它的主要作用是持久化数据,避免容器销毁后内部数据丢失暴露到宿主机的端口。 以前一直使用 Vagrant 作为自己的开发环境,并且在上家公司也推行大家采用 Vagrant 作为开发环境,保障公司使用的是同一套开发环境。随着docker的流...

    ityouknow 评论0 收藏0
  • 为容器安全苦恼?这份清单整理了27种容器安全工具

    摘要:安全基准测试工具互联网安全中心为容器安全提供了指导方针,这一方针已被和类似的安全基准工具所采用。该容器安全工具可以利用机器学习提供自适应威胁保护这是一个可以扫描容器镜像的托管安全解决方案,它甚至可以允许企业在它们的环境内执行安全策略。 在Docker容器技术兴起的初期,对于许多企业而言,容器安全问题一直是他们在生产环境中采用Docker的一大障碍。然而,在过去的一年中,许多开源项目、初...

    cyixlq 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<