zl程序教程

您现在的位置是:首页 >  工具

当前栏目

学习docker——命令总结

2023-09-14 08:56:53 时间

  安装docker的方法可以参考:UbuntuCentOSWindowsMacOS

  

查看版本信息

→ ~ $ docker --version
Docker version 18.03.1-ce, build 9ee9f40
→ ~ $ docker -v
Docker version 18.03.1-ce, build 9ee9f40

  

查看docker系统范围的信息

→ ~ $ docker info
Containers: 10
 Running: 1
 Paused: 0
 Stopped: 9
..........省略了很多信息

  

拉取镜像

  语法:docker pull [OPTIONS] image_name[:TAG|@DIGEST]

  如果省略tag,则表示拉取镜像的最新版,即latest

→ ~ $ docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
b234f539f7a1: Pull complete
55172d420b43: Pull complete
5ba5bbeb6b91: Pull complete
43ae2841ad7a: Pull complete
f6c9c6de4190: Pull complete
Digest: sha256:b050c1822d37a4463c01ceda24d0fc4c679b0dd3c43e742730e2884d3c582e3a
Status: Downloaded newer image for ubuntu:16.04

  

查看镜像的列表

→ ~ $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               5e8b97a2a082        3 weeks ago         114MB
→ ~ $ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               5e8b97a2a082        3 weeks ago         114MB

  

让指定的镜像运行指定的命令

  语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

→ ~ $ #让ubuntu:16.04这个镜像执行echo demo命令
→ ~ $ docker run ubuntu:16.04 /bin/echo demo
demo

  

运行某个镜像,并进入他的终端

  同样是dcoker run命令,只不过要增加两个参数 -t 表示运行终端,-i 表示允许镜像接收输入,如果没有-i选项,虽然可以进入镜像的终端,但是终端中却不会执行输入的命令。

→ ~ $ docker run -t ubuntu:16.04
root@f2b4c76ecd31:/# echo demo   #不会执行
^C
→ ~ $ docker run -t -i ubuntu:16.04  #加上-i选项之后,才会接收命令,并执行,然后返回结果
root@d4f1a80e3e03:/# echo demo
demo
root@d4f1a80e3e03:/#

  

删除镜像

  语法:docker rmi [OPTIONS] images:tag [image_name:tag...]

→ ~ $ docker rmi ubuntu:16.04
Error response from daemon: conflict: unable to remove repository reference
"ubuntu:16.04" (must force) - container eaf56a153cfc is using its referenced
image 5e8b97a2a082
→ ~ $ docker rmi -f ubuntu:16.04
Untagged: ubuntu:16.04
Untagged: ubuntu@sha256:b050c1822d37a4463c01ceda24d0fc4c679b0dd3c43e742730e28
84d3c582e3a
Deleted: sha256:5e8b97a2a0820b10338bd91674249a94679e4568fd1183ea46acff63b9883e9c

  删除镜像后,镜像所占的空间并不会立即释放。

 

登录到镜像库

  语法:docker login [OPTIONS] [SERVER]

  如果不指定server时,默认的是登录到docker hub,地址是:https://hub.docker.com/,注册之后登录。

  如果你登录的是hub.docker.com,那么就不要再server的位置写hub.docker.com

→ ~ $ docker login
Login with your Docker ID to push and pull images from Docker Hub.
 If you don't have a Docker ID, 
head over to https://hub.docker.com to create one.
Username: ******
Password:
Login Succeeded

  

  如果是在shell脚本中登录到docker仓库,可以使用-u 和-p选项

#!/bin/bash
#登录到镜像仓库

#登录到外网的hub.docker.com
#docker login -u username -p userpwd

#登录到hub.server.com
#docker login -u username -p userpwd hub.server.com

  

退出登录

  和登录过程类似

→ ~ $ docker logout 				 #默认是从hub.docker.com退出
Removing login credentials for https://index.docker.io/v1/
→ ~ $ 
→ ~ $ docker logout  hub.whichserver.com 	 #从hub.whichserver.com退出
Not logged in to hub.whichserver.com

  

对容器进行操作

→ ~ $ docker ps  #查看正在运行的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
2b76729da804        training/webapp     "python app.py"     14 hours ago        Up 14 hours         0.0.0.0:32768->5000/tcp   hardcore_meitner
→ ~ $
→ ~ $
→ ~ $ docker pause 2b76729da804 #暂停容器运行
2b76729da804
→ ~ $
→ ~ $
→ ~ $ docker ps   #查看正在运行的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f2b4c76ecd31        ubuntu:16.04        "/bin/bash"         3 hours ago         Up 3 hours                              pedantic_leavitt
f8b790400a64        ubuntu:16.04        "/bin/bash"         3 hours ago         Up 3 hours                              competent_ride
→ ~ $ docker stop f2b4c76ecd31 #停止容器的运行
f2b4c76ecd31
→ ~ $ docker start f2b4c76ecd31 #启动一个被停止的容器
f2b4c76ecd31
→ ~ $ docker ps  #查看正在运行的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f2b4c76ecd31        ubuntu:16.04        "/bin/bash"         3 hours ago         Up 4 seconds                            pedantic_leavitt
→ ~ $ docker start f2b4c76ecd39   # 错误,因为容器ID错误,没有改容器
→ ~ $
→ ~ $
→ ~ $ docker rm f2b4c76ecd31  #删除一个正在运行的容器会失败,需要先将运行的容器stop之后,再进行rm
Error response from daemon: You cannot remove a running container
f2b4c76ecd31589e4393676865cd055dd660553f2428bcdfe52dc8a451beee97. 
Stop the container before attempting removal or force remove
→ ~ $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f2b4c76ecd31        ubuntu:16.04        "/bin/bash"         4 hours ago         Up 4 minutes                            pedantic_leavitt
→ ~ $ docker stop f2b4c76ecd31   #停止容器运行
f2b4c76ecd31
→ ~ $ docker rm f2b4c76ecd31    #删除一个已经停止的容器
f2b4c76ecd31

  注意:删除容器使用的rm,删除镜像使用rmi

 

上传镜像

  标记镜像  docker tag exists_image:tag  new_image_name:new_tag

→ ~ $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               5e8b97a2a082        3 weeks ago         114MB
→ ~ $ docker ubuntu:16.04 my_img:v1
docker: 'ubuntu:16.04' is not a docker command.
See 'docker --help'
→ ~ $ docker tag ubuntu:16.04 my_img:v1
→ ~ $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my_img              v1                  5e8b97a2a082        3 weeks ago         114MB
ubuntu              16.04               5e8b97a2a082        3 weeks ago         114MB
→ ~ $

  

  上传镜像 

  注意,

  1、在上传镜像之前,要先登录。

  2、你的docker仓库必须要有一个repository,然后你才可以将你的镜像push到这个repository中,否则你的操作就是非法的。

  3、进行打tag时,new_image_name其实就是repository的名字,new_tag就是上传之后,你的镜像版本。

  比如,有一个ganlixin/ubuntu仓库,那么,

→ ~ $ docker tag ubuntu:16.04 ganlixin/centos:v1
→ ~ $ docker push ganlixin/centos:v1
The push refers to repository [docker.io/ganlixin/centos]
2de391e51d73: Pushed
d73dd9e65295: Pushed
686245e78935: Pushed
d7ff1dc646ba: Pushed
644879075e24: Pushed
v1: digest: sha256:689aa49d87d325f951941d789f7f7c8fae3394490cbcf084144caddba9c1be12 size: 1357
→ ~ $

  登录docker,查看tag