21个Docker 命令_a self-sufficient runtime for containers

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

常用参数如下:

-f #跟踪日志输出
-t #显示时间戳
–tail #只显示最新n条容器日志
–since #显示某个开始时间的所有日志
实例操作如下:

docker logs -f cadvisor

I0523 09:22:10.794233 1 storagedriver.go:48] Using backend storage type “influxdb”
I0523 09:22:10.794295 1 storagedriver.go:50] Caching stats in memory for 2m0s
I0523 09:22:10.794551 1 manager.go:151] cAdvisor running in container: “/sys/fs/cgroup/cpuacct,cpu”
I0523 09:22:10.810585 1 fs.go:139] Filesystem UUIDs: map[]
I0523 09:22:10.810599 1 fs.go:140] Filesystem partitions: map[shm:{mountpoint:/dev/shm major:0 minor:47 fsType:tmpfs blockSize:0} overlay:{mountpoint:/ major:0 minor:46 fsType:overlay blockSize:0} tmpfs:{mountpoint:/dev major:0 minor:50 fsType:tmpfs blockSize:0} /dev/mapper/centos-root:{mountpoint:/rootfs,ro major:253 minor:0 fsType:xfs blockSize:0} /dev/sda1:{mountpoint:/rootfs,ro/boot major:8 minor:1 fsType:xfs blockSize:0} /dev/mapper/centos-home:{mountpoint:/rootfs,ro/home major:253 minor:2 fsType:xfs blockSize:0}]
W0523 09:22:10.812419 1 info.go:52] Couldn’t collect info from any of the files in “/etc/machine-id,/var/lib/dbus/machine-id”
I0523 09:22:10.812460 1 manager.go:225] Machine: {NumCores:1 CpuFrequency:2799091 MemoryCapacity:8203235328 HugePages:[{PageSize:2048 NumPages:0}] MachineID: SystemUUID:564D5235-FED8-3630-AA2B-D65F0855D036 BootID:fd7b3fb5-e74f-4280-80cf-0a7096239619 Filesystems:[{Device:tmpfs DeviceMajor:0 DeviceMinor:50 Capacity:4101615616 Type:vfs Inodes:1001371 HasInodes:true} {Device:/dev/mapper/centos-root DeviceMajor:253 DeviceMinor:0 Capacity:140633964544 Type:vfs Inodes:68681728 HasInodes:true} {Device:/dev/sda1 DeviceMajor:8 DeviceMinor:1 Capacity:1063256064 Type:vfs Inodes:524288 HasInodes:true} {Device:/dev/mapper/centos-home DeviceMajor:253 DeviceMinor:2 Capacity:21464350720 Type:vfs Inodes:10485760 HasInodes:true} {Device:shm DeviceMajor:0 DeviceMinor:47 Capacity:67108864 Type:vfs Inodes:1001371 HasInodes:true} {Device:overlay DeviceMajor:0 DeviceMinor:46 Capacity:140633964544 Type:vfs Inodes:68681728 HasInodes:true}] DiskMap:map[253:0:{Name:dm-0 Major:253 Minor:0 Size:140660178944 Scheduler:none} 253:1:{Name:dm-1 Major:253 Minor:1 Size:8455716864 Scheduler:none} 253:2:{Name:dm-2 Major:253 Minor:2 Size:21474836480 Scheduler:none} 2:0:{Name:fd0 Major:2 Minor:0 Size:4096 Scheduler:deadline} 8:0:{Name:sda Major:8 Minor:0 Size:171798691840 Scheduler:deadline}] NetworkDevices:[{Name:eth0 MacAddress:02:42:ac:11:00:03 Speed:10000 Mtu:1500}] Topology:[{Id:0 Memory:8589467648 Cores:[{Id:0 Threads:[0] Caches:[{Size:32768 Type:Data Level:1} {Size:32768 Type:Instruction Level:1} {Size:262144 Type:Unified Level:2}]}] Caches:[{Size:26214400 Type:Unified Level:3}]}] CloudProvider:Unknown InstanceType:Unknown InstanceID:None}
#跟踪查看容器cadvisor的日志

9、docker port
显示指定容器的端口映射

实例操作如下:

docker port cadvisor

8080/tcp -> 0.0.0.0:8082
#显示cadvisor容器的端口映射信息

10、docker commit

用已存在的容器重新创建一个新的镜像

常用参数如下:

-a #提交的镜像作者
-c #使用Dockerfile指令来创建镜像
-m #提交时附上说明文字
-p #在commit时,将容器暂停
实例操作如下:

docker commit -a “mingongge” -m “add a new images” bd96d72ed9c7 newdocker_images:v1.0.0

sha256:20ee805752cb7cae660fbae89d7c6ea4a9c6372f16a6cb079ecf6c79f87ed8c9

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.0.0 20ee805752cb 7 seconds ago 62.2 MB
#将容器bd96d72ed9c7重新生成一个新的镜像名为newdocker_images

11、docker cp

用于容器与物理主机之间拷贝文件

实例操作如下:

[root[@docker]# docker cp /data/index.html bd96d72ed9c7:/web/
#将物理主机中的/data/index.html拷贝到容器bd96d72ed9c7:/web/目录下
[root@docker ~]# docker cp /data/index.html bd96d72ed9c7:/web/index.php
#将物理主机中的/data/index.html拷贝到容器bd96d72ed9c7:/web/目录下并改名为index.php
[root@docker ~]# docker cp bd96d72ed9c7:/web /data/
#拷贝容器bd96d72ed9c7:/web/目录到物理主机中的/data/目录下

12、docker login/logout
用于登录与登出容器镜像仓库

docker login #登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout #登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

常用参数如下:

-u #登陆的用户名
-p #登陆的密码
实例操作如下:

[root@docker ~]# docker login -u username -p password
Login Succeeded
[root@docker ~]# docker logout
Removing login credentials for https://index.docker.io/v1/
#登录与登出默认的容器镜像仓库

13、docker pull/push

docker pull #从镜像仓库中拉取或者更新指定镜像
docker push #将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

实例操作如下:

[root@docker ~]# docker pull nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx …
latest: Pulling from docker.io/library/nginx
f2aa67a397c4: Already exists
3c091c23e29d: Pulling fs layer
4a99993b8636: Pulling fs layer
#从镜像仓库中拉取或者更新指定镜像,输出信息如上
[root@docker ~]# docker push newdocker_images:v1.0.0
#上传镜像到镜像仓库上

14、docker images

显示系统本地容器镜像文件

常用参数如下:

-a #列出所有的镜像(含中间映像层,默认,过滤掉中间映像层);
–digests #显示镜像的摘要信息;
-f #显示满足条件的镜像;
–format #指定返回值的模板文件;
–no-trunc #显示完整的镜像信息;
-q #只显示镜像ID。
实例操作如下:

[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.0.0 20ee805752cb 28 minutes ago 62.2 MB
docker.io/grafana/grafana latest 4700307f41f2 9 days ago 238 MB
registry.jumpserver.org/public/guacamole 1.0.0 6300349f2642 2 months ago 1.23 GB
docker.io/google/cadvisor latest 75f88e3ec333 5 months ago 62.2 MB
docker.io/tutum/influxdb latest c061e5808198 19 months ago 290 MB
#列出本地所有的镜像
[root@docker ~]# docker images -q
20ee805752cb
4700307f41f2
6300349f2642
75f88e3ec333
c061e5808198
#只显示容器ID

[root@docker ~]# docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
newdocker_images v1.0.0 20ee805752cb 32 minutes ago 62.2 MB
docker.io/grafana/grafana latest sha256:364bec4a39ecbec744ea4270aae35f6554eb6f2047b3ee08f7b5f1134857c32c 4700307f41f2 9 days ago 238 MB
registry.jumpserver.org/public/guacamole 1.0.0 sha256:ea862bb2e83b648701655c27900bca14b0ab7ab9d4572e716c25a816dc55307b 6300349f2642 2 months ago 1.23 GB
docker.io/google/cadvisor latest sha256:9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632a 75f88e3ec333 5 months ago 62.2 MB
docker.io/tutum/influxdb latest sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b c061e5808198 19 months ago 290 MB
[root@docker ~]# docker images --no-trunc
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.0.0 sha256:20ee805752cb7cae660fbae89d7c6ea4a9c6372f16a6cb079ecf6c79f87ed8c9 32 minutes ago 62.2 MB
docker.io/grafana/grafana latest sha256:4700307f41f249630f6d772638ad8d32c7d7e3ec86c324d449d5e21076991bb7 9 days ago 238 MB
registry.jumpserver.org/public/guacamole 1.0.0 sha256:6300349f264218e783cd2bd6f7863d356ac8d5ac05a62584cb4680af7ebec292 2 months ago 1.23 GB
docker.io/google/cadvisor latest sha256:75f88e3ec333cbb410297e4f40297ac615e076b4a50aeeae49f287093ff01ab1 5 months ago 62.2 MB
docker.io/tutum/influxdb latest sha256:c061e580819875fad91910841fd3fc53893524bbb9326a68b2470861633aebb1 19 months ago 290 MB
#可以对比下两个参数显示的不同信息

15、docker rmi

删除镜像

常用参数如下:

-f #强制删除

实例操作如下:

[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.1.0 858cbd9ba687 6 seconds ago 62.2 MB
newdocker_images v1.0.0 20ee805752cb 36 minutes ago 62.2 MB
docker.io/grafana/grafana latest 4700307f41f2 9 days ago 238 MB
registry.jumpserver.org/public/guacamole 1.0.0 6300349f2642 2 months ago 1.23 GB
docker.io/google/cadvisor latest 75f88e3ec333 5 months ago 62.2 MB
docker.io/tutum/influxdb latest c061e5808198 19 months ago 290 MB
[root@docker ~]# docker rmi 20ee805752cb
Untagged: newdocker_images:v1.0.0
Deleted: sha256:20ee805752cb7cae660fbae89d7c6ea4a9c6372f16a6cb079ecf6c79f87ed8c9
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.1.0 858cbd9ba687 39 seconds ago 62.2 MB
docker.io/grafana/grafana latest 4700307f41f2 9 days ago 238 MB
registry.jumpserver.org/public/guacamole 1.0.0 6300349f2642 2 months ago 1.23 GB
docker.io/google/cadvisor latest 75f88e3ec333 5 months ago 62.2 MB
docker.io/tutum/influxdb latest c061e5808198 19 months ago 290 MB
#删除一个镜像

16、docker tag

标记本地镜像

实例操作如下:

[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.1.0 858cbd9ba687 39 seconds ago 62.2 MB
[root@docker ~]# docker tag newdocker_images:v1.1.0 newdocker_images:v2
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.1.0 858cbd9ba687 4 minutes ago 62.2 MB
newdocker_images v2 858cbd9ba687 4 minutes ago 62.2 MB
#从结果可以看出两个容器的ID是一样的,只是TAG改变了,类似于linux中文件与文件的硬链接一样,其两者的inode号相同。

17、docker build :

使用Dockerfile创建镜像

常用参数如下:

-f #指定要使用的Dockerfile路径
–label=[] #设置镜像使用的元数据;
-m #设置内存最大值
–memory-swap #设置Swap的最大值为内存+swap,"-1"表示不限swap
–no-cache #创建镜像的过程不使用缓存
–pull #尝试去更新镜像的新版本
-q #安静模式,成功后只输出镜像ID
–rm #设置镜像成功后删除中间容器
–ulimit #Ulimit配置
实例操作如下:

[root@docker ~]# docker build https://github.com/nginxinc/docker-nginx/

18、docker history

查看指定镜像的创建历史

常用参数如下:

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

[root@docker ~]# docker history newdocker_images:v2
IMAGE CREATED CREATED BY SIZE COMMENT
858cbd9ba687 32 minutes ago -storage_driver=influxdb -storage_driver_d… 0 B add new images
75f88e3ec333 5 months ago /bin/sh -c #(nop) ENTRYPOINT [“/usr/bin/c… 0 B
5 months ago /bin/sh -c #(nop) EXPOSE 8080/tcp 0 B
5 months ago /bin/sh -c #(nop) ADD file:e138bb5c0c12107… 26.5 MB
5 months ago /bin/sh -c apk --no-cache add ca-certifica… 30.9 MB
5 months ago /bin/sh -c #(nop) ENV GLIBC_VERSION=2.23-r3 0 B
5 months ago /bin/sh -c #(nop) MAINTAINER dengnan@goog… 0 B
5 months ago /bin/sh -c #(nop) CMD [”/bin/sh"] 0 B
5 months ago /bin/sh -c #(nop) ADD file:c05a199f603e2a9… 4.82 MB

19、docker info

显示 Docker 系统信息,包括镜像和容器数

实例操作如下:

[root@docker ~]# docker info
Containers: 4
Running: 3
Paused: 0
Stopped: 1
Images: 5
Server Version: 1.13.1
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: e9c345b3f906d5dc5e8100b05ce37073a811c74a (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: 5b117de7f824f3d3825737cf09581645abbe35d4 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
seccomp
WARNING: You’re not using the default seccomp profile
Profile: /etc/docker/seccomp.json
Kernel Version: 3.10.0-693.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 1
Total Memory: 7.64 GiB
Name: docker
ID: K7N6:CHF5:KAZP:QFDB:VYBP:IWMW:7VMV:L4TB:OJD2:SEZI:YRRR:4TJN
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)

20、docker version

显示 Docker 版本信息

实例操作如下:

[root@docker ~]# docker version
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-63.git94f4240.el7.centos.x86_64
Go version: go1.9.4
Git commit: 94f4240/1.13.1
Built: Fri May 18 15:44:33 2018
OS/Arch: linux/amd64

Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-63.git94f4240.el7.centos.x86_64
Go version: go1.9.4
Git commit: 94f4240/1.13.1
Built: Fri May 18 15:44:33 2018
OS/Arch: linux/amd64
Experimental: false

21.镜像

docker images 列出本地所有镜像

docker search(-s) nginx 搜索相关镜像 加上-s 参数 选出至少start数范围的镜像

docker pull(-a) 镜像名:版本号 拉取镜像,-a pull all

docker push 192.168.0.100:5000/ubuntu    推送镜像库到私有源

docker rmi(-f) 镜像名:版本号/镜像ID    删除镜像 (加上 -f 参数 强制删除)

docker rmi $(docker images -q)   删除所有镜像

docker rmi $(docker images | grep “none” | awk ‘{print $3}’) 删除所有名字中带“none” 关键字的镜像

docker save docker.io/tomcat:7.0.77-jre7 >/root/mytomcat7.tar.gz 导出镜像

docker load < /root/mytomcat7.tar.gz   导入镜像

22.容器

docker ps 查看当前正在运行的容器

docker inspect name/image[name/image…] 查看详细

docker ps -a 查看所有容器的状态

docker start/stop(-t) id/name[name…] 启动/停止某个(多个)容器 -t 指定时间

docker kill (-s) name[name…] 强制中断 -s指定SIGINT信号类型,默认“kill”

docker restart (-t) name[name…] 重启 -t 指定时间

docker pause name 暂停  docker unpause name 继续

docker rm(-$) name[name…] 移除

-f  --force=false  强制移除运行中容器

-l  --link=false   移除指定链接,保留底层容器

-v  --volumes=false 移除容器关联卷

docker commit(-$)name 镜像名:版本号   提交指定容器为镜像

-a, --author=“”     作者

-m, --message=“”    简要说明

-p, --pause=true    暂停容器再提交

docker logs(-$) name  输出指定容器日志信息

-f  跟踪日志输出

-t  显示时间戳 类似 tail -f

–tail 在日志的末尾输出指定行数日志(默认所有日志)

docker attach id 进入某个容器(使用exit退出后容器也跟着停止运行)

docker exec -ti id 启动一个伪终端以交互式的方式进入某个容器

(使用exit退出后容器不停止运行)

docker run(-$) IMAGE [COMMAND] [ARG…]    运行一个容器

-d         指定容器运行于前台还是后台,默认为false

-i         打开STDIN,用于控制台交互,默认为false

-t         分配tty设备,该可以支持终端登录,默认为false

-u, --user=“” 指定容器的用户

-a, --attach=[] 登录容器(必须是以docker run -d启动的容器)

-w         指定容器的工作目录

-c        设置容器CPU权重,在CPU共享场景使用

-e, --env=[] 指定环境变量,容器中可以使用该环境变量

-m         指定容器的内存上限

-P, --publish-all=false 指定容器暴露的端口

-p, --publish=[] 指定容器暴露的端口

-h         指定容器的主机名

-v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录

–volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录

–cap-add=[]     添加权限

–cap-drop=[]    删除权限

–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 指定容器是否为特权容器,特权容器拥有所有的权限

–restart=“no” 指定容器停止后的重启策略:

no:    容器退出时不重启

on-failure: 容器故障退出(返回值非零)时重启

always:   容器退出时总是重启

–rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)

–sig-proxy=true 设置由代理接受并处理信号,SIGCHLD,SIGSTOP和SIGKILL不代

例:

docker run -i -t centos6.8 进入到默认的线程”/bin/bash”,直接进入控制台操作

docker run -i -t -d centos6.8 进入到默认的线程”/bin/bash”,后台运行

docker run -d --restart=always centos6.8 ping www.docker.com 带命令启动

docker run -d --name=server-dbcentos6.8-mysql /usr/bin/mysql_safe -d

容器的名称为server-db,同时激活了数据库mysql的后台线程

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
后自动删除容器(不支持以docker run -d启动的容器)

–sig-proxy=true 设置由代理接受并处理信号,SIGCHLD,SIGSTOP和SIGKILL不代

例:

docker run -i -t centos6.8 进入到默认的线程”/bin/bash”,直接进入控制台操作

docker run -i -t -d centos6.8 进入到默认的线程”/bin/bash”,后台运行

docker run -d --restart=always centos6.8 ping www.docker.com 带命令启动

docker run -d --name=server-dbcentos6.8-mysql /usr/bin/mysql_safe -d

容器的名称为server-db,同时激活了数据库mysql的后台线程

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-pclPU3lX-1713276520393)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值