欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

docker常用命令

程序员文章站 2022-04-10 11:45:33
docker基本命令 1、查看帮助 2、镜像管理 2.1、搜索镜像 2.2、查看镜像 2.3、拉取镜像 2.4、删除镜像 2.5、保存镜像 2.6、载入保存的镜像 2.7、给镜像设置标签 2.7、上传镜像 2.8 构建镜像 3、容器操作 3.1、 运行容器 3.2、进入容器 (1)docker at ......

---------------------------- 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                          // 通过文件构建

 

docker常用命令

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