2021-08-31 Docker入门

目录

一、Docker的基本组成

 二、安装工作

1、安装Docker

2、配置镜像加速

三、Docker常用命令

1、基础命令

2、镜像命令

3、容器命令

4、其他常用命令

四、部署示例

1、部署nginx

2、部署Tomcat

 五、Dokcer镜像详解

 什么是镜像

Docker镜像加载原理

镜像分层 

如何提交一个Docker镜像 


一、Docker的基本组成

 

 二、安装工作

1、安装Docker

环境:CentOS7 内核3.10.0-1160.el7.x86_64

(uname -r即可查看 虚拟机内核版本)


1、卸载旧版本
 

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、需要的安装包

yum install -y yum-utils

3、设置阿里云镜像仓库

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、更新yum软件包索引

yum makecache fast

5、安装最新版docker

yum install docker-ce docker-ce-cli containerd.io

6、启动docker

systemctl start docker

7、测试

至此docker已经安装完毕,执行 docker version可查看docker的详细版本信息 

执行docker run hello-world测试 

dokcer会自动拉去远程镜像

执行docker images查看下载的hello-world镜像

补充

# 1. 卸载依赖

yum remove docker-ce docker-ce-cli containerd.io

# 2. 删除资源

rm -rf /var/lib/docker

docker的默认工作路径

/var/lib/docker

2、配置镜像加速

找到阿里云=》容器镜像服务,配置镜像加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://nwbqvmhu.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

 docker配置完毕!!!


docker run 的运行流程图

docker工作流程

 不同进程相互隔离

三、Docker常用命令

1、基础命令

docker version          #查看docker的版本信息
docker info             #查看docker的系统信息,包括镜像和容器的数量
docker 命令 --help       #帮助命令(可查看可选的参数)
docker COMMAND --help

命令的帮助文档地址:docker | Docker Documentation

2、镜像命令

1.docker images 查看本地主机的所有镜像

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    bf756fb1ae65   11 months ago   13.3kB

可选参数,经常一起使用

-a 列出所有镜像

-q 列出镜像id
 

2.docker search 搜索镜像 

例如docker search mysql

3.docker pull 镜像名[:tag] 下载镜像

默认下载最新版本,tag即代表版本

可以docker pull mysql:5.7代表下载5.7版本的mysql,前提是镜像仓库有5.7版本

4.docker rmi 删除镜像

#1.删除指定的镜像id
[root@localhost~]# docker rmi -f  镜像id
#2.删除多个镜像id
[root@localhost~]# docker rmi -f  镜像id 镜像id 镜像id
#3.删除全部的镜像id
[root@localhost~]# docker rmi -f  $(docker images -aq)

docker rmi -f  $(docker images -aq) 

此命令查出所有的镜像id,并且执行递归删除,非常危险

3、容器命令

如拉取一个centos容器

docker pull centos

运行容器

docker run [可选参数] image

#参数说明
--name="名字"           指定容器名字
-d                     后台方式运行
-it                    使用交互方式运行,进入容器查看内容
-p                     指定容器的端口
(
-p ip:主机端口:容器端口  配置主机端口映射到容器端口
-p 主机端口:容器端口
-p 容器端口
)
-P                     随机指定端口(大写的P)

进入容器,若未设置名称,则默认名称为镜像id,/bin/bash调取控制台

[root@localhost~]# docker run -it centos /bin/bash
 

退出容器

#exit 停止并退出容器(后台方式运行则仅退出)
#Ctrl+P+Q  不停止容器退出
[root@localhost/]# exit
exit
[root@localhost~]#

列出运行过的容器

#docker ps 
     # 列出当前正在运行的容器
-a   # 列出所有容器的运行记录
-n=? # 显示最近创建的n个容器
-q   # 只显示容器的编号

删除容器

docker rm 容器id                 #删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
docker rm -f $(docker ps -aq)   #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器

启动和停止容器

docker start 容器id          #启动容器
docker restart 容器id        #重启容器
docker stop 容器id           #停止当前运行的容器
docker kill 容器id           #强制停止当前容器
 

4、其他常用命令

1.日志的查看:

常用:

docker logs -tf 容器id

docker logs --tail number 容器id #num为要显示的日志条数

2.查看容器中进程信息

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker top c703b5b1911f

3.查看容器的元数据

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker inspect 容器id

4.进入当前正在运行的容器

因为通常我们的容器都是使用后台方式来运行的,有时需要进入容器修改配置

方式一:

[root@localhost~]# docker exec -it c703b5b1911f /bin/bash
[root@c703b5b1911f /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@c703b5b1911f /]# ps -ef      
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 03:31 ?        00:00:00 /bin/sh -c while true;do echo hi;sleep 5;done
root       279     0  0 03:54 pts/0    00:00:00 /bin/bash
root       315     1  0 03:56 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5
root       316   279  0 03:56 pts/0    00:00:00 ps -ef
 

方式二:

[root@localhost~]# docker attach c703b5b1911f

docker exec 进入容器后开启一个新的终端,可以在里面操作

docker attach 进入容器正在执行的终端,不会启动新的进程

5.拷贝容器的文件到主机中

docker cp 容器id:容器内路径 目的主机路径

[root@localhost~]# docker exec -it c703b5b1911f /bin/bash
[root@c703b5b1911f /]# cd home
[root@c703b5b1911f home]# ls
#touch 新建文件
[root@c703b5b1911f home]# touch test.java
[root@c703b5b1911f home]# ls
test.java
[root@c703b5b1911f home]# exit
exit
[root@localhost~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
c703b5b1911f   centos    "/bin/sh -c 'while t…"   35 minutes ago   Up 35 minutes             pedantic_banach
[root@localhost~]# docker cp c703b5b1911f:/home/test.java /home
[root@localhost~]# ls /home
hai  pan  test.java

6、进入曾经运行过的容器

docker start [容器名 或容器id]

四、部署示例

1、部署nginx

命令:

[root@localhost~]# docker search nginx  # 查找
[root@localhost~]# docker pull nginx    # 下载
[root@localhost~]# docker run -d --name nginx -p 9001:80 nginx   # 启动

# 备注
-d 后台运行
--name 给容器命名
-p 9001:80 将宿主机的端口3334映射到该容器的80端口


[root@localhost~]# docker run -d --name nginx -p 9001:80 nginx
e2f7da87581a49d74096814ea8a8ea4dcc739c398f78f9a187807f9e34e8133e
 

测试访问:

注意:虚拟机,容器均有防火墙,作学习使用可关闭虚拟机防火墙,或者开放端口 

查看防火墙状态: systemctl status firewalld.service

执行关闭命令: systemctl stop firewalld.service

执行开机禁用防火墙自启命令  : systemctl disable firewalld.service

启动:systemctl start firewalld.service

防火墙随系统开启启动  : systemctl enable firewalld.service

2、部署Tomcat

拉取镜像并后台启动

docker pull tomcat:9.0

docker run -d --name Tomcat -p 9001:8080 tomcat:9.0

上述方式启动后,外部访问界面会出现404

解决方法:

进入Tomcat容器,并开启一个终端

docker exec -it Tomcat /bin/bash

修改Tomcat的webapps文件夹,因为文件夹为空,故页面访问404

可以将webapps.dist内容复制到webapps中即可

此时测试访问

成功! 

 五、Dokcer镜像详解

 什么是镜像

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码,运行时(一个程序在运行或者在被执行的依赖)、库,环境变量和配置文件。

Docker镜像加载原理

镜像分层 

如何提交一个Docker镜像 

使用docker commit 命令提交容器成为一个新的版本

docker commit -m=“提交的描述信息”  -a="作者" 容器id 目标镜像名:[TAG] 

由于默认的Tomcat镜像的webapps文件夹中没有任何内容,需要从webapps.dist中拷贝文件到webapps文件夹。下面自行制作镜像:就是从webapps.dist中拷贝文件到webapps文件夹下,并提交该镜像作为一个新的镜像。使得该镜像默认的webapps文件夹下就有文件。具体命令如下:
 

 其中,红框代表镜像名,必须小写,至此提交了一个镜像

查看镜像:

docker查看镜像挂载的目录结构

docker inspect mysql | grep Mounts -A 20

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值