一、     安装docker

(一)   创建yum安装源

  1. 方法一:通过wget方式下载

    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo

  1. 方法二:手动修改
  2. 执行yum clean all
  3. 执行yum makecache
  4. 查看yum镜像源yum repolist
  5. 查看yum list yum list|grep docker
  6. 执行安装docker命令
cat > /etc/yum.repos.d/docker-ce.repo << EOF
[docker]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0
[extras-docker]
name=extras-docker
baseurl=http://vault.centos.org/7.4.1708/extras/x86_64/
gpgcheck=0 
EOF

(一)   重建yum缓存

  1. 执行yum clean all
  2. 执行yum makecache
  3. 查看yum镜像源yum repolist
  4. 查看yum list yum list|grep docker
  5. 执行安装docker命令

(二)   执行yum安装

  • 执行安装docker命令
  • yum install –y docker-ce
  • 查看docker安装情况
  • rpm –qa|grep docker
  • 查看docekr版本信息
  • docker –version
  • 查看docker信息
  • docker info

二、     Docker启动/停止

  1. 启动docker服务

Systemctl start docker

  1. 设置开机自启动

Systemctl enable docker

  1. 查看docker启动状态

Systemctl status docker

三、     Docker相关概念

Docker 包含了一下几个重要主要部分:

Docker Client 客户端

Docker Daemon 守护进程

Docker Image 镜像

Docker Container 容器

Docker Registry 仓库

(一)   镜像(Image)

镜像是Docker容器的基石,容器基于镜像启动和运行。镜像就好比容器的源代码,保存了用于启动容器的各种条件

(二)   容器(Container)

Docker容器是处于运行状态的镜像,使用一个镜像可以创建多个容器;镜像可以理解为可执行.exe文件,容器是进程;已经运行的容器中,可以将更改的部分创建为镜像。

(三)   仓库(Repository)

docker用仓库来保存用户构建的镜像,仓库分为公有和私有两种,Docker公司提供了一个公有的仓库Docker Hub。

(四)   客户端和守护进程

Docker使用C/S架构,Docker客户端和Docker守护进程通信,Docker守护进程负责构建、运行和分发Docker容器;

Docker客户端和守护进程可以在同一个系统上运行,也可以将Docker客户端连接到远程Docker守护进程;Docker客户端和守护进程使用REST API通过UNIX套接字或者网络接口进行通信。

Docker daemon用来监听Docker API的请求和管理Docker对象,比如镜像、容器、网络等。

Docker Client是与Docker进行交互最主要的方法,比如可以通过docker run来运行一个容器,然后Docker Client会把命令发送给Docker Daemon。

Docker Registry用来存储Docker镜像的仓库;默认情况下,我们使用docker pull或者docker run命令,就会从docker镜像仓库中去拉取镜像,使用docker push命令,会将我们构建的镜像推送到对应的镜像仓库中。

Images镜像,只将基础镜像中变化的部分创建为镜像,运行时将基础镜像与可变部分合并运行。

Containers容器,容器是一个镜像的可运行的实例,使用Docker REST API或者CLI来操作容器;容器的实质是进程,但与直接在宿主机执行的实例进程不同,容器进程属于自己的独立命名空间。容器可以拥有自己的root文件系统、网络配置、进程空间、用户ID。容器内的经常是运行在一个隔离环境里,使用起来,就好像在一个独立于宿主机的系统下操作一样,使得容器封装的应用比直接在宿主机运行更安全。

四、     Docker相关命令

(一)   镜像相关

1.  查看镜像列表—images

docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS说明:

-a 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)

-q 只显示image_id

-f 显示满足条件的镜像

--digests 显示镜像的摘要信息;

--format 指定返回值的模板文件;

--no-trunc 显示完整的镜像id

显示所有镜像和完成镜像id

Docker images -a --no-trunc

2.  拉取镜像—pull

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS说明:

-a :拉取所有 tagged 镜像

--disable-content-trust :忽略镜像的校验,默认开启

从官方镜像仓库拉取版本为7的centos镜像

Docker pull centos:centos7

 3.  查找镜像—search

docker search [OPTIONS] TERM

OPTIONS说明:

--automated :只列出 automated build类型的镜像;

--no-trunc :显示完整的镜像描述;

-f <过滤条件>:列出收藏数不小于指定值的镜像。

从 Docker Hub 查找所有镜像名包含 java,并且收藏数大于 10 的镜像

docker search -f stars=10 java

 4.  删除镜像—rmi

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

-f :强制删除;

--no-prune :不移除该镜像的过程镜像,默认移除;

强制删除本地镜像 runoob/ubuntu:v4。

docker rmi -f runoob/ubuntu:v4

 5.  标记镜像—tag

docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

将REPOSITORY为aaa.test.cn/flink,tag为1.11.3.2的镜像标记为REPOSITORY为10.48.1.2:7688/flink,tag为flink-1.11.3.3

docker tag aaa.test.cn/flink:1.11.3.2 10.48.1.2:7688/flink:flink-1.11.3.3

6.  创建镜像—build

 7.  导入镜像—import

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

OPTIONS说明:

-c :应用docker 指令创建镜像;

-m :提交时的说明文字;

File指本地文件;url为第三方镜像仓库;-为标准输入

从本地文件导入

docker import  my_ubuntu_v3.tar runoob/ubuntu:v4 

从标准输入导入

cat my_ubuntu_v3.tar |docker import - runoob/ubuntu:v4

从第三方仓库导入

docker import http://example.com/exampleimage.tgz

 8.  导出镜像—export

docker export [options] container

docker export jovial_elion > /home/myubuntu-export-1204.tar

 9.  加载镜像—load

docker load [OPTIONS]

OPTIONS 说明:

--input , -i : 指定导入的文件,代替 STDIN。

--quiet , -q : 精简输出信息。

docker load < busybox.tar.gz

docker load --input fedora.tar

10. 保存镜像—save

docker save [OPTIONS] IMAGE [IMAGE...]

OPTIONS 说明:

-o :输出到的文件。

docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3

import/export和load/save的区别

  1. docker import可以重新指定镜像的名字,docker load不可以
  2. export导出的镜像文件大小小于save保存的镜像
  3. export/import会丢失历史和元数据,是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作;save保存(load加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层。

(二)   容器相关

1.  列出容器—ps

docker ps [OPTIONS]

OPTIONS说明:

-a :显示所有的容器,包括未运行的。

-f :根据条件过滤显示的内容。

--format :指定返回值的模板文件。

-l :显示最近创建的容器。

-n :列出最近创建的n个容器。

--no-trunc :不截断输出。

-q :静默模式,只显示容器编号。

-s :显示总的文件大小。

查看所有容器

docker ps -a

只显示容器id

docker ps -q

根据状态过滤容器

docker ps -f  "status= running"

容器状态(STATUS):created(已创建)、restarting(重启中)、running(运行中)、removing(迁移中)、paused(暂停)、exited(停止)、dead(死亡)

 2.  创建容器,并执行命令—run

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "mars": 指定容器的hostname;

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

--volume , -v: 绑定一个卷
--privileged使用该参数,container内的root拥有真正的root权限

一般容器执行完命令后会退出,但是使用-it,会进行前台交互容器不会退出,但是退出交互场景容器就会退出;使用-itd,容器会后台运行并且返回容器id,容器不会退出。

将centos的镜像以后台交互的方式运行;容器名为myCentos;内容监听8443端口,外部监听222端口,并且将外部222端口映射到8443端口----此方式支持运行支持使用systemctl

docker run -itd -p 0.0.0.0:222:8443/tcp  --privileged --name myCentos centos /usr/sbin/init

 3.  创建容器—create

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

用法与run一样,只是不启动

 4.  进入运行中容器—exec/attach

(1)docker run –it

运行容器的时候带上-it会直接进入容器,但是退出交互界面,容器也会stop

(2)docker attach [OPTIONS] CONTAINER

连接到正在运行中的容器,一般退出交互界面退出就会导致容器stop;但是可以带上--sig-proxy=false,Ctrl+C后也不会退出

(3)docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

-d :分离模式: 在后台运行

-i :即使没有附加也保持STDIN 打开

-t :分配一个伪终端

docker exec -it myCentos /bin/bash

attach直接进入容器启动命令的终端,不会启动新的进程;exec是在容器中打开新的终端,并且可以启动新的进程;如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。

 5.  启动/停止/重启容器—start/stop/restart

docker start :启动一个或多个已经被停止的容器

docker stop :停止一个运行中的容器

docker restart :重启容器

docker start/stop/restart < CONTAINER ID | NAMES >

 6.  杀掉一个运行中容器—kill

docker kill [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

-s :向容器发送一个信号

docker kill ly_centos_d

 7.  删除容器—rm

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

-f :通过 SIGKILL 信号强制删除一个运行中的容器。

-l :移除容器间的网络连接,而非容器本身。

-v :删除与容器关联的卷。

删除所有已经停止的容器

docker rm $(docker ps -a -q)

强制删除容器 db01、db02

docker rm -f db01 db028.  暂停/恢复容器中进程—pause/unpause

docker pause :暂停容器中所有的进程。

docker pause CONTAINER [CONTAINER...]

docker unpause :恢复容器中所有的进程。

docker unpause CONTAINER [CONTAINER...]

docker pause db01

docker unpause db019.  获取容器日志—logs

docker logs [OPTIONS] CONTAINER

OPTIONS说明:

-f : 跟踪日志输出

--since :显示某个开始时间的所有日志

-t : 显示时间戳

--tail :仅列出最新N条容器日志

docker logs --since="2016-07-01" --tail=10 mynginx

10. 从容器中创建镜像—commit

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

-a :提交的镜像作者;

-c :使用Dockerfile指令来创建镜像;

-m :提交时的说明文字;

-p :在commit时,将容器暂停。

docker commit -a "liyue" -m "test" ly_centos_d  centos7:commit

(三)   仓库相关

1.  登陆/登出仓库—login/logout

docker login [OPTIONS] [SERVER]

docker logout [OPTIONS] [SERVER]

OPTIONS说明:

-u :登陆的用户名

-p :登陆的密码

docker login -u 用户名 -p 密码

 2.  上传镜像到仓库—push

docker push [OPTIONS] NAME[:TAG]

OPTIONS说明:

--disable-content-trust :忽略镜像的校验,默认开启

docker push myapache:v1

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐