快速启动一个运行环境供你测试,对某一漏洞快速复现很有帮助。也可用Vagrant起坏境。

查看帮助命令

docker --help #查看有那些命令
docker command --help #查看某一条命令选项

下载镜像

[root@Centos7 ~]# docker search image_name #搜索出镜像
[root@Centos7 ~]# docker pull  #拉镜像到本地
[root@Centos7 ~]# docker images  #查看已经下载的镜像

[root@Centos7 ~]# docker rmi[-f] REPOSITORY_NAME[IMAGE_ID]
#删除镜像,必须停止运行才能删除,-f强制删除。

从镜像创建容器运行程序

-d放到后台运行,--name对这个容器一个说明注释,-p将容器端口映射到本机上,访问时只用访问本机端口就行,centos是镜像名也可以写上镜像id,init是在容器执行的命令(用于管理服务不太准确)。

容器在运行完命令后会退出,由于加了-d会常驻在后台。

init进程,是由内核启动的用户级进程。内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。

[root@Centos7 ~]# docker run -d --name Nginx -p 宿主:容器 centos init

进入到容器中,-i是启动标准输入,-t开启终端,在2ba57dcfbd46(可以是id也可以是name)容器中执行一个bash命令,exec执行完成后会切换到bash_shell界面。

[root@Centos7 ~]# docker -it exec 2ba57dcfbd46 bash

管理容器状态

[root@Centos7 ~]# docker stop image_name[image_id]
#stop关闭容器,start启动容器,restart重启容器。

[root@Centos7 ~]# docker ps[-a] image_name[image_id]
#ps查看运行中的容器,-a容器未运行也显示

[root@Centos7 ~]# docker rm[-f] CONTAINER_ID CONTAINER_ID
#删除容器,-f强制删除(运行中也会删)。

[root@Centos7 ~]# docker stop $(docker ps -q) & docker rm $(docker ps -aq)
#删除所有docker容器

把容器打包成你自己的镜像

给容器内服务设置为开机自启,再保存为镜像别人创建容器时就能直接使用了。

[root@Centos7 ~]# docker commit 容器id name:tag 
[root@Centos7 ~]# #name是容器名称必须小写,tag一般是填写版本信息。

导出导入镜像

[root@Centos7 ~]# docker save 容器id[容器name] -o path/fiel_name.tar #导出
[root@Centos7 ~]# docker load -i path/file_name.tar #导入

Docker-run踩坑

创建容器后无法使用systemctl提示:

[root@8817430daf55 /]# systemctl
Failed to get D-Bus connection: Operation not permitted

建立容器需要加上--privileged

[root@Centos7 ~]# docker run --name Nginx --privileged -d images_id init

参考资料:
https://docs.docker-cn.com/ 官方文档
https://www.runoob.com/docker/docker-tutorial.html 菜鸟教程
https://blog.csdn.net/dt763C/article/details/82719332 exec & run

标签: none

讨论讨论讨论!