docker基本使用命令

本文详细介绍了Docker的基本操作,包括镜像和容器的管理,如拉取镜像、创建和启动容器、网络配置等。同时,提供了常用命令的解释和实例,帮助读者快速掌握Docker的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键词

  • 镜像 images
  • 镜像名 image_name
  • 镜像id image_id
  • 容器 container
  • 容器名 con_name
  • 容器id con_id

拉取一个镜像

docker pull image_name

查看已有的镜像

docker images

查看帮助

docker command --help

搜索线上镜像

docker  search image_name

创建容器

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]  
 
  -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不能被代理 

例子:

 docker run -p 8090:8080 -p 50000:50000 --restart always --link Redis:redis --name jenkins -v /home/jenkins:/home/jenkins_home --privileged=true dokcer.io/jenkins/jenkins

-p:把容器的8080端口映射到宿主机8090上
-v:主机的目录/home/jenkins映射到容器的目录/home/jenkins_home
–name:给容器起个名字jenkins,docker.io/jenkins/jenkins是你下载的镜像
–restart:always 容器退出时总是重启
–privileged=true:挂载主机目录Docker访问出现Permission denied的解决办法
–link:为redis容器起个别名Redis,访问的时候使用别名Redis

查看docker容器

docker ps #查看正在运行的容器
docker ps -a #查看所有容器

启动、停止、重启、删除docker容器

根据id和name对容器进行操作

#启动容器
docker start <con_id(或者name)>
#停止容器
docker stop <con_id(或者name)>
#重启容器
docker restart <con_id(或者name))>
#删除容器
docker rm <con_id(或者name)>
#删除所有容器
docker rm $(docker ps -a -q)

进入docker容器

#进入容器
docker exec -it containerID /bin/bash

查看容器日志

docker logs -f -t --tail 行数 容器名

[root@CentOS ~]# docker logs -f -t --tail 10 redis #查看容器最后10行日志
2018-08-09T05:55:16.204504000Z 1:C 09 Aug 05:55:16.135 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2018-08-09T05:55:16.205232000Z 1:C 09 Aug 05:55:16.151 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=1, just started
2018-08-09T05:55:16.205822000Z 1:C 09 Aug 05:55:16.151 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
2018-08-09T05:55:16.206545000Z 1:M 09 Aug 05:55:16.199 * Running mode=standalone, port=6379.
2018-08-09T05:55:16.207152000Z 1:M 09 Aug 05:55:16.200 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2018-08-09T05:55:16.207713000Z 1:M 09 Aug 05:55:16.200 # Server initialized
2018-08-09T05:55:16.208315000Z 1:M 09 Aug 05:55:16.200 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
2018-08-09T05:55:16.209055000Z 1:M 09 Aug 05:55:16.201 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
2018-08-09T05:55:16.209806000Z 1:M 09 Aug 05:55:16.201 * DB loaded from disk: 0.000 seconds
2018-08-09T05:55:16.210405000Z 1:M 09 Aug 05:55:16.202 * Ready to accept connections

Docker网络操作

#在主机上创建一个网络
docker network create mynet

#查看自定义bridge网络
docker network inspect mynet

#移除网络要求网络中所有的容器关闭或断开与此网络的连接时,才能够使用移除命令
docker network disconnet mynet 容器ID

#移除网络
docker network rm mynet
Docker Swarm 是 Docker 的原生集群管理和编排工具,它允许用户将多个 Docker 主机组合成一个虚拟的 Docker 主机,从而更容易地管理容器。以下是一些常用的 Docker Swarm 命令: 1. **初始化 Swarm**: ```bash docker swarm init ``` 这个命令会将当前的机器初始化为 Swarm 的管理节点。 2. **加入 Swarm**: ```bash docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:<PORT> ``` 这个命令用于将其他机器加入到已经存在的 Swarm 集群中。`<SWARM_TOKEN>` 是在初始化 Swarm 时生成的令牌,`<MANAGER_IP>` 是管理节点的 IP 地址,`<PORT>` 是端口号(默认是 2377)。 3. **查看 Swarm 节点**: ```bash docker node ls ``` 这个命令列出了所有在 Swarm 集群中的节点。 4. **创建服务**: ```bash docker service create --name <SERVICE_NAME> <IMAGE> ``` 这个命令用于在 Swarm 集群中创建一个服务。`<SERVICE_NAME>` 是服务的名称,`<IMAGE>` 是使用的镜像。 5. **扩展服务**: ```bash docker service scale <SERVICE_NAME>=<REPLICAS> ``` 这个命令用于设置服务的副本数量。`<SERVICE_NAME>` 是服务的名称,`<REPLICAS>` 是希望运行的副本数。 6. **更新服务**: ```bash docker service update --image <NEW_IMAGE> <SERVICE_NAME> ``` 这个命令用于更新服务使用的镜像。`<NEW_IMAGE>` 是新的镜像名称,`<SERVICE_NAME>` 是服务的名称。 7. **删除服务**: ```bash docker service rm <SERVICE_NAME> ``` 这个命令用于从 Swarm 集群中删除一个服务。`<SERVICE_NAME>` 是服务的名称。 8. **离开 Swarm**: ```bash docker swarm leave ``` 这个命令用于让当前节点离开 Swarm 集群。如果当前节点是管理节点,需要先将其降级为工作节点或直接退出。 9. **查看 Swarm 状态**: ```bash docker info ``` 这个命令显示关于 Docker 和 Swarm 的详细信息,包括当前节点的角色(管理节点或工作节点)等。 这些命令提供了基本的 Swarm 管理功能,可以帮助你更好地控制和管理 Docker 容器集群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值