Docker基本使用命令

admin 2021年11月6日19:58:45评论106 views字数 3937阅读13分7秒阅读模式

Docker基本使用命令


前言

Docker基本使用命令


刚看别人使用Docker的时候有很多不解,为什么要用Docker,Docker怎么用?Docker配置为什么这么难?为什么网络访问不通?等等因素阻碍了笔者学习Docker?其实笔者也很笨,有很多思考不清晰的点。顺便也分享下。
学时疑惑:

Q:我一套服务为什么不放在一个容器里面(Java、MySQL、Nginx、Redis等)?
A:因为既要维护容器内网络,又要维护端口等等之类的东西,Docker就是为了快速搭建环境而生的,而且Docker最好也是一个服务一个容器,这样好打理。

Q:Docker能放到生产环境吗?
A:在公司没有专门的运维团队情况下,不建议使用Docker部署的环境作为生产环境,因为不仅仅要维护项目和中间件,Docker或者Kubernetes出现问题后,还要解决这些问题,也就是还要解决Docker的问题。如果在没有专门运维团队的情况下,最好使用某里云的服务,例如RDS,SLB等,最起码别人还会帮你维护你的数据库和服务。


基本命令

Docker基本使用命令


下载镜像

# 以Redis为例子
docker pull redis


运行镜像

docker run 
-d  # 后台运行
--name redis6  # 自定义名字
-p 6379:6379  # 端口映射
redis # 镜像名称
docker run -d --name redis6 -p 6379:6379 redis redis-server --appendonly yes --requirepass "123456" # 完整命令


进入容器

第一种(不推荐,当退出容器使用exit命令时,会停止这个容器):

docker attach 容器id

第二种:

docker exec -it 容器id /bin/bash


暂停容器

docker stop 容器id


启动容器

docker start 容器id


查询容器列表

docker ps -a # 查看所有容器
docker ps # 查看运行中的容器

run和start的区别:

  • run是创建一个新的容器

  • start是把已经创建好的容器启动


查看容器信息

docker inspect 容器id


挂载

Docker基本使用命令


挂载介绍

容器里面的文件都是在容器内部,而跟你当前电脑是没有关系的,如果删除了容器怎么办?但是资料又想保存就像MySQL一样,我只是换一台电脑就要把整个容器复制过去,太麻烦了!所以需要把容器的文件跟当前主机文件作为一个映射。

命令教程

参数-v宿主机路径:容器路径

# 以MySQL为例子
docker run -d --name mysql8 -p 3306:3306 -v /data/mysql8/config:/etc/mysql/conf.d -v /data/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
# 以上的命令可以参考:https://hub.docker.com/_/mysql,里面有详细介绍


为什么要知道这么多路径或者参数

每个中间件或者一个数据库容器,他可能需要有很多配置,例如密码,持久化文件的路径等等。那我们怎么知道路径是什么:

  • 可以进hub.docker.com找到自己需要的容器然后看文档

  • 进容器找了(这个方法有点笨,笔者一开始就是这么找到的。)


网络

Docker基本使用命令


容器之间怎么进行通讯

容器虽然是能相互通讯的,但是容器每次重启ip都跟上一次不一样,所以这样通讯会很复杂。

示范

# 先拉个CentOS镜像下来
docker pull centos
# 创建个容器
docker run -d -it --name centos1 centos
docker run -d -it --name centos2 centos

docker inspect centos1_id

截取一些容器信息下来:

[
    {
        "NetworkSettings": {
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID""9e7ed6d29ca3474de04409833e39b7c7965c7c63d3a1f509886a7a998e4825f8",
                    "EndpointID""41230bf523fac8fa4933989d98baaaa7655fba5c5dadd14e63839ffe868ed3f8",
                    "Gateway""172.17.0.1",
                    "IPAddress""172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway""",
                    "GlobalIPv6Address""",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress""02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }
        }
    }
]

docker inspect centos2_id

[
    {
        "NetworkSettings": {
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID""9e7ed6d29ca3474de04409833e39b7c7965c7c63d3a1f509886a7a998e4825f8",
                    "EndpointID""8ae77d46887c795983ee7a8fb96951d05e236b4ca4b4caa5d5964f892e18a476",
                    "Gateway""172.17.0.1",
                    "IPAddress""172.17.0.5",
                    "IPPrefixLen": 16,
                    "IPv6Gateway""",
                    "GlobalIPv6Address""",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress""02:42:ac:11:00:05",
                    "DriverOpts": null
                }
            }
        }
    }
]


  • 以上centos1 ip为172.17.0.4

  • 以上centos2 ip为172.17.0.5


解决问题

docker network create centos-network
docker run -d -it --network centos-network --name centos3 centos
docker run -d -it --network centos-network --name centos4 centos
docker exec -it centos3_id /bin/bash
ping centos4 
# 所以当创建了一个network后 容器都能加入到这个网络里面,很方便

这样就可以解决每次容器重启后ip不一致问题。


小结

Docker基本使用命令


其实在刚使用容器的时候会很麻烦:

  • 不知道Docker的命令和容器需要的参数

  • 每次都要上官网找下有什么参数或者百度,但相比每次下载文件下来,进去配置省很多力气,并且配置一次保存好用过的命令,以后都可以用了,不需要再重复去改很多东西

  • 其实在一些小型公司,没有专业的运维的话尽量不要在生产环境上使用Docker,不然真的出现问题的话会很头疼,不仅仅要维护项目,还要维护Docker


原文链接:https://juejin.cn/post/6974427129748389902


Kubernetes管理员(CKA)培训

Docker基本使用命令


本次培训在北京开班,基于最新考纲,通过线下授课、考题解读、模拟演练等方式,帮助学员快速掌握Kubernetes的理论知识和专业技能,并针对考试做特别强化训练,让学员能从容面对CKA认证考试,使学员既能掌握Kubernetes相关知识,又能通过CKA认证考试,学员可多次参加培训,直到通过认证。点击下方图片或者阅读原文链接查看详情。


Docker基本使用命令

本文始发于微信公众号(分布式实验室):Docker基本使用命令

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年11月6日19:58:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Docker基本使用命令http://cn-sec.com/archives/410506.html

发表评论

匿名网友 填写信息