葛胖胖的小草屋 一言不合 rm -fr /

Docker常用命令汇总,和常用操作举例

2019-01-06
cossete

阅读:


Docker命令

docker 常用命令如下

管理命令:

  • container 管理容器
  • image 管理镜像
  • network 管理网络
  • node 管理Swarm节点
  • plugin 管理插件
  • secret 管理Docker secrets
  • service 管理服务
  • stack 管理Docker stacks
  • swarm 管理Swarm集群
  • system 查看系统信息
  • volume 管理卷

如:docker container ls 显示所有容器

普通命令:

  • attach 进入一个运行的容器
  • build 从一个DockerFile构建镜像
  • commit 从容器创建一个镜像
  • cp 从容器和主机文件系统之间拷贝文件
  • create 创建一个容器
  • diff 检查容器文件系统上的更改
  • events 从服务器获取实时事件
  • exec 在正在运行的容器中运行命令
  • export 将容器的文件系统导出为tar存档
  • history 显示镜像的历史记录
  • images 查看镜像列表
  • import 从归档文件中创建镜像
  • info 显示系统范围的信息
  • inspect 返回Docker对象的低级信息
  • kill kill运行中的容器
  • load 从存档或者STDIN加载镜像
  • login 登陆docker镜像仓库
  • logout 退出docker镜像仓库
  • logs 获取一个容器的日志
  • pause 暂停一个或多个容器中的所有进程
  • port 查看端口映射或容器的特定映射列表
  • ps 查看容器列表
  • pull 从镜像仓库拉取镜像
  • push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
  • rename 重命名容器
  • restart 重启容器
  • rm 删除容器
  • rmi 删除镜像
  • run 创建一个新的容器并运行一个命令
  • save 将指定镜像保存成 tar 归档文件
  • search 从Docker Hub搜索镜像
  • start 启动容器
  • stats 实时显示容器资源使用情况的统计信息
  • stop 停止容器
  • tag 标记本地镜像,将其归入某一仓库
  • top 展示一个容器中运行的进程
  • unpause 恢复容器中所有的进程
  • update 更新容器配置
  • version 显示Docker的版本信息
  • wait 阻塞直到容器停止,然后打印退出代码

如:docker images 显示所有镜像

下面将分别介绍一些常用操作

docker 拉取并运行一个镜像

1、下载镜像

$ docker pull centos 

2、查看已经下载的镜像

$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              49f7960eb7e4        6 weeks ago         200MB
    hello-world         latest              f2a91732366c        8 months ago        1.85kB

3、运行一个镜像并生成容器 //运行一个centos镜像,并执行/bin/bash命令

$ docker run centos /bin/bash

输入命令docker ps或者docker container ls查看运行中的容器,发现列表为空,原因是容器在执行完成命令后会自动退出,下面介绍让让容器停留在后台的方法

$ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    
$ docker container ls
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

使用命令docker ps -a或者docker container ls -a 查看所用容器,并显示了容器的状态

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
5525373371f3        centos              "/bin/bash"         7 minutes ago       Exited (0) 7 minutes ago                        nifty_rosalind

docker 让镜像运行停留在后台

1、启动一个容器并后台运行

docker run命令 通过增加-i -t参数可以让容器并进入容器

docker run -i -t centos /bin/bash

按 Ctrl + P + Q 退出容器,再用 docker ps 进行查看

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
61b041e4e063        centos              "/bin/bash"         3 minutes ago       Up 3 minutes                            nervous_saha

状态显示仍在运行中

docker 进入一个运行的容器

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
36afde543eb5        mysql:5.7           "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:3306->3306/tcp   mymysql
$ docker exec -it 36afde543eb5 /bin/bash

-i 保持STDIN打开 -t 分配一个虚拟TTY窗口

docker 提交一个镜像到镜像仓库

1、首先到https://hub.docker.com/注册一个账号,保存下用户名密码 2.控制台登陆dockerhub账户

$ docker login
    输入刚注册的用户名密码

2、查看镜像

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              f06a5773f01e        2 days ago          83.4MB

3、选择需要上传的镜像,重命名为指定的格式

$ docker  tag redis username/myredis:v1

username:为自己注册的用户名

myredis:为自己为镜像取的名字

v1:为任意设置的版本号

4、完成上述操作后,即可提交镜像到自己的仓库

docker push username/myredis:v1

docker 映射文件从宿主机到容器,端口号映射

//将宿主机的81端口映射到容器的80端口 //将宿主机的/develop/data卷,映射到容器的/data卷

$ docker run -i -t -p 81:80 -v /develop/data:/data  centos /bin/bash

-p:映射端口号 -v:磁盘目录映射

docker 更改端口号映射

运行中的容器无法映射新的端口号,也无法更改端口号映射,但可以通过两种方法解决

1、iptable转发端口

//查看容器ip
$ docker inspect 36afde543eb5 | grep IPAddress
"IPAddress": "172.17.0.2"

//将主机的8081端口映射到宿主机的8080端口
$ iptables -t nat -A  DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.2:8080

2、先提交容器为镜像,再运行这个容器,同时指定新的端口映射

//提交容器为镜像
$ docker commit 9995ffa15f46  mycentos:0.1
//停止旧的容器
$ docker stop 9995ffa15f46
//重新从旧的镜像启动容器
$ docker run -i -t  -p 8081:8080  mycentos:0.1

从DockerFile创建镜像
$ docker build -t myimage:v1 .

-t :指定镜像名称和标签,格式为'name:tag' .: 最后一个点代表当前目录,也可以换成其它的路径

Comments

Content