背景 随着软件技术的不断革新,自动化测试基本趋向全能型工程师,什么编程技术、运维知识、需求设计等基本都是要懂一些的,以下是自动化工作中接触docker后一些常用命令,非专业运维人员掌握的那么深入。 docker run了之后做了哪些事情?启动docker - <font face="微软雅黑" size="3">[root[url=home.php?mod=space&uid=46685]@second[/url] ~]# systemctl start docker #使用这个命令不起作用
- bash: systemctl start docker: command not found...
- [root@second ~]# docker version
- Client: Docker Engine - Community
- Version: 20.10.3
- API version: 1.41
- Go version: go1.13.15
- Git commit: 48d30b5
- Built: Fri Jan 29 14:34:14 2021
- OS/Arch: linux/amd64
- Context: default
- Experimental: true
- Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the </font>
复制代码底层原理Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问.(如同我们访问mysql是一样,mysql需要一个服务端一直启动折,然后再有一个客户端去访问) DockerServer接收到Docker-Client的指令,就会执行这个命令。 Docker为什么比虚拟机快? 1、Docker有着比虚拟机更少的抽象层; 2、Docker利用的是宿主机的内核,虚拟机需要Guest OS; 所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统,避免引导。虚拟机是加载GuestOS,分钟级别的 非常慢; 而Docker是利用咱们的宿主机的操作系统,省略了这个复杂的过程,启动秒级。 通常容器都是使用后台方式运行的,需要进入容器,修改一些配置。 命令1: - <font face="微软雅黑" size="3">docker exec -it 容器id bashshell #docker exec -it 代表以交互模式运行</font>
复制代码 镜像命令:docker images 查看所有本地的主机上的镜像
docker search 搜索镜像 - <font face="微软雅黑" size="3">docker search mysql</font>
复制代码- <font face="微软雅黑" size="3"># 启动docker</font>
复制代码 容器命令说明:有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习。 docker pullcentos
新建容器并启动- <font face="微软雅黑" size="3">docker run [可选参数] image
- # 参数说明
- --name-"Name" #容器名称,如tomcat01,tomcat02
- -d #后台方式运行
- -it #使用交互方式运行,进入容器查看内容
- -P #指定容器的端口 -p 8080:8080
- #这里端口的使用大有门道
- # -P ip:主机端口:容器端口
- # -P 主机端口:容器端口(常用)
- # -P 容器端口
- # 容器端口
- -p
- #测试启动并进入容器
- [root@second ~]# docker run -it centos /bin/bash
- [root@ac4241126f49 /]# ls
- bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var #这里列出的就是centos容器内部的文件,与外部的centos任何关系
- [root@ac4241126f49 /]#
- [root@ac4241126f49 /]# exit #退出容器,注意此处退出容器后,容器就停止运行了,可查看下面的docker ps无容器在运行
- exit
- [root@second ~]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- [root@second ~]#
- </font>
复制代码
退出容器上面的案例中退出容器后(exit),容器就停止运行了,能不能退出的时候不停止容器呢? 可通过快捷键:ctrl+p+q - <font face="微软雅黑" size="3">[root@second ~]# docker run -it centos /bin/bash
- [root@1cf95596f5c5 /]# docker ps #此处通过 ctrl+p+q 退出容器但不停止容器运行
- bash: docker: command not found
- [root@1cf95596f5c5 /]# [root@second ~]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 1cf95596f5c5 centos "/bin/bash" 41 seconds ago Up 38 seconds strange_solomon
- </font>
复制代码
列出所有运行的容器- <font face="微软雅黑" size="3">#docker ps 命令
- #没有参数,表明列出当前正在运行的容器
- -a #列出当前正在运行的+历史运行过的容器
- -n=? #显示最近创建的容器
- -q #只显示容器的编号
- [root@second ~]# docker ps -aq
- ac4241126f49
- 87bff02ef488
- 570a1d6addc6
- df95abfd587e
- 0ab3ceb861c1
- 2e2be3e98edb
- </font>
复制代码 删除容器
- <font face="微软雅黑" size="3">docker rm 容器id #删除指定容器,不能删除正在运行的容器,如果要强制删除 rm -f
- docker rm -f $(docker ps -aq) #删除所有容器
- docker ps -a -q|xargs docker rm #删除所有容器
- docker rm -f $(docker ps -q) #删除正在运行的容器
- 83
- </font>
复制代码 启动和停止容器的操作
- <font face="微软雅黑" size="3">docker start 容器id
- docker restart 容器id #重启容器
- docker stop 容器id #停止容器
- docker kill 容器id #暴力杀掉容器
- </font>
复制代码 常用其它命令后台启动容器 - <font face="微软雅黑" size="3">#命令 docker run -d 镜像名
- [root@second ~]# docker run -d centos
- 7155edf4cb993690087d27f31cf5edd9a33de2a5761217366cdf2c630c6fee3a
- [root@second ~]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- #通过上面-d的方式启动后发现,容器启动后就立马停止了,docker ps查看不到正在运行的容器
- #这里有一个坑,当docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
- </font>
复制代码 查看日志
- <font face="微软雅黑" size="3">docker logs -f -t --tail
- #编写一段shell脚本
- </font>
复制代码
|