docker基础学习

docker、镜像、容器的简要关系

docker 是操作镜像和容器的一个工具;
镜像 是一个文件系统,镜像可以用来创建、传输、拷贝等,镜像本身是静态的,必须通过实例化来创建和运行容器;
容器 是运行镜像的一个环境,是一个进程,同一个镜像可以实例化并运行多个容器。

一、查看docker

查看docker版本信息

$ docker version
Client:
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.8
 Git commit:        20.10.7-0ubuntu5~20.04.2
 Built:             Mon Nov  1 00:34:17 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version: dial unix /var/run/docker.sock: connect: permission denied

查看docker状态

$ sudo docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 1
 Server Version: 20.10.7
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 ...省略输出...

二、docker镜像

查看本地docker镜像列表

$ sudo docker imagesdocker images ls

$ sudo docker images
REPOSITORY   TAG              IMAGE ID       CREATED       SIZE
kmre2        v2.0-220121.10   e7401f6cf406   8 weeks ago   1.55GB

搜索docker远程仓库上的镜像列表

$ docker search [镜像名称]

$ sudo docker search ubuntu
NAME(名称)                   DESCRIPTION(基本功能描述)                  STARS(下载次数)  OFFICIAL(官方)   AUTOMATED(自动运行)
ubuntu                      Ubuntu is a Debian-based Linux operati…   13901          [OK]       
websphere-liberty           WebSphere Liberty multi-architecture i…   283            [OK]       
ubuntu-upstart              DEPRECATED, as is Upstart (find other …   112            [OK]       
neurodebian                 NeuroDebian provides neuroscience rese…   88             [OK]       
open-liberty                Open Liberty multi-architecture images…   51             [OK]       
ubuntu-debootstrap          DEPRECATED; use "ubuntu" instead          45             [OK]       
ubuntu/nginx                Nginx, a high-performance reverse prox…   36                   
ubuntu/apache2              Apache, a secure & extensible open-sou…   25                   
...省略输出... 

更多docker命令

查看 docker --help 命令

获取/下载docker远程仓库上的镜像

$ docker pull [镜像名称]

$ sudo docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
a4b007099961: Pull complete 
e2b610d88fd9: Pull complete 
......
Digest: sha256:b2ae0f527005d99bacdf3a220958ed171e1eb0676377174f0323e0a10912408a
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
$ sudo docker images   #可以发现,本地镜像增加了mysql
REPOSITORY   TAG              IMAGE ID       CREATED        SIZE
mysql        latest           562c9bc24a08   3 days ago     521MB
kmre2        v2.0-220121.10   e7401f6cf406   2 months ago   1.55GB

查看镜像的详细信息

sudo docker image inspect 容器名:TAG 或者 sudo docker image inspect 容器ID

$ sudo docker image inspect kmre2:v2.0-220121.10 
$ sudo docker image inspect e7401f6cf406 

导出镜像

$ sudo docker save mysql >  mysql_latest.tar.gz

删除镜像

$ sudo docker rmi mysql
Untagged: mysql:latest
Untagged: mysql@sha256:b2ae0f527005d99bacdf3a220958ed171e1eb0676377174f0323e0a10912408a
Deleted: sha256:562c9bc24a0883226e994aabbd09fcb5621a4eadb510df749bc6dac40fa991e3
Deleted: sha256:922f7808fa33c2fbe942423d3feb9a6d7a5f94bec7b9ea0991ab6c2e2f847572
Deleted: sha256:83fffdb572261c1f2e9f19471bd1b508943c501ed370984b5cfd358bc755d2e9
Deleted: sha256:c79d74d1ae5d7c7238dc9e17c11c386fb3831bbeccda13d35692c487e830cb30
Deleted: sha256:890829e2a3ea27a0c97567b48b3ee2d35ec518c831445b52b3a9b9350a407b19
Deleted: sha256:dc2d56ca2bf65894556989944f5bb43be8c85b846a65f939f14db0a13faed901
Deleted: sha256:2bfa38aa4a121c3003184e53f583ae27b3644308bf97ddbc307f06a0d6d29c9a
Deleted: sha256:fa808b36c749c5f8b97a9fa391bba83e4d71a81089a671079f5e9964d41ef21c
Deleted: sha256:25deea191944f6927352c94aac19b93fe4f06032f6287f7a8e671d182bb939ac
Deleted: sha256:118be3e0025663818f84526b895923c708e254ea16704cfb6f72e3595769160f
Deleted: sha256:093b2e6fd07228b0ce4dcffdcd1bd5cd5cff4758e7a92f9ef00002c38593a550
Deleted: sha256:f43f525e5700c371aca941af470de540c77e9f668d5357a31b9d01e9d3d1e825
Deleted: sha256:4e7bd47e4668c217f6eeba3b515d55d485e069ec297e0d1f5b0d643eb0478c72
$ sudo docker images
REPOSITORY   TAG              IMAGE ID       CREATED        SIZE
kmre2        v2.0-220121.10   e7401f6cf406   2 months ago   1.55GB

导入本地镜像

$ sudo docker image load -i mysql_latest.tar.gz 
4e7bd47e4668: Loading layer [==================================================>]  72.55MB/72.55MB
f0555419074a: Loading layer [==================================================>]  338.4kB/338.4kB
96534622c790: Loading layer [==================================================>]  9.556MB/9.556MB
ff20f82e147d: Loading layer [==================================================>]  4.087MB/4.087MB
3f69e3bbc6aa: Loading layer [==================================================>]  2.048kB/2.048kB
948c016bd7b0: Loading layer [==================================================>]  55.14MB/55.14MB
89f80e698b7c: Loading layer [==================================================>]  6.656kB/6.656kB
57be03d114e8: Loading layer [==================================================>]  3.584kB/3.584kB
353fea563082: Loading layer [==================================================>]  384.4MB/384.4MB
c7960100fd23: Loading layer [==================================================>]  5.632kB/5.632kB
a86d8ea6ddfa: Loading layer [==================================================>]   16.9kB/16.9kB
6b3b2a71e75e: Loading layer [==================================================>]  1.536kB/1.536kB
Loaded image: mysql:latest

更多镜像管理命令

查看 docker image --help 命令

三、docker容器

创建并启动(运行)容器

$ sudo docker run [选项] 镜像名

选项

-i           以交互模式运行容器,通常与 -t 同时使用;
-t           分配一个伪输入终端,通常与 -i 同时使用;
-d           后台运行容器,并返回容器ID;
-p           定端口映射,格式为:主机(宿主)端口:容器端口;
-P           随机端口映射,容器内部端口随机映射到主机的端口;
--name="XXX" 为容器指定一个名称;
$ sudo docker run -it mysql bash
root@f551663fe0f8:/# exit       
exit
  • 每执行一次docker run命令都将创建和启动(运行)一个新的容器,并具有不同的容器ID和容器名。
  • 在当前终端执行run创建一个容器后,执行exit命令会退出并关闭(停止运行,而不是删除)容器,而在其他终端进入容器后执行exit命令只会退出而不关闭容器。
  • 当执行docker run命令后容器无法正常运行时,一般可以考虑是没有启用交互模式造成的。
  • docker run命令比较重要,但要想掌握,需要吸收更多知识才行。

查看系统中的容器列表

$ sudo docker ps [选项]
-a 选项,可以列出所有容器
-l 选项,可以列出最后一次运行的容器

$ sudo docker ps -a 
CONTAINER ID   IMAGE                  COMMAND        CREATED      STATUS       PORTS     NAMES
74c766c91227   kmre2:v2.0-220121.10   "/init.kmre"   9 days ago   Up 5 hours             kmre-1000-hollowman

开启(运行)一个关闭(停止运行)的容器

$ sudo docker start 容器ID  

关闭(停止运行)容器

$ sudo docker stop 容器ID  

进入(登录)一个已经运行的容器

$ sudo docker exec -it 容器ID bash 

删除容器

$ sudo docker rm 容器ID

默认只能删除关闭(停止运行)的容器,如要强制删除需用-f选项
批量删除多个已经关闭的容器可用sudo docker rm $(sudo docker ps -a)命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值