当前位置: 移动技术网 > IT编程>脚本编程>Python > docker常用命令

docker常用命令

2018年06月06日  | 移动技术网IT编程  | 我要评论

阿格尼斯迪恩,校花攻略txt下载,泫雅 张贤胜

---------------------------- docker基本命令---------------------------

1、查看帮助

docker  --help           //  查看命令
docker  command   --help       //  查看命令的选项
docker  help  command          //  查看命令的选项

 

2、镜像管理


2.1、搜索镜像

[root@localhost ~]# docker search python | less    // 搜索镜像

 

2.2、查看镜像

docker images  --help

options:         
   -a, --all                       // 显示所有镜像
   -f, --filter=[]                 // 过滤显示
   --no-trunc                      // 不截断输出(显示完整ID)
   -q, --quiet                     // 只显示镜像ID

例:
[root@localhost ~]# docker  images                          // 查看镜像
[root@localhost ~]# docker  images  | head                  // 默认查看前十个
[root@localhost ~]# docker images -f "dangling=true"        // 显示没用 tag标签的镜像

 

 

2.3、拉取镜像

[root@localhost ~]# docker pull python            // 拉取镜像,默认从 docker hub拉取
[root@localhost ~]# docker pull python:2.7       // 拉取镜像python,标记 为2.7的
docker pull <path_to_registry>/<image_or_repository>

 

 

2.4、删除镜像

docker rmi --help

options:
   -f,  --force               // 强制删除
   --no-prune        
[root@localhost ~]# docker rmi  centos                     // 删除镜像

 

 

2.5、保存镜像

[root@localhost ~]# docker save -o nginx.tar   jack/my-nginx:v8

 

 

2.6、载入保存的镜像

[root@localhost ~]# docker  load  -i  nginx.tar

 

 

2.7、给镜像设置标签

语法:   docker tag IMAGE [REGISTRYHOST/][USERNAME/]NAME[:TAG]

[root@localhost ~]# docker tag shrikrishna/code.it:v1 shrikrishna/code.it:latest

 

 

2.7、上传镜像

语法: docker push NAME[:TAG]

 

 

2.8  构建镜像

Docker build [OPTIONS] PATH | URL | -               // 构建镜像

OPTIONS:
    -t, --tag=""         // 镜像标签
    -q, --quiet           // 不输出信息,默认输出
    --rm=true
    --force-rm
    --no-cache             // 构建时不使用缓存

 

 

 

3、容器操作

3.1、 运行容器

docker  run  --help

语法: docker run [options] IMAGE [command] [args]

options:
   -a, --attach list       //  
  -d, --detach             // 运行在后台,并打印容器ID
  -i, --interactive            // 打开命令交互
  -t, --tty                     // 分配一个伪终端
  -p, --publish list         // 为容器映射端口
    -p  ip:hostPort:containerPort
    -p  ip::containerPort
    -p  hostPort:containerPort
    -p  hostPort:containerPort
  -P, --publish-all            // 使用主机的随机端口映射容器的所有端口
  --rm                  // 当容器退出时,自动删除
  --privileged           // 为该容器添加特权
  -v, --volume list            // 为容器绑定一个卷(其实就是主机和容器间文件夹之间的映射)
    -v <container mount path>         // 自动分配目录挂载
    -v <host path>/<container mount path>          // 指定本机目录和容器目录
    -v <host path>/<container mount path>:<read write mode>   //  手工指定本地目录和容器目录, ro是可选,只读
  --volumes-from=[]             // 从另一个容器映射卷,启动不启动都可以映射
  -w, --workdir=""               //为容器内指定一个工作目录
  --name=""                      // 为容器指定一个名字
  -h, --hostname=""           // 为容器指定一个主机
  -u, --user=""                    // 为容器指定一个用户名或UID
  -e, --env=[]                    // 为容器设置一个环境变量
  --env-file=[]                  // 从一个文件中读取环境变量
  --dns=[]                            // 自定 DNS
  --dns-search=[]                      // 自定 域名
  --link=[]                           // 添加一个链接到另外一个容器
  -c, --cpu-shares=0                 // 为容器指定哪个cpu核心
  --cpuset=""                        // 允许哪些cpu执行
  -m, --memory=""                    // 限制容器使用多少内存(<number><b|k|m|g>)
  --restart=""                       // 当容器崩溃时,重启的策略
  no                               // 不重启,默认值
  on-failure                       // 尝试重启次数
  always                          // 一直尝试重启
  --cap-add=""                     // 为容器添加功能
  --cap-drop=""                    // 为容器去掉某些功能
  --device=""                      // 为容器挂载额外的设备


例: [root@localhost ~]# docker run -dt ubuntu ps // 后台运行一个ubuntu镜像并显示容器ID [root@localhost ~]# docker run -p 0.0.0.0:8000:8000 -it --rm –-name OD-pythonserver-2 \ python:2.7 python -m SimpleHTTPServer 8000; [root@localhost ~]# docker run -v $(pwd):$(pwd) -p 0.0.0.0:8000:8000 -it --rm --name OD-pythonserver-3 python:2.7 python -m SimpleHTTPServer 8000; // pwd代表当前目录 [root@localhost ~]# docker run -it --name volume-test1 -h nginx -v /data centos // 挂载目录 [root@localhost ~]# docker run -it --name volume-test4 --volumes-from volume-test1 centos // 挂载其它容器的卷 [root@localhost ~]# docker run -v /:/data:ro ubuntu ls /data // 挂载容器的根目录到主机的/data目录,ro代表只读,rw代表读写 [root@localhost ~]# docker run --device=/dev/video0:/dev/video0 // 挂载主机设备到容器 [root@localhost ~]# docker run --restart=always code.it // 容器崩溃一直重启 [root@localhost ~]# docker run --restart=on-failure:5 code.it

 

 

3.2、进入容器

(1)docker attach  --help

语法:docker attach [OPTIONS] CONTAINER

例:
[root@localhost ~]# docker run -dit --name OD-name-example ubuntu /bin/bash
537264bba8298e0ba60f7f12dd078c5f9380ae2efcc66c426c65db62e221b341
[root@localhost ~]# docker attach OD-name-example
root@537264bba829:/#
[root@localhost ~]# docker run -dit --name OD-nodejs google/nodejs node     // 启动一个nodejs环境
[root@localhost ~]# docker attach OD-nodejs

 

(2)nsenter            // 进入容器的方法2

[root@localhost ~]# yum  -y  install  util-linux
[root@localhost ~]# docker  inspect  --format "{{.State.Pid}}"  mynginx               // 获取一个容器的pid
[root@localhost ~]# nsenter --target 3106 --mount --uts  --ipc  --net --pid            // 通过 pid进入一个容器

 

(3)快速进入容器脚本

#!/bin/bash
CNAME=$1
CPID=$(docker  inspect  --format  "{{.State.Pid}}" $CNAME)
nsenter  --target  "$CPID"  --mount  --uts  --ipc  --net  --pid

 

 

3.3、查看容器

(1)docker ps --help

语法:docker ps [OPTIONS]

OPTIONS:
  -a, --all              // 显示所有容器
  -l, --latest             // 显示最后一个容器
  -q, --quiet            // 只显示容器 ID
  -s, --size                // 显示容器的大小
  -n=""                 // 显示最后的 n个容器
  --before=""        // 显示指定的容器ID或名字前的容器
  --after=""          // 显示指定的容器ID或名字后的容器


例: [root@localhost ~]# docker ps -a // 查看docker所有运行的容器 [root@localhost ~]# docker ps -l // 查看最后运行的一个容器 [root@localhost ~]# docker info // 查看整个容器的信息

 

 

(2)docker logs  --help         // 查看容器日志

[root@localhost ~]# docker logs OD-pythonserver-4

 

 

(3)docker  inspect  --help           // 查看容器的详细信息

例:
[root@localhost ~]# docker inspect  volume-test1        // 以json的方式查看容器或者镜像详细信息
[root@localhost ~]# docker inspect -f  '{{.NetworkSettings.IPAddress}}'   volume-test1  // 查看具体的某个值,可以根据的层级目录来查看,中间用  .  隔开

 

 

(4)docker  top  --help        // 查看容器的使用率,类似主机的top命令

例:
[root@localhost ~]#  docker top OD-ghost-1

 

 

3.4、另存容器

docker  export  --help

例:
[root@localhost ~]#  docker export 21a22d5cdd68 > nginx_latest.tar         // 保存当前的容器

 

 

3.5、导入容器

例:
[root@localhost ~]#  docker import http://example.com/test.tar.gz
[root@localhost ~]#  cat sample.tgz | docker import – testimage:imported

 

 

3.6、容器的其它方法

docker start [-i] [-a] <container(s)>         // 启动一个已经存在的容器
docker  stop    CONTAINER ID               // 停止一个容器
docker restart  CONTAINER ID              // 重启容器
docker pause  c439077aa80a              // 暂停容器
docker unpause c439077aa80a          // 取消暂停
docker    rm       CONTAINER ID             // 删除一个容器
docker  kill  OD-ghost-1               // 杀掉一个容器
docker cp --help      // 从容器里面拷贝文件到本机
docker  port  --help         // 查看容器里面指定端口对应的主机端口
docker  login  --help     // 登陆docker资源服务器,默认是  https://index.docker.io/v1
docker  history  shykes/nodejs         // 显示镜像的历史记录
docker events   --help      // 显示镜像的所有事件
# docker events          // 打开事件监控,不要关闭该页面,另外打开一个页面运行以下命令
# docker  start  code.it
#  docker  stop  code.it           // 会在事件监控页面看到事件
# docker  diff  d5ad60f174d3     // 显示容器发生的变化,C 表示更改,A表示添加,D表示删除

例:
[root@localhost ~]# docker run -dit --name OD-stop-example ubuntu /bin/bash
[root@localhost ~]# docker ps
[root@localhost ~]# docker stop OD-stop-example
[root@localhost ~]# docker ps

[root@localhost ~]# docker run -dit --name OD-restart-example ubuntu /bin/bash
[root@localhost ~]# sleep 15s
[root@localhost ~]# docker ps
[root@localhost ~]# docker restart OD-restart-example
[root@localhost ~]# docker ps
[root@localhost ~]# dockerDocker rm OD-restart-example
[root@localhost ~]# docker rm $(docker ps -a -q)     //  删除所有停止的容器
[root@localhost ~]# docker run -it –name OD-cp-bell ubuntu /bin/bash
[root@localhost ~]# touch $(echo -e '\007')
[root@localhost ~]# docker cp OD-cp-bell:/$(echo -e '\007') $(pwd)

注:docker cp命令,路径不能使用短标签,例如 .   ,  * 等等

[root@localhost ~]# docker port OD-ghost 2368         // 查看容器 2368对应的主机端口

 

 

 

----------------------------------docker 镜像创建--------------------------------------------------------

 

1、docker  commit  --help                         // 提交更改

语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS:
  -p, --pause                   // 在提交时暂停容器
  -m, --message=""              // 描述信息
  -a, --author=""               // 显示作者详细信息
例:
[root@localhost ~]# docker commit -m "Code.it – A browser based text editor and interpreter" -a "Shrikrishna Holla <s**a@gmail.com>" code.it shrikrishna/code.it:v1

 

 

2、手工构建镜像

#  docker run --name nginx-man -it centos             // 创建一个容器并进入
#  安装软件(注意,服务不能以守护模式运行,即:daemon off;)
#   cat  /usr/local/sbin/nginx.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
#  docker  commit  -m  "v2"  401784ba31bf   jack/my-nginx:v2                    //提交
#  docker  run  -d  -p 99:80  jack/my-nginx:v2    /usr/local/sbin/nginx.sh       // 启动镜像并启动nginx

 

 

3、通过指定文件构建镜像

# docker pull centos
# mkdir   /usr/local/src/docker-file/nginx  -pv
# cd /usr/local/src/docker-file/nginx
#  vim  Dockerfile
  # This is My  first  Dockerfile
  # Version 1.0
  # Author:  jack.zang
  # Base  images
  FROM centos
  # MAINTAINER
  MAINTAINER  jack.zang
  # 添加本地文件进docker容器
  ADD  pcre-8.37.tar.gz   /usr/local/src
  ADD  nginx-1.9.3.tar.gz   /usr/local/src
  # RUN
  RUN yum install -y wget gcc gcc-c++  make openssl-devel
  RUN useradd  -s  /sbin/nologin  -M  www
  # 更改当前目录,在Dockfile里面不可以用 cd命令
  WORKDIR  /usr/local/src/nginx-1.9.3
  RUN   ./configure  --prefix=/usr/local/nginx  --user=www  --group=www  --with-http_ssl_module  --with-http_stub_status_module  --with-pcre-8.37  && make && make install
  # 修改nginx配置,以非daemon方式启动
  RUN  echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
  # 设置环境
  ENV  PATH  /usr/local/nginx/sbin:$PATH
  # 开放 80端口
  EXPOSE 80
  CMD["nginx"]

#  docker  build  -t  nginx-file:v1   /usr/local/src/docker-file/nginx                          // 通过文件构建

 

计算机生成了可选文字:
FROM 
MAINTAINER 
RUN 
ADD 
WORKDIR 
VOLUME 
EXPOSE 
RUN 
· 它 的 妈 妈 是 谁 ( 基 础 镜 像 ) 
· 告 诉 别 人 , 你 创 造 了 它 《 维 护 者 信 息 ) 
到 你 想 让 它 干 啥 ( 把 命 令 前 面 加 上 RUN ) 
。 往 它 肚 子 里 放 点 文 件 ( COPY 文 件 , 会 自 动 解 压 ) 
· 我 是 cd , 今 天 刚 化 了 妆 ( 当 前 工 作 目 录 ) 
· 给 我 一 个 存 放 行 李 的 地 方 ( 目 录 挂 载 ) 
· 我 要 打 开 的 门 是 啥 ( 端 囗 ) 
· 奔 跑 吧 , 兄 弟 ! ( 进 程 要 一 直 运 行 下 去 )

# docker  images
# docker run -d -p 8080:80  nginx-file:v1

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网