docker学习笔记

docker学习笔记docker安装安装docker#1、安装docker依赖yum install -y yum-utils#2、配置仓库镜像yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#3、将yum源升至最新yum makecache fast#4、安装docker社区版yum install docker-ce doc
摘要由CSDN通过智能技术生成

docker学习笔记

docker安装

安装docker

#1、安装docker依赖
yum install -y yum-utils
#2、配置仓库镜像
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#3、将yum源升至最新
yum makecache fast
#4、安装docker社区版
yum install docker-ce docker-ce-cli containerd.io -y
#5、启动docker服务
systemctl start docker
#6、使用docker运行简单程序
docker run hello-world

阿里云镜像加速

  1. 登陆阿里云——容器镜像服务——镜像加速器
  2. 配置使用
mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xpzlh5uz.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload

systemctl restart docker

docker运行流程

底层原理

  • Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过socket从客户端访问
  • DockerServer收到Docker-Client的指令,会执行此命令

Docker为什么比VM快?

  1. Docker有着比虚拟机更少的抽象层
  2. docker利用的是宿主机的内核,vm需要重新加载一个操作系统内核
    • 新建容器时,不加载操作系统内核,避免引导

docker常用命令

帮助命令

docker version		#显示docker的版本信息
docker info 		#显示docker系统信息,包括进项和容器的数量
docker 命令 --help   #万能命令

帮助文档的地址:https://docs.docker.com/reference/

镜像命令

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

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

#解释
REPOSITORY	镜像的仓库源
TAG			镜像的标签
IMAGE ID	镜像的id
CREATED		镜像的创建时间
SIZE		镜像的大小
# 可选项
  -a, --all             # 列出所有镜像
  -q, --quiet           # 只显示镜像的id

docker search 搜索镜像

[root@10-23-179-224 ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10247     [OK]       
mariadb                           MariaDB is a community-developed fork of MyS…   3785      [OK]       
# 可选项 通过搜索来过滤
--filter=STARS=3000 # 搜索出来的镜像的STARS大于3000
[root@10-23-179-224 ~]# docker search  mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10247     [OK] 
# 等价于 docker search  mysql --filter STARS=3000

docker pull 下载镜像

# 下载镜像 docker pull 镜像名[:tag]
[root@10-23-179-224 ~]# docker pull mysql
Using default tag: latest # 不写tag,默认为lastest
latest: Pulling from library/mysql
6ec7b7d162b2: Pull complete  # 分层下载,docker image的核心 联合文件系统
fedd960d3481: Pull complete 
7ab947313861: Pull complete 
64f92f19e638: Pull complete 
3e80b17bff96: Pull complete 
014e976799f9: Pull complete 
59ae84fee1b3: Pull complete 
ffe10de703ea: Pull complete 
657af6d90c83: Pull complete 
98bfb480322c: Pull complete 
9f2c4202ac29: Pull complete 
a369b92bfc99: Pull complete 
Digest: sha256:365e891b22abd3336d65baefc475b4a9a1e29a01a7b6b5be04367fcc9f373bb7 # 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
# 等价于
# docker pull mysql 
# docker pull docker.io/library/mysql:latest

# 指定版本下载
[root@10-23-179-224 ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
6ec7b7d162b2: Already exists # 存在的就不下载了
fedd960d3481: Already exists 
7ab947313861: Already exists 
64f92f19e638: Already exists 
3e80b17bff96: Already exists 
014e976799f9: Already exists 
59ae84fee1b3: Already exists 
7d1da2a18e2e: Pull complete 
301a28b700b9: Pull complete 
979b389fc71f: Pull complete 
403f729b1bad: Pull complete 
Digest: sha256:d4ca82cee68dce98aa72a1c48b5ef5ce9f1538265831132187871b78e768aed1
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker rmi 删除镜像

[root@10-23-179-224 ~]# docker rmi -f 镜像id 			      # 删除指定的镜像
[root@10-23-179-224 ~]# docker rmi -f 镜像id 镜像id 镜像id 	# 删除多个镜像
[root@10-23-179-224 ~]# docker rmi -f $(docker images -aq)  # 删除全部的镜像

容器命令

有镜像才可以创建容器

docker pull centos #下载centos镜像来测试

新建容器并启动

docker run [可选参数] imageid
# 参数说明
--name="Name"	容器名字,用于区分容器
-d				后台方式运行,类似nohup
-it 			使用交互方式运行,进入容器查看内容(默认/bin/bash)
-p 				指定容器的端口 
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口(常用)
	-p 容器端口
	容器端口
-P				随机指定端口
# 测试 启动并进入容器
[root@10-23-179-224 ~]# docker run -it centos /bin/bash
[root@f5351f82a819 /]# ls # 查看容器内的centos
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# 从容器中退回主机
[root@f5351f82a819 /]# exit 容器关闭
exit
[root@10-23-179-224 ~]# 

列出所有的运行的容器

# docker ps命令
	# 列出当前正在运行的容器
-a	# 列出当前正在运行的容器 + 带出历史运行过的容器
-n=? # 显示最近创建的容器
-q	# 只显示容器的编号
[root@10-23-179-224 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@10-23-179-224 ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                       PORTS     NAMES
f5351f82a819   centos         "/bin/bash"   5 minutes ago   Exited (127) 2 minutes ago             sleepy_galileo
02eb7f9b48ca   bf756fb1ae65   "/hello"      22 hours ago    Exited (0) 22 hours ago                serene_grothendieck
11ca0fc61486   bf756fb1ae65   "/hello"      22 hours ago    Exited (0) 22 hours ago                intelligent_mirzakhani
[root@10-23-179-224 ~]# docker ps -aq
f5351f82a819
02eb7f9b48ca
11ca0fc61486
[root@10-23-179-224 ~]# docker ps -a -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                       PORTS     NAMES
f5351f82a819   centos    "/bin/bash"   7 minutes ago   Exited (127) 4 minutes ago             sleepy_galileo

退出容器

exit	# 直接容器停止并退出
ctrl + P + Q	# 容器不停止退出(注意按的顺序)

删除容器

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

启动和停止容器

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

常用其他命令

后台启动容器

# 命令 docker run -d 镜像名
[root@10-23-179-224 ~]# docker run -d centos

# 问题 docker ps ,发现centos停止

# 常见的坑:docker 容器使用后台运行,就必须要有一个前台进程(docker如果发现没有应用,就会自动停止)
# nginx 容器启动后发现没有提供服务,就会立刻停止

查看日志

docker logs -f -t --tail 容器id   # 没有日志
# 编写shell脚本
[root@10-23-179-224 ~]# docker run -d centos /bin/sh -c "while true;do echo light;sleep 1;done"

# [root@10-23-179-224 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
ccba62e234c5   centos    "/bin/sh -c 'while t…"   3 seconds ago   Up 2 seconds             lucid_diffie

# 显示日志 
-tf				# 显示日志
--tail number 	# 要显示的日志条数
[root@10-23-179-224 ~]# docker logs -tf --tail 10 ccba62e234c5

查看容器中进程信息ps

# 命令 docker top 容器id
[root@10-23-179-224 ~]# docker top ccba62e234c5
UID                 PID                 PPID                C                   STIME   
root                28829               28810               0                   21:46   
root                29485               28829               0                   21:54   

查看镜像的元数据

# 命令
docker inspect 容器id
# 测试
[root@10-23-179-224 ~]# docker inspect ccba62e234c5
[
    {
   
        "Id": "ccba62e234c5513c626ca785ea874c889bd4cbed749daf79352422e41a64efea",
        "Created": "2020-12-12T13:46:23.675183068Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo light;sleep 1;done"
        ],
        "State": {
   
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 28829,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-12-12T13:46:24.023284286Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/ccba62e234c5513c626ca785ea874c889bd4cbed749daf79352422e41a64efea/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/ccba62e234c5513c626ca785ea874c889bd4cbed749daf79352422e41a64efea/hostname",
        "HostsPath": "/var/lib/docker/containers/ccba62e234c5513c626ca785ea874c889bd4cbed749daf79352422e41a64efea/hosts",
        "LogPath": "/var/lib/docker/containers/ccba62e234c5513c626ca785ea874c889bd4cbed749daf79352422e41a64efea/ccba62e234c5513c626ca785ea874c889bd4cbed749daf79352422e41a64efea-json.log",
        "Name": "/lucid_diffie",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
   
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
   
                "Type": "json-file",
                "Config": {
   }
            },
            "NetworkMode": "default",
            "PortBindings": {
   },
            "RestartPolicy": {
   
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
         
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值