背景:最近在公司搭建一些公司没有的漏洞环境,接触到docker可以拉取一些公共的漏洞镜像环境,对于搭建漏洞环境很方便,因此学习了下docker的一些入门知识,一些常用的命令分享出来,共勉!
一.认识docker
Docker是一个容器化平台,它以容器的形式将你的应用程序及所有的依赖项打包在一起,以确保你的应用程序在任何环境中无缝运行。
docker的三个概念:
1.镜像(Image):镜像是静态的、可以被用户互相分享的文件,是静态的,你不能对他操作,只能pull别人的镜像或者push自己的镜像。
2.容器(Container):容器可以理解为镜像的动态状态。
3.仓库(Repository):Docker中的仓库很像git的代码仓库,你可以pull自己之前push到自己仓库的镜像到本地,也可以pull别人push到公共仓库的镜像到自己本地。
docker官方网站:https://hub.docker.com/swarm/sgyzetrov/dashboard/onboarding/cloud-registry,进来后可以创建自己的用户和密码,后续往仓库push自己的制作的镜像环境
二.下来是常用到的docker命令:
1.查看Docker版本信息:docker version或者docker -v
[root@project-1 ~]# docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:03 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:25:29 2018
OS/Arch: linux/amd64
Experimental: false
[root@project-1 ~]# docker -v
Docker version 18.06.1-ce, build e68fc7a
2.拉取镜像:pull
比如我这边拉去了一个web漏洞环境:
$ docker pull medicean/vulapps:t_thinkphp_2
3.拉完之后我们可以使用:docker images查看拉取到的镜像
[root@project-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 1d622ef86b13 7 weeks ago 73.9MB
ibmcom/websphere-traditional latest 61b62b82d86c 7 months ago 1.79GB
bash latest d97778c0b68a 16 months ago 15.1MB
medicean/vulapps t_thinkphp_2 dc810b8fd762 18 months ago 120MB
tomcat latest 78b258e36eed 19 months ago 463MB
redis 4.0 e1a73233e3be 21 months ago 83.4MB
postgres 9.6 01e1fdb168a4 21 months ago 229MB
devilbox/php-fpm 7.2-work-0.37 f4d1aa9ee532 21 months ago 1.59GB
devilbox/nginx-stable 0.22 e830a700e3db 22 months ago 141MB
mongo 3.7 3db1239d511b 23 months ago 365MB
wnameless/oracle-xe-11g latest 698cc7361de4 2 years ago 2.13GB
cytopia/bind 0.15 ff37cf218d55 2 years ago 142MB
medicean/vulapps t_thinkphp_1 16e68bcb9bd2 2 years ago 662MB
cytopia/mariadb-10.1 latest cadf2d610e84 2 years ago 1.22GB
memcached 1.5.5 9a7e8440a999 2 years ago 58.6MB
medicean/vulapps s_struts2_s2-053 91603dee10fd 2 years ago 298MB
medicean/vulapps s_ssh_1 bad7f611ab68 2 years ago 650MB
medicean/vulapps n_nginx_1 5b3c1b10c3ba 2 years ago 186MB
medicean/vulapps p_phpmailer_1 99a25f4ba472 3 years ago 279MB
medicean/vulapps z_zabbix_2 40ac79ad6fa3 3 years ago 534MB
medicean/vulapps b_bash_shellshock2 c5a3ea9cefef 3 years ago 406MB
medicean/vulapps s_struts2_s2-045 91e11663ae7c 3 years ago 347MB
ibmcom/db2express-c latest 7aa154d9b73c 5 years ago 1.71GB
4.启动镜像:docker run
docker run -d -p 80:80 medicean/vulapps:t_thinkphp_2
5.查询并删除所有容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
6.查询并删除所有images:
```powershell
docker rmi `docker images -q`
或者
docker rmi $(docker images -q)
或者
docker rmi $(docker images -q) -f
7.启动容器:docker start 容器Id
[root@project-1 ~]# docker start 5022d636e74b
5022d636e74b
8.停止容器:docker stop 容器id
[root@project-1 ~]# docker stop 5022d636e74b
5022d636e74b
9.重启容器;docker restart 容器id
[root@project-1 ~]# docker restart 5022d636e74b
5022d636e74b
10.进入容器:docker attach 容器id 或者docker exec -it 容器id /bin/bash
[root@project-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5022d636e74b medicean/vulapps:n_nginx_1 "/start.sh" 22 hours ago Up About an hour 0.0.0.0:8667->80/tcp confident_bhabha
9839a55d6412 medicean/vulapps:t_thinkphp_2 "docker-php-entrypoi…" 22 hours ago Up 22 hours 0.0.0.0:8666->80/tcp practical_ritchie
6d243503de7f cytopia/bind:0.15 "/docker-entrypoint.…" 7 weeks ago Up 22 hours 0.0.0.0:1053->53/tcp, 0.0.0.0:1053->53/udp devilbox_bind_1
2d54fad04f57 medicean/vulapps:s_struts2_s2-045 "/usr/local/tomcat/b…" 2 months ago Up 2 hours 0.0.0.0:10013->8080/tcp vibrant_shannon
c62c4ba70a46 medicean/vulapps:t_thinkphp_1 "/start.sh" 3 months ago Up 2 hours 443/tcp, 0.0.0.0:10001->80/tcp modest_raman
[root@project-1 ~]# docker exec -it 5022d636e74b /bin/bash
root@5022d636e74b:/tmp#
求助:我的环境不知道为什么使用docker attach命令进不去,有知道的大神解释下为什么?
11.退出容器:exit (容器退出,没有在后台运行)或者ctrl+p(容器其实在运行,后台运行)
12.删除容器或者镜像:docker rm 容器id docker rmi 镜像id
```powershell
docker rm container_id
docker rmi image_id
13.将环境推到仓库:docker push 镜像
docker push sgy/ubuntu:vim
14.将自己的环境,推到仓库以供其他人使用:docker commit -m “ubuntu with vim” -a “用户名” 容器Id sgy/ubuntu:vim
docker commit -m "ubuntu with vim" -a "smith" aa97ba3292ce smith/ubuntu:vim
备注:其中,-m指定说明信息;-a指定用户信息;aa97ba3292ce代表容器的id;smith/ubuntu:vim指定目标镜像的用户名、仓库名和 tag 信息
以上待续,今日もやる気まんまんだよ!!!