docker入门解析
最近在docker上搭建了部分漏洞实战平台,感觉docker这玩意很好使,所以学习一波
docker
1 2 3 4 5 6 7 8 9 10
| docker ps # 查看运行中的容器 docker images # 查看拉取的镜像 docker search nginx # 搜索nginx镜像 docker pull [Docker Registry地址]<仓库名>:<标签> # 拉取镜像 docker start/restart/stop [container ID] # 启动/重启/停止容器(可以直接停止吗) docker exec -it [container ID] /bin/bash # 进入到容器中操作 docker rm $(docker ps -aq) # 删除所有容器 docker rmi [image ID] # 删除本地下载的镜像 docker rmi $(docker images -q) # 删除所有镜像 docker logs [container ID] # 查看容器日志
|
docker-compose up
1 2 3 4 5 6 7 8 9 10 11 12
| docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...] 选项包括: -d # 在后台运行服务容器 -no-color # 不是由颜色来区分不同的服务的控制输出 -no-deps # 不启动服务所链接的容器 --force-recreate # 强制重新创建容器,不能与-no-recreate同时使用 –no-recreate # 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用 –no-build # 不自动构建缺失的服务镜像 –build # 在启动容器前构建服务镜像 –abort-on-container-exit # 停止所有容器,如果任何一个容器被停止,不能与-d同时使用 -t, –timeout TIMEOUT # 停止容器时候的超时(默认为10秒) –remove-orphans # 删除服务中没有在compose文件中定义的容器
|
镜像相关命令
查看镜像
REPOSITORY
TAG
IMAGE ID
CREATED
SIZE
以上均存储在/var/lib/docker下
搜索镜像
NAME
DESCRIPTION
STARS
OFFICIAL
AUTOMATED:自动构建,表示该镜像由docker hub自动构建流程构建
拉取镜像
例如,下载centos镜像
删除镜像
删除所有镜像
1
| docker rmi `docker images -q`
|
容器相关
查看容器
查看所有容器
查看最后一次运行的容器
查看停止的容器
1
| docker ps -f status=exited
|
创建与启动容器
1 2 3 4 5 6 7
| docker run # -i:表示运行容器 # -t:表示启动后进入其命令行。加入这两个参数后,容器创建就能登陆进去。即分配一个伪终端 # --name:为创建的容器命名 # -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或者文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上 # -d:创建一个守护式容器在后台运行(这样创建容器后不会自动登陆容器,如果只加-i -t这里两个参数,创建后就会自动进入容器 # -p:端口映射,前者宿主机端口,后者容器内端口,可以用多个-p做多个端口映射
|
(1)交互式方式创建容器
1
| docker run -it --name=容器名 镜像名:标签 /bin/bash
|
这时我们用ps命令看可以发现启动的容器,状态为启动
退出当前容器
(2)守护式方式创建容器
1
| docker run -di --name=容器名称 镜像名称:标签
|
登录守护式容器的方式
1
| docker exec -it 容器名称(or容器id) /bin/bash
|
停止和启动容器
停止容器
启动容器
1
| docker start 容器名(or容器id)
|
文件拷贝
将文件拷贝到容器中
1
| docker cp 需要拷贝的文件or目录 容器名称:容器目录
|
文件从容器拷贝除来
1
| docker cp 容器名称:容器目录 需要拷贝的文件or目录
|
目录挂载
创建容器时,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器
创建容器 添加-v
参数 后面为 宿主机目录:容器目录
例如:
1
| docker run -di -v /usr/local/myhtml:/var/local/myhtml --name=mycentos3 centos:7
|
如果你共享的是多级目录,可能会出现权限不足的提示
因为centos7中的安全模块selinux把权限禁掉了,我们需要添加参数--priviledged=true
来解决挂载的目录没有权限问题
查看容器ip
可用以下命令查看容器运行各种参数
1
| docker inspect 容器名称(容器id)
|
也可以直接执行下面命令输出IP地址
1
| docker inspect --format='{{.Networksettings.IPAddress}}' 容器名称(容器id)
|
删除容器
docker compose
docker-compose cnblog
docker-compose 简书
docker-compose 菜鸟教程
参考资源
菜鸟教程
docker常用命令
docker-compose
docker-compose1
docker & docker-compose