3.docker命令合集

docker命令合集

docker常用命令

docker search nginx                 #搜索镜像库
docker pull nginx                   #选择合适的镜像并拉取镜像
docker images nginx                 #在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像
docker images httpd                 #在本地镜像列表里查到 REPOSITORY 为apache的镜像
docker info                         #查看docker信息
docker version                      #查看docker版本
docker pull 镜像名称                #下载(拉)镜像
docker push 镜像名称                #上传镜像
docker load -i 镜像名称.tar         #导入镜像
docker images                       #查看所有已经安装的镜像列表
docker attach 镜像名/镜像ID         #进入镜像里面
docker exec 镜像名/镜像ID ls /home  #在执行shell命令到容器里面
docker stop 镜像名/镜像ID           #停止镜像
docker tag  原镜像名 新镜像名        #生成新的images
  • linux下解决docker端口映射到宿主机后外网无法访问的问题?
vim /etc/sysctl.conf
或者
vim /usr/lib/sysctl.d/00-system.conf
添加如下代码:
net.ipv4.ip_forward=1

# 重启network服务
systemctl restart network
# 查看是否修改成功
sysctl net.ipv4.ip_forward 
#如果返回为“net.ipv4.ip_forward = 1”,则表示成功了

1. 查看版本

$docker --version #查看版本
$docker-compose --version #查看版本
$docker-machine --version #查看版本
$docker version #查看client和server端版本,并可以查看是否开启体验功能

2. 检查

$docker ps              # 查看当前正在运行的image实例
$docker ps -a           #查看所有镜像实例
$docker run hello-world #验证docker是否在运行中
$docker inspect <task or container>   #检查任务或容器

3. 镜像操作

docker build -t <image-name> .                     #使用当前目录下的Dockerfile构建镜像
docker images                                      #查看镜像
docker image ls -a                                 #显示机器上所有的镜像
docker image rm <image id>                         #删除指定的镜像
docker image rm $(docker image ls -a -q)           #删除所有的镜像
docker rmi [image-id/image-name]                   #删除指定的镜像,如docker rmi nginx
docker tag <image> <username>/<repository>:<tag>   #为自定义的镜像打上tag。如:$docker tag hellopython followtry/demo:latest
docker push <username>/<repository>:<tag>          #将自定义的镜像发布到仓库。如:docker push followtry/demo:latest
docker pull <username>/<repository>                #pull自定义的上传上去的镜像。如:$docker pull followtry/demo
docker run username/repository:tag                 #运行仓库的镜像
docker system df                                   #查看镜像、容器、数据卷所占用的空间

示例

  • 提交运行中的容器为一个镜像 (这样不会丢失在容器的各种操作)
docker commit container-name image-name

# container-name (运行容器名称)   
# image-name (生成镜像名称)
  • 运行镜像并添加端口
docker run -d -it -p 80:80 image-name:latest/bin/bash

# p是自定义端口    
# latest 是镜像的标签(最好写上专业点)

# 举例apache:httpd:latest
docker run -d -it -p 80:80 httpd:latest
  • 删除镜像
先停止镜像--再执行删除操作

docker rm 镜像名称/容器ID

docker rm -f 镜像名称/容器ID //强制删除镜像
  • 导出镜像,生成tar包,export导出的是读写层的文件系统
docker export 镜像名/镜像ID > XXXX.tar

举例:
docker export test01_self > test01.tar

# 导出完整镜像  save:导出镜像所有文件和历史纪录
docker save docker.io/imagine10255/centos6-lnmp-php56 > lnmp.tar
  • 导入镜像
docker import test01.tar(镜像包) ubuntu:self_new(新的镜像名)
docker load -i lnmp.tar   # 导入完整镜像
  • 启动导入的镜像
docker run -itd --name ubuntu_self_new ubuntu:self_new/bin/bash

4. 容器操作

docker container ls                               #列出所有运行中的容器
docker container ls -a                            #列出所有容器,包括未运行的
docker container ls -q                            #只列出运行的容器的id集合
docker container stop <hash>                      #优雅停用指定的容器
docker container kill <hash>                      #强制关闭指定的容器
docker container rm <hash>                        #删除指定的容器
docker container rm $(docker container ls -a -q)  #删除所有的容器
docker run -d -p 8080:80 --name webserver nginx   #运行nginx镜像实例,-d:后台,-p:绑定端口8080到docker的80
docker stop <containerid/container-name>          #停止容器
docker start <containerid/container-name>         #启动容器
docker port <containerid/container-name>          #查看指定容器的端口映射
docker logs -f <containerid/container-name>       #查看指定容器的日志
docker top <containerid/container-name>           #查看容器的进程
docker inspect <containerid/container-name>       #检查容器的底层信息
docker rm <containerid/container-name>            #删除容器

示例

  • 启动容器
docker run -itd -h hostname 镜像

#指定主机启动的名称
#自定义镜像名:便于区分
#-d 后台运行

举例:
docker run -itd docker.io/ubuntu /bin/bash
  • 停止/退出容器
exit   #docker退出容器,并且关闭容器

ctrl+p+q  or (ctrl+p、ctrl+q)   #这里2个步骤 #docker退出容器,而不关闭容器

docker stop --help

docker kill --help
  • docker给运行的容器映射本地端口
docker run -itd -p 0.0.0.0:80:80 --name apachedocker.io/ubuntu /bin/bash

5. service指令

$docker service ls  #列出与应用关联的所有运行的service
$docker service ps <service>  #列出和应用关联的所有任务
stack指令
$docker stack ls  #列出stack或app列表
$docker stack deploy -c <composefile> <appname>  # 运行指定的compose文件
$docker stack rm <appname>  #删除一个或多个stack
$docker stack services <stack1>#列出stack1中的服务

6. swarm指令

$docker swarm ca  #显示root的ca
$docker swarm init #swarm初始化
$docker swarm join --token SWMTKN-1-1qazipp4hbndidnfzsm8psks33tdgvvcgn0ids6uv41u68w9f8-aq1lw7di2g4wx6buypra1j6qz 192.168.65.2:2377 #执行该命令,将当前节点添加到swarm中管理
$docker swarm join-token [OPTIONS] (worker|manager) #管理允许加入的token
$docker swarm leave --force  #从管理器中强制移除单个swarm节点
$docker swarm unlock-key #swarm集群的解锁key
$docker swarm unlock #解锁集群,key=SWMKEY-1-8jKcZ7SJb2+aHibYuJ1RevmuEAtbx8q0LY+crOx+QRU
$docker swarm update   #更新swarm,内有自动lock,cert过期周期,分发心跳周期,历史任务限制等功能

7. node指令

$docker node demote <NODEID/HOSTNAME> #对NODEID进行降级
$docker node inspect <NODEID/HOSTNAME> #节点NODEID的详细信息
$docker node ls #列出节点列表
$docker node promote node | ... #提升一到多个节点为swarm的管理者
$docker node ps #列出节点上正在运行的任务,默认是当前节点
$docker node rm node | ... #swarm中移除一个或多个节点
$docker node update <NODEID/HOSTNAME> #更新指定节点

docker help

1. docker command

$ sudo docker   # docker 命令帮助
Commands:
    attach    Attach to a running container                                         # 当前 shell 下 attach 连接指定运行镜像
    build     Build an image from a Dockerfile                                      # 通过 Dockerfile 定制镜像
    commit    Create a new image from a container's changes                         # 提交当前容器为新的镜像
    cp        Copy files/folders from the containers filesystem to the host path    # 从容器中拷贝指定文件或者目录到宿主机中
    create    Create a new container                                                # 创建一个新的容器,同 run,但不启动容器
    diff      Inspect changes on a container's filesystem                           # 查看 docker 容器变化
    events    Get real time events from the server                                  # 从 docker 服务获取容器实时事件
    exec      Run a command in an existing container                                # 在已存在的容器上运行命令
    export    Stream the contents of a container as a tar archive                   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
    history   Show the history of an image                                          # 展示一个镜像形成历史
    images    List images                                                           # 列出系统当前镜像
    import    Create a new filesystem image from the contents of a tarball          # 从tar包中的内容创建一个新的文件系统映像[对应 export]
    info      Display system-wide information                                       # 显示系统相关信息
    inspect   Return low-level information on a container                           # 查看容器详细信息
    kill      Kill a running container                                              # kill 指定 docker 容器
    load      Load an image from a tar archive                                      # 从一个 tar 包中加载一个镜像[对应 save]
    login     Register or Login to the docker registry server                       # 注册或者登陆一个 docker 源服务器
    logout    Log out from a Docker registry server                                 # 从当前 Docker registry 退出
    logs      Fetch the logs of a container                                         # 输出当前容器日志信息
    port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT         # 查看映射端口对应的容器内部源端口
    pause     Pause all processes within a container                                # 暂停容器
    ps        List containers                                                       # 列出容器列表
    pull      Pull an image or a repository from the docker registry server         # 从docker镜像源服务器拉取指定镜像或者库镜像
    push      Push an image or a repository to the docker registry server           # 推送指定镜像或者库镜像至docker源服务器
    restart   Restart a running container                                           # 重启运行的容器
    rm        Remove one or more containers                                         # 移除一个或者多个容器
    rmi       Remove one or more images                                             # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
    run       Run a command in a new container                                      # 创建一个新的容器并运行一个命令
    save      Save an image to a tar archive                                        # 保存一个镜像为一个 tar 包[对应 load]
    search    Search for an image on the Docker Hub                                 # 在 docker hub 中搜索镜像
    start     Start a stopped containers                                            # 启动容器
    stop      Stop a running containers                                             # 停止容器
    tag       Tag an image into a repository                                        # 给源中镜像打标签
    top       Lookup the running processes of a container                           # 查看容器中运行的进程信息
    unpause   Unpause a paused container                                            # 取消暂停容器
    version   Show the docker version information                                   # 查看 docker 版本号
    wait      Block until a container stops, then print its exit code               # 截取容器停止时的退出状态值
Run 'docker COMMAND --help' for more information on a command.

2. docker option

Usage of docker:
  --api-enable-cors=false                Enable CORS headers in the remote API                      # 远程 API 中开启 CORS 头
  -b, --bridge=""                        Attach containers to a pre-existing network bridge         # 桥接网络
                                           use 'none' to disable container networking
  --bip=""                               Use this CIDR notation address for the network bridge's IP, not compatible with -b      # 和 -b 选项不兼容,具体没有测试过
  -d, --daemon=false                     Enable daemon mode                                         # daemon 模式
  -D, --debug=false                      Enable debug mode                                          # debug 模式
  --dns=[]                               Force docker to use specific DNS servers                   # 强制 docker 使用指定 dns 服务器
  --dns-search=[]                        Force Docker to use specific DNS search domains            # 强制 docker 使用指定 dns 搜索域
  -e, --exec-driver="native"             Force the docker runtime to use a specific exec driver     # 强制 docker 运行时使用指定执行驱动器
  --fixed-cidr=""                        IPv4 subnet for fixed IPs (ex: 10.20.0.0/16)
                                           this subnet must be nested in the bridge subnet (which is defined by -b or --bip)
  -G, --group="docker"                   Group to assign the unix socket specified by -H when running in daemon mode
                                           use '' (the empty string) to disable setting of a group
  -g, --graph="/var/lib/docker"          Path to use as the root of the docker runtime              # 容器运行的根目录路径
  -H, --host=[]                          The socket(s) to bind to in daemon mode                    # daemon 模式下 docker 指定绑定方式[tcp or 本地 socket]
                                           specified using one or more tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.
  --icc=true                             Enable inter-container communication                       # 跨容器通信
  --insecure-registry=[]                 Enable insecure communication with specified registries (no certificate verification for HTTPS and enable HTTP fallback) (e.g., localhost:5000 or 10.20.0.0/16)
  --ip="0.0.0.0"                         Default IP address to use when binding container ports     # 指定监听地址,默认所有 ip
  --ip-forward=true                      Enable net.ipv4.ip_forward                                 # 开启转发
  --ip-masq=true                         Enable IP masquerading for bridge's IP range
  --iptables=true                        Enable Docker's addition of iptables rules                 # 添加对应 iptables 规则
  --mtu=0                                Set the containers network MTU                             # 设置网络 mtu
                                           if no value is provided: default to the default route MTU or 1500 if no default route is available
  -p, --pidfile="/var/run/docker.pid"    Path to use for daemon PID file                            # 指定 pid 文件位置
  --registry-mirror=[]                   Specify a preferred Docker registry mirror                  
  -s, --storage-driver=""                Force the docker runtime to use a specific storage driver  # 强制 docker 运行时使用指定存储驱动
  --selinux-enabled=false                Enable selinux support                                     # 开启 selinux 支持
  --storage-opt=[]                       Set storage driver options                                 # 设置存储驱动选项
  --tls=false                            Use TLS; implied by tls-verify flags                       # 开启 tls
  --tlscacert="/root/.docker/ca.pem"     Trust only remotes providing a certificate signed by the CA given here
  --tlscert="/root/.docker/cert.pem"     Path to TLS certificate file                               # tls 证书文件位置
  --tlskey="/root/.docker/key.pem"       Path to TLS key file                                       # tls key 文件位置
  --tlsverify=false                      Use TLS and verify the remote (daemon: verify client, client: verify daemon) # 使用 tls 并确认远程控制主机
  -v, --version=false                    Print version information and quit                         # 输出 docker 版本信息

3. docker search

$ sudo docker search --help
Usage: docker search TERM
Search the Docker Hub for images  #从 Docker Hub 搜索镜像 
  --automated=false Only show automated builds  #只显示自动构建
  --no-trunc=false  Don't truncate output   #不截断输出
  -s, --stars=0     Only displays with at least xxx stars #只显示star数至少为100的镜像
  • 示例:
$ sudo docker search -s 100 ubuntu  # 查找 star 数至少为 100 的镜像,找出只有官方镜像 start 数超过 100,默认不加 s 选项找出所有相关 ubuntu 镜像

4. docker info

$ sudo docker info 
Containers: 1 #容器个数 Images: 22 #镜像个数 Storage Driver: devicemapper #存储驱动 
 Pool Name: docker-8:17-3221225728-pool
 Pool Blocksize: 65.54 kB
 Data file: /data/docker/devicemapper/devicemapper/data
 Metadata file: /data/docker/devicemapper/devicemapper/metadata
 Data Space Used: 1.83 GB
 Data Space Total: 107.4 GB
 Metadata Space Used: 2.191 MB
 Metadata Space Total: 2.147 GB
 Library Version: 1.02.84-RHEL7 (2014-03-26) Execution Driver: native-0.2 # 存储驱动 Kernel Version: 3.10.0-123.el7.x86_64
Operating System: CentOS Linux 7 (Core) 

5. docker pull && docker push

$ sudo docker pull --help   # pull拉取镜像 
Usage: docker pull [OPTIONS] NAME[:TAG]  #Pull an image or a repository from the registry
  -a, --all-tags=false Download all tagged images in the repository 
$ sudo docker push          # push推送指定镜像 
Usage: docker push NAME[:TAG]   #Push an image or a repository to the registry

示例:

$ sudo docker pull ubuntu # 下载官方 ubuntu docker 镜像,默认下载所有 ubuntu 官方库镜像 
$ sudo docker pull ubuntu:14.04 # 下载指定版本 ubuntu 官方镜像 
$ sudo docker push 192.168.0.100:5000/ubuntu # 推送镜像库到私有源[可注册 docker 官方账户,推送到官方自有账户] 
$ sudo docker push 192.168.0.100:5000/ubuntu:14.04 # 推送指定镜像到私有源 

6. docker images

列出当前系统镜像

$ sudo docker images --help
Usage: docker images [OPTIONS] [NAME] List images
  -a, --all=false Show all images (by default filter out the intermediate image layers) # -a 显示当前系统的所有镜像,包括过渡层镜像,默认 docker images 显示最终镜像,不包括过渡层镜像 -f, --filter=[]   Provide filter values (i.e. 'dangling=true') 
  --no-trunc=false  Don't truncate output
  -q, --quiet=false Only show numeric IDs

示例:

$ sudo docker images # 显示当前系统镜像,不包括过渡层镜像 $ sudo docker images -a # 显示当前系统所有镜像,包括过渡层镜像 
$ sudo docker images ubuntu # 显示当前系统 docker ubuntu 库中的所有镜像 
REPOSITORY                 TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu                     12.04               ebe4be4dd427        4 weeks ago         210.6 MB
ubuntu                     14.04               e54ca5efa2e9        4 weeks ago         276.5 MB
ubuntu                     14.04-ssh           6334d3ac099a        7 weeks ago         383.2 MB

7. docker rmi

删除一个或者多个镜像

$ sudo docker rmi --help
Usage: docker rmi IMAGE [IMAGE...] Remove one or more images
  -f, --force=false Force removal of the image    # 强制移除镜像不管是否有容器使用该镜像 
  --no-prune=false Do not delete untagged parents # 不要删除未标记的父镜像 

8. docker run

$ sudo docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container
  -a, --attach=[] Attach to stdin, stdout or stderr.
  -c, --cpu-shares=0 CPU shares (relative weight)          # 设置 cpu 使用权重 
  --cap-add=[] Add Linux capabilities
  --cap-drop=[] Drop Linux capabilities
  --cidfile="" Write the container ID to the file          # 把容器 id 写入到指定文件 
  --cpuset="" CPUs in which to allow execution (0-3, 0,1)  # cpu 绑定 
  -d, --detach=false Detached mode: Run container in the background, print new container id  # 后台运行容器 
  --device=[] Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc) 
  --dns=[] Set custom dns servers       # 设置dns 
  --dns-search=[] Set custom dns search domains # 设置dns域搜索 
  -e, --env=[] Set environment variables # 定义环境变量 
  --entrypoint="" Overwrite the default entrypoint of the image  
  --env-file=[] Read in a line delimited file of ENV variables  # 从指定文件读取变量值 
  --expose=[] Expose a port from the container without publishing it to your host  # 指定对外提供服务端口 
  -h, --hostname="" Container host name # 设置容器主机名 
  -i, --interactive=false Keep stdin open even if not attached  # 保持标准输出开启即使没有 
  attached --link=[] Add link to another container (name:alias) # 添加链接到另外一个容器 
  --lxc-conf=[] (lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1" 
  -m, --memory="" Memory limit (format: <number><optional unit>, where unit = b, k, m or g)  # 内存限制 
  --name="" Assign a name to the container # 设置容器名 
  --net="bridge" Set the Network mode for the container # 设置容器网络模式 'bridge': creates a new network stack for the container on the docker bridge 'none': no networking for this container 'container:<name|id>': reuses another container network stack 'host': use the host network stack inside the container.  Note: the host mode gives the container full access to local system services such as D-bus and is therefore considered insecure.
  -P, --publish-all=false Publish all exposed ports to the host interfaces # 自动映射容器对外提供服务的端口 
  -p, --publish=[] Publish a container's port to the host   # 指定端口映射  
  format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort  (use 'docker port' to see the actual mapping) 
  --privileged=false Give extended privileges to this container # 提供更多的权限给容器 
  --restart="" Restart policy to apply when a container exits (no, on-failure[:max-retry], always) 
  --rm=false Automatically remove the container when it exits (incompatible with -d) # 如果容器退出自动移除和 -d 选项冲突 
  --security-opt=[] Security Options
  --sig-proxy=true Proxify received signals to the process (even in non-tty mode). SIGCHLD is not proxied.
  -t, --tty=false Allocate a pseudo-tty # 分配伪终端 
  -u, --user="" Username or UID # 指定运行容器的用户 uid 或者用户名 
  -v, --volume=[] Bind mount a volume (e.g., from the host: -v /host:/container, from docker: -v /container) # 挂载卷 
  --volumes-from=[] Mount volumes from the specified container(s) # 从指定容器挂载卷 
  -w, --workdir="" Working directory inside the container # 指定容器工作目录 

示例:

$ sudo docker images ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              14.04               e54ca5efa2e9 4 weeks ago         276.5 MB
... ... 

$ sudo docker run -t -i -c 100 -m 512MB -h test1 -d --name="docker_test1" ubuntu /bin/bash # 创建一个cpu优先级为100,内存限制512MB,主机名为 test1,名为 docker_test1 后台运行bash的容器 a424ca613c9f2247cd3ede95adfbaf8d28400cbcb1d5f9b69a7b56f97b2b52e5 

$ sudo docker ps 
CONTAINER ID        IMAGE           COMMAND                       CREATED             STATUS              PORTS       NAMES
a424ca613c9f        ubuntu:14.04    /bin/bash 6 seconds ago       Up 5 seconds        docker_test1 

$ sudo docker attach docker_test1
root@test1:/# pwd /
root@test1:/# exit exit 

9. docker start|stop|kill|restart|pause|unpause|rm|commit|inspect|logs

docker start CONTAINER [CONTAINER...]             # 运行一个或多个停止的容器

docker stop CONTAINER [CONTAINER...]              # 停掉一个或多个运行的容器-t选项可指定超时时间

docker kill [OPTIONS] CONTAINER [CONTAINER...]    # 默认 kill 发送 SIGKILL 信号-s可以指定发送 kill 信号类型

docker restart [OPTIONS] CONTAINER [CONTAINER...] # 重启一个或多个运行的容器-t选项可指定超时时间

docker pause CONTAINER                            # 暂停一个容器,方便 commit

docker unpause CONTAINER                          # 继续暂停的容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]      # 移除一个或多个容器
-f, --force=false Force removal of running container
-l, --link=false Remove the specified link and not the underlying container
-v, --volumes=false Remove the volumes associated with the container

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]  # 提交指定容器为镜像
-a, --author="" Author (e.g., "John Hannibal Smith  hannibal@a-team.com ")
-m, --message="" Commit message
-p, --pause=true Pause container during commit      # 默认 commit 是暂停状态

docker inspect CONTAINER|IMAGE [CONTAINER|IMAGE...] # 查看容器或者镜像的详细信息

docker logs CONTAINER      # 输出指定容器日志信息
-f, --follow=false Follow log output  # 类似 tail -f
-t, --timestamps=false Show timestamps
--tail="all" Output the specified number of lines at the end of logs (defaults to all logs)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值