Linux——Docker基本操作命令

Docker

Docker基本操作逻辑图

在这里插入图片描述

一、Docker镜像操作

​ Docker运行容器前需要本地存在对应的镜像,如果不存在的话,Docker就会尝试从默认镜像仓库 https://hub.docker.com下载,这是由Docker官方维护的一个公共仓库,可以满足用户的绝大部分需求,用户也可以通过配置来使用自定义的镜像仓库。

1.搜索镜像

[root@docker ~]# docker search  dhcp
NAME                DESCRIPTION                   STARS          OFFICIAL   AUTOMATED
networkboot/dhcpd   Suitable for running a DHCP server for your …    48      [OK]
joebiellik/dhcpd    DHCP server running on Alpine Linux             18       [OK]
gns3/dhcp           A DHCP container for GNS3 using dnsmasq         4        [OK]
modularitycontainers/dhcp-server     ISC DHCP server              2          [OK]
instantlinux/dhcpd-dns-pxe   Serve DNS, DHCP and TFTP from a small Alpine…   2   [OK]
......
参数 解释
NAME 镜像名称
DESCRIPTION 镜像描述
STARS 镜像星级
OFFICIAL 是否官方创建
AUTOMATEO 是否主动创建

PS:使用docker search dhcp只能查找镜像,镜像的标签无法查找,如果要查看镜像的标签,需要访问https://hub.docker.com进行查找

2.获取镜像

​ 对于镜像来说,如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,既选择标签为latest,也可通过指定的标签来下载特定版本的某一镜像,这里的标签就是用来区分镜像版本的。

[root@docker ~]# docker pull  docker.io/networkboot/dhcpd
Using default tag: latest
latest: Pulling from networkboot/dhcpd
898c46f3b1a1: Pull complete 
63366dfa0a50: Pull complete 
041d4cd74a92: Pull complete 
6e1bee0f8701: Pull complete 
114483241095: Pull complete 
ef446bdcb1f0: Pull complete 
Digest: sha256:fdc7ff6f265249a104f32f1d7aed0aedaf2f2fc62ea10eebf596e2af3b670477
Status: Downloaded newer image for networkboot/dhcpd:latest

3.查看镜像信息

[root@docker ~]# docker  images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
networkboot/dhcpd   latest              52cbff801df2        17 months ago       105MB
参数 解释
REPOSITORY 镜像属于的仓库
TAG 镜像的标签信息,标记同一个仓库中的不同镜像
IMAGE ID 镜像的唯一ID号,唯一标识了该镜像
CREATED 镜像创建时间
SIZE 镜像大小

可以根据ID号来获取镜像的详细信息

[root@docker ~]# docker inspect  52cbff801df2
[
    {
        "Id": "sha256:52cbff801df2c6e2da3866d9f9476f20f190f64a0e886fbdfa79d843befa666a",
        "RepoTags": [
            "networkboot/dhcpd:latest"
        ],
        "RepoDigests": [
            "networkboot/dhcpd@sha256:fdc7ff6f265249a104f32f1d7aed0aedaf2f2fc62ea10eebf596e2af3b670477"
        ],
......

PS:详细信息中包括创建时间、系统版本、主机名、域名、用户、卷、标签、操作系统、设备ID等各种信息。

为本地的镜像添加自定义标签

[root@docker ~]# docker tag  docker.io/networkboot/dhcpd  dhcp:dhcp
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
dhcp                dhcp                52cbff801df2        17 months ago       105MB
networkboot/dhcpd   latest              52cbff801df2        17 months ago       105MB

4.删除镜像

删除镜像有俩种方法:

  • 使用镜像的标签删除镜像
  • 使用镜像的ID删除镜像

语法:

[root@docker ~]# docker rmi  qq:qq 
Untagged: qq:qq
或者
[root@docker ~]# docker rmi  7e6257c9f8d8
Untagged: centos:7
Untagged: centos@sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Deleted: sha256:7e6257c9f8d8d4cdff5e155f196d67150b871bbe8c02761026f803a704acb3e9
Deleted: sha256:613be09ab3c0860a5216936f412f09927947012f86bfa89b263dfa087a725f81

5.存储镜像和载入镜像

导出镜像

[root@docker ~]# docker save -o dhcp.tar dhcp:dhcp 
或
[root@docker ~]# docker save  >  dhcpd.tar  dhcp:dhcp 
[root@docker ~]# ls
dhcpd.tar  dhcp.tar 

载入镜像

[root@docker ~]# docker load  -i dhcp.tar 
Loaded image: dhcp:dhcp
或
[root@docker ~]# docker load  < dhcpd.tar 
Loaded image: dhcp:dhcp

6.上传镜像

​ 上传到公共仓库,默认会上传到Docker Hub官方仓库。需要注册使用公共仓库的账号,可以使用dockerlogin命令来输入用户名、密码和邮箱来完成注册和登录,在上传之前需要给本地的镜像添加标签然后进行上传。

#登录docker Hub
[root@docker ~]# 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: 3********1
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
#上传到仓库
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker/dhcp         centos7.3           52cbff801df2        17 months ago       105MB
[root@docker ~]# docker push  docker/dhcp:centos7.3 

二、Docker容器操作

容器是Docker的领一个核心概念,简单来说,容器是镜像的一个运行实例,是独立运行的 一个或一组应用及他们所必须的运行环境,包括文件系统,系统类库、Shell环境等。镜像只是只读模板,而容器会给这个只读模板一个额外的可写层。

1.容器的创建

常用选项:

  • -i:表示让容器的输入保持打开
  • -t:表示让Docker分配一个伪终端
  • -d:表示在后台运行这个容器
  • –name:表示给容器命名
  • –restart=always:表示始终保持运行(随着docker开启而运行)
  • –rm :会随着退出容器的操作而删除容器
root@docker ~]# docker run  -itd --name  test1 centos:7 
5582f02a94b70b57153c788cc4138991a7766f36dc4e7ec7f169d269737c29e9
或:
[root@docker ~]# docker create  -it --name  test2 centos:7 
95004a70d03c285923257d86cf6270d7bbce91f0d9213fd3aa163c8e4eaff1f8

create创建容器完成之后,容器是created的状态。

PS:如果此处创建容器命令报错“WARNING: IPv4 forwarding is disabled. Networking will not work.”,就使用 vi 编辑器打开/usr/丨ib/sysctl.d/00- system.conf 文件,在其中添加net.ipv4.ip_forward=1, 然 后 使 用 service network start命令重启网络服务

查看容器(正在运行的)

[root@docker ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND      CREATED     STATUS         PORTS          NAMES
5582f02a94b7   centos:7  "/bin/bash"  7 minutes ago       Up 7 minutes         test1

查看容器(不在运行的)

[root@docker ~]# docker ps  -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
95004a70d03c        centos:7            "/bin/bash"         9 minutes ago       Created                                 test2
5582f02a94b7        centos:7            "/bin/bash"         10 minutes ago      Up 10 minutes                           test1

PS:显示容器的ID号、加载的镜像、运行的程序、创建时间、目前所处的状态、端口映射、容器名称等。

2.容器的运行

​ 容器的开启和关闭,关键字不仅是可以用容器名称来指定,也可以用容器ID来控制开启关闭等。

开启

[root@docker ~]# docker start test2
test2

关闭

[root@docker ~]# docker stop test2
test2

重启

[root@docker ~]# docker restart test2
test2

挂起

[root@docker ~]# docker pause test2
test2

恢复

[root@docker ~]# docker unpause test2 
test2

强制启动所有容器

同理,还可以有强制停止、重启、挂起等操作

[root@docker ~]# docker ps  -a -q | xargs  docker start
394b66ce30c4

3.容器的进入

[root@docker ~]# docker exec -it test1 /bin/bash
[root@5582f02a94b7 /]# exit
exit
或
[root@docker ~]# docker attach  test1
[root@5582f02a94b7 /]# exit
exit

区别:

  • 进入方式:
    exec 进入的方式需要添加-i -t选项,后边还需要给容器一个shell环境。但attach就不需要这么麻烦,可以直接进入。
  • 退出状态:
    exec 进入的方式: 如果执行exit退出,容器仍然保持运行。attach : 如果执行exit退出,容器会被关闭。如果想要保持容器不被关闭,可以使用键盘: Ctrl + p Ctrl + q 可以实现。
  • 本质上去区别:
    exec 进入的方法,会生产新的进程。attach不会生产新进程。

4.容器的导出和导入

语法:

容器在运行和停止状态都可以导出

docker 	 export    容器  ID/名称>文件名

导出95004a70d03c容器到文件beifen下

[root@docker ~]# docker export  95004a70d03c>beifen
[root@docker ~]# ls[root@docker ~]# ls -l beifen 
-rw-r--r-- 1 root root 211081216 8月  28 17:57 beifen

将导出的文件beifen文件成为本地镜像

[root@docker ~]# cat beifen  | docker import - beifen:111
sha256:3b62405721d512baa1a1998ce16a8533d19a8bd9fc14b3c94e47658d4202bb3a
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
beifen              111                 3b62405721d5        10 seconds ago      203MB

把容器直接制作成镜像

[root@docker ~]# docker commit  test1   test:1.10
sha256:fbd634954fec30e4188a0ef658c182921c22c6fe26109b0603cf90b2316a13ee
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                1.10                fbd634954fec        5 seconds ago       311MB

5.容器的删除

删除容器之前先把容器停止

[root@docker ~]# docker rm test1 
test1

如果要删除一个正在运行的容器,添加-f选项强制删除

[root@docker ~]# docker rm -f test2 
test2

强制删除所有容器(声场环境禁止使用)

[root@docker ~]# docker ps -a -q | xargs  docker rm -f
4083bff845ca

6.宿主机与容器之间互相传东西

[root@docker ~]# docker run -itd --name test1  centos:7 
4083bff845cabc18391677731b94633ebb64681144873c34f1be6833d4e2b1ee
[root@docker ~]# docker cp  dhcp.tar  test1:/root   //互传东西

#登录容器test1查看是否互传成功
[root@docker ~]# docker exec  -it test1  /bin/bash
[root@4083bff845ca /]# cd /root
[root@4083bff845ca ~]# ls
anaconda-ks.cfg  dhcp.tar

猜你喜欢

转载自blog.csdn.net/weixin_45191791/article/details/108285336