技术流ken

运维拯救世界

课堂记录:docker使用详解(一)–技术流ken

 

Docker与Kvm的对比

 

kvm:

1. 虚拟机

2. 使用复杂

3. 启动过程相对慢(分钟)

4. 模版文件较大

5. 和物理完全隔离

6. 模拟的是一个完整系统,可以登录并实现管理

 

docker:

1. 直接虚拟出来一个用户空间

2. 使用简单

3. 启动非常块(秒级)

4. 模版文件很小

5. 在一定程度上和物理机隔离

6. 仅仅是模拟一部分用户空间,不方便管理

 

docker部署安装

第一步:需要下载阿里云较新版的docker源文件

[root@ken-node3 ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

第二步:移动文件到yum.repos.d下

[root@ken-node3 ~]# mv docker-ce.repo /etc/yum.repos.d/

 

第三步:下载docker-ce

docker-ce 社区免费版

docker-ee 企业收费版

[root@ken-node3 ~]# yum install docker-ce -y

 

第四步:直接启动docker并设置开机自启

[root@ken-node3 ~]# systemctl restart docker
[root@ken-node3 ~]# systemctl enable docker

 

 

注:

如果不启动docker服务会报如下的错误:

[root@ken-node3 ~]# docker image ls
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

 

第五步:验证docker服务是否可以正常运行

[root@ken1 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE

 

镜像加速

 

为什么镜像加速?

因为docker在拉取镜像的时候是默认使用dockerhub上面的镜像即国外镜像,所以拉取速度是很慢的,

为了解决这个问题,我们就可以使用阿里云镜像加速

 

 

阿里云镜像加速

 

第一步:浏览器输入阿里云进入官网并登陆

 

第二步:进入控制台–》产品与服务–》容器镜像服务–》镜像加速器

 

第三步:创建一个脚本写入如下内容

 

 

一键部署安装docker并加速

#!/bin/bash
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
mv docker-ce.repo /etc/yum.repos.d
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

docker镜像操作详解

 

docker镜像操作相关的指令

 

docker使用技巧:

[root@ken-node3 ~]# docker –help  #可以查看docker所有使用方法

[root@ken-node3 ~]# docker image –help  #可以查看docker镜像操作的所有方法

[root@ken-node3 ~]# docker image ls –help  #可以查看docker镜像操作中ls指令的用法

 

镜像操作指令:

build                  从dockerfile中创建镜像

history               可以显示镜像的构建历史 #docker镜像分层构建,每一层都有一个指令

import               从一个压缩包创建镜像

save                    创建镜像压缩包

load                   从压缩包导入镜像

ls                        列出来镜像

prune               清除不使用的镜像

pull                   拉取镜像

push                 推送镜像

rm                    删除镜像

tag                    改名

 

 

docker镜像操作演示

 

例子1:拉取镜像

 

格式:docker image pull REPOSITORY:TAG

[root@ken1 ~]# docker image pull busybox

 

注意:

如果在拉取镜像的时候只指定了REPOSITORY的话,默认拉取的是tag为latest的版本

 

例子2:查看当前有哪些镜像

[root@ken1 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             1.31.0              db8ee88ad75f        3 weeks ago         1.22MB
busybox             latest              db8ee88ad75f        3 weeks ago         1.22MB

 

例子3:查看镜像构建历史

[root@ken1 ~]# docker image history busybox
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
db8ee88ad75f        3 weeks ago         /bin/sh -c #(nop)  CMD ["sh"]                   0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop) ADD file:9ceca008111a4ddff…   1.22MB   

 

例子4:制作镜像压缩包

方法一:使用-o选项,output

[root@ken1 ~]# docker image save busybox:1.31.0 -o busybox1.31.tar
[root@ken1 ~]# ls
anaconda-ks.cfg  busybox1.31.tar  docker-speend.sh  test  test1

 

方法二:使用标准输出

[root@ken1 ~]# docker image save busybox:1.31.0 > busybox1.31-v2.tar
[root@ken1 ~]# ls
anaconda-ks.cfg  busybox1.31.tar  busybox1.31-v2.tar  docker-speend.sh  test  test1

 

例子5:使用镜像压缩包

 

方法一:使用-i,input

[root@ken-node3 ~]# docker image load -i busybox1.31.tar
Loaded image: busybox:1.31.0
[root@ken-node3 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             1.31.0              db8ee88ad75f        3 weeks ago         1.22MB

 

方法二:

[root@ken-node3 ~]# docker image load <  busybox1.31.tar
Loaded image: busybox:1.31.0
[root@ken-node3 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             1.31.0              db8ee88ad75f        3 weeks ago         1.22MB

 

例子6:删除镜像

方法一:

[root@ken1 ~]# docker image rm busybox:1.31.0
Untagged: busybox:1.31.0
[root@ken1 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              db8ee88ad75f        3 weeks ago         1.22MB

方法二:

[root@ken1 ~]# docker rmi busybox

 

 

例子7:镜像改名

[root@ken1 ~]# docker image tag busybox:1.31.0 busybox:latest
[root@ken1 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             1.31.0              db8ee88ad75f        3 weeks ago         1.22MB
busybox             latest              db8ee88ad75f        3 weeks ago         1.22MB

 


例子8:清除不经常使用的镜像

[root@ken1 ~]# docker image prune -f
Total reclaimed space: 0B

 

 

docker容器操作详解

 

run                          运行容器

commit                  使用当前运行的容器制作镜像

exec                        可以在容器中执行命令或者进入容器

inspect                    查看容器的详细信息,也可以查看镜像的信息

kill                             强制杀掉容器

logs                          查看容器产生的日志信息

ls                             查看当前运行的容器

ps                           查看当前运行的容器

pause                      暂停容器

unpause                 开启容器

port                        查 看容器端口映射信息

rename                 对容器改名

restart                   重启容器

start                      启动容器

stop                       停掉容器

rm                          删除容器,默认删除不了正在运行的容器,-f

stats                      查看容器的运行状态

top                         查看容器的系统内存,磁盘使用信息

 

 

例子1:启动容器

前台运行容器

[root@ken1 ~]# docker run -i -t busybox /bin/sh

-i 交互模式

-t分配终端

 

后台运行容器

[root@ken1 ~]# docker run -d nginx-game:v1

-d后台运行

 

 

例子2:查看正在运行的容器

[root@ken1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES
95a695cffb03        nginx-game:v1       "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:88->80/tcp   hardcore_shannon

 

查看正在运行以及已经退出的容器

[root@ken1 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                NAMES
95a695cffb03        nginx-game:v1       "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes               0.0.0.0:88->80/tcp   hardcore_shannon
40799b6b38f2        busybox             "/bin/sh"                7 minutes ago       Exited (0) 6 minutes ago                        infallible_benz
ac864729390b        busybox             "/bin/bash"              7 minutes ago       Created                                         elastic_swartz
adbc635a8bf1        busybox             "ip a"                   8 minutes ago       Exited (0) 8 minutes ago                        nervous_noyce

 

例子3:在容器外执行命令

[root@ken1 ~]# docker exec -it 95a695cffb03 ls
bin   dev  home  lib64	mnt  proc  run	 srv  tmp  var
boot  etc  lib	 media	opt  root  sbin  sys  usr

 

注意:

如果你要想操作容器的话,必须保证容器时up状态即正在运行的状态,exited状态的容器时无法进行操作的。

 

课后练习:

1.docker部署安装以及镜像加速

2.拉取busybox,nginx,httpd镜像

3. 练习所有关于镜像的操作

4.运行nginx容器并查看是否正在运行

5.运行busybox容器并在里面创建一些文件

 

 

发表评论

电子邮件地址不会被公开。