镜像
容器
仓库
下面记录下docker使用过程中在镜像、容器、仓库的常用命令。
1
2
3
| docker version #查看docker版本
docker info #查看docker info信息
docker --help #docker help
|
1
2
3
4
5
| docker images #在本地上查看已有镜像
-a 列出所有的镜像
-q 只显示镜像id
--digets 显示摘要信息
--no-truns
|
1
2
3
4
5
6
| docker search 镜像名 #docker搜索某个镜像
docker pull 镜像名 #docke上传镜像
docker rmi 镜像id #docke删除镜像
docker rm -f 镜像名 #删除单个镜像
docker rmi 镜像名1:tag1 镜像名2:tag2 #删除多个镜像
docker rmi -f $(docker images -q) #删除全部镜像
|
新建并启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| docker run [options] IMAGE [command][ARG...]
options:
--name 为容器指定一个新名称
-d 后台运行容器
-t 交互式方式运行
-i 启动一个伪终端
-p 指定端口映射 (物理本机端口:容器端口)
-v 本地目录:容器目录
-P 随机端口映射 (大写P)
-it 用tty方式运行以交互模式运行
-privileged=true 启动容器时开启特权模式
-c "echo $PATH" #启动容器执行shell命令
/bin/bash # 启动容器,在容器内执行/bin/bash命令。
/bin/bash cs1.sh; cs2.sh; cs3.sh # docker容器启动时执行多个sh脚本 (需要启动的脚本,要放在 /etc/init.d/目录下,修改权限; chkconfig --add cs.sh chkconfig cs.sh on )
python3 tools_api.py #启动api.py文件,这样可以不需要再Dockfile中指定 CMD命令,或者覆盖Dockfile中的CMD命令。(这样就将环境和代码分离 否则如果将py文件打包到镜像中的话,任何对代码的修改都必须重新生成镜像。)
|
eg:
1
2
3
4
5
| docker run -d -p 5000:5000 --privileged=true -v /home/.registry/data:/home/.registry/lib --restart=always --name pirvi_registry registry
docker run -p 5422:22 -it --privileged=true 192.168.15.175:5000/centos-cpp:7 sh
docker run -v /usr/ToolsAPIDir:/ToolsAPIDir1 -d -p 5005:5004 -it toolsapi:v8 python3 tools_api.py
docker run -idt ***/*** /bin/bash cs1.sh; cs2.sh; cs3.sh
docker run ubuntu bash -c "echo $PATH"
|
1
2
3
| docker run #创建一个新的容器并运行一个命令
docker exec #exec是针对已运行的容器实例进行操作,在已运行的容器中执行命令,不创建和启动新的容器
docker attach #将本机的标准输入(键盘)、标准输出(屏幕)、错误输出(屏幕)附加到一个已经运行的容器,也就是说本机的输入直接输到容器中,容器的输出会直接显示在本机的屏幕上
|
eg:
1
2
3
4
5
6
| docker run -it nginx:latest /bin/bash #用镜像nginx:latest以交互模式启动一个新容器,在容器内执行/bin/bash命令。
docker exec -it mynginx /bin/sh /root/fffmo.sh #在容器 mynginx 中以交互模式执行容器内 /root/fffmo.sh 脚本:
docker attach nginx-4 #可以attach到一个已经运行的容器nginx-4的stdin,然后进行命令执行的动作。
但是需要注意的是,如果从这个stdin中exit,会导致容器的停止。
如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器。
|
列出所有运行的容器
1
2
3
4
5
6
| docker ps [options]
options
-a 列出所有正在运行的容器+历史运行过的
-l 显示最近创建的容器
-n 显示最近N个创建的容器
-q 只显示容器id
|
退出容器
1
2
| exit : 退出并停止容器
ctrl + p +q :退出不停止容器
|
启动容器
1
| docker start 容器id or 容器名称
|
重启容器
1
| docker restart 容器id or 容器名称
|
停止容器
1
| docker stop 容器id or 容器名称
|
删除容器
删除多个容器
1
2
| docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
|
强制停止容器
1
| docker kill 容器id or 容器名称
|
后台方式运行容器
查看日志
1
| docker logs -f -t --tail 容器id
|
查看容器内的进程
查看容器的详细信息
进入正在运行的容器,并以前台方式运行
1
2
| docker exec -t 容器id bashshell 产生新进程
docker attach 容器id 进入容器,不产生新进程
|
从容器内拷贝文档到主机
1
2
| docker cp 容器Id:容器内路径 主机路径
docker cp 96f7f14fffmo:/www /tmp/ # 将容器96f7f14fffmo的/www目录拷贝到主机的/tmp目录中。
|
docker仓库登录 :
1
| docker login #命令来输入用户名、密码和邮箱来完成注册和登录
|
从仓库拉取镜像
搜索镜像
1
| docker search [想要搜索的镜像名]
|
创建和使用私有仓库:
安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:
1
| docker run -d -p 5000:5000 registry
|
默认情况下,会将仓库创建在容器的/tmp/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径上。
例如下面的例子将上传的镜像放到/opt/data/registry目录:
1
| docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
|
此时,在本地将启动- 个私有仓库服务,监听端口为5000。
docker run 命令执行时如果发现本地没有对应的镜像,则会先去拉取镜像再运行
使用docker tag命令把镜像的仓库标记为私有仓库机子地址
1
| docker tag ubuntu2:16.04 10.0.2.2:5000/test
|
使用docker push命令上传镜像:
1
| docker push 10.0.2.2:5000/test
|
用curl查看私有仓库的镜像是否上传成功
1
| curl http://10.0.2.2:5000/v1/search
|
使用docker pull命令下载镜像:
1
| docker pull 10.0.2.2:5000/test
|