[Linux服务器] Linux安装Docker

1362 0
Honkers 2025-3-31 10:48:20 来自手机 | 显示全部楼层 |阅读模式

一、准备工作:

Docker支持64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10

  • 查看Linux版本的命令:lsb_release -a或cat /etc/redhat-release
  • 查看内核版本有三种方式:
    1. cat /proc/version
    2. uname -a
    3. uname -r
    复制代码

二、安装Docker方式

方式一:自动化安装Docker

1.安装Docker:

Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。

官方的一键安装方式: 

  1. curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
复制代码

国内 daocloud一键安装命令:

  1. curl -sSL https://get.daocloud.io/docker | sh
复制代码

执行上述任一条命令,耐心等待即可完成Docker的安装。

 安装成功后,使用docker version命令查看是否安装成功,安装成功后,如下

2.启动Docker:

启动命令:systemctl start docker 或 systemctl start docker.service

验证docker启动成功:

 

 3.删除Docker:

删除安装包:

  1. yum remove docker-ce
复制代码

删除镜像、容器、配置文件等内容:

  1. rm -rf /var/lib/docker
复制代码

方式二:离线安装Docker

1.Docker安装脚本

即install_docker.sh如下:

  1. #!/bin/bash
  2. ####################
  3. # docker24安装脚本 #
  4. ####################
  5. WORK_PATH=/home/data/install_pkg
  6. TMP_PATH=$WORK_PATH/tmp
  7. PKG_PATH=$WORK_PATH/docker
  8. CONF_PATH=$WORK_PATH/docker
  9. #检查安装目录
  10. if [ ! -d $PKG_PATH ];
  11. then
  12. echo -e "${PKG_PATH} 缺失,结束进程"
  13. exit 1
  14. fi
  15. if [ ! -d $TMP_PATH ];
  16. then
  17. mkdir -p $TMP_PATH
  18. fi
  19. #从共享目录复制到本地
  20. cd $TMP_PATH || exit
  21. cp $PKG_PATH/docker-24.0.7.tgz ./
  22. #解压安装
  23. tar -xvf docker-24.0.7.tgz
  24. #将解压出来的docker内容移动至/home/data/docker下,同时复制到/usr/bin下
  25. cp docker/* /usr/bin/
  26. mkdir -p /home/data/docker/data
  27. mv docker/* /home/data/docker
  28. #注册编辑docker服务 并修改docker数据存放位置
  29. cp $CONF_PATH/docker.service /etc/systemd/system/
  30. #赋予可执行权限 启动 设置自启
  31. chmod +x /etc/systemd/system/docker.service
  32. systemctl daemon-reload && systemctl enable docker.service && systemctl start docker
  33. #安装docker-compose
  34. cp $PKG_PATH/docker-compose-v2.16.0-linux-x86_64 /usr/local/bin/docker-compose
  35. chmod +x /usr/local/bin/docker-compose
  36. #检查启动状态
  37. systemctl status docker
  38. docker -v
  39. docker-compose -v
复制代码

 ps:确保/home/data/install_pkg/docker 目录下有如下内容:

2.docker.service内容:

作用:注册docker为service服务,在/etc/systemd/system/目录下新增docker.service文件

  1. [Unit]
  2. Description=Docker Application Container Engine
  3. Documentation=https://docs.docker.com
  4. After=network-online.target firewalld.service
  5. Wants=network-online.target
  6. [Service]
  7. Type=notify
  8. # the default is not to use systemd for cgroups because the delegate issues still
  9. # exists and systemd currently does not support the cgroup feature set required
  10. # for containers run by docker
  11. ExecStart=
  12. ExecStart=/usr/bin/dockerd --graph=/home/data/docker/data/ #安装docker的data路径
  13. ExecReload=/bin/kill -s HUP $MAINPID
  14. # Having non-zero Limit*s causes performance problems due to accounting overhead
  15. # in the kernel. We recommend using cgroups to do container-local accounting.
  16. LimitNOFILE=infinity
  17. LimitNPROC=infinity
  18. LimitCORE=infinity
  19. # Uncomment TasksMax if your systemd version supports it.
  20. # Only systemd 226 and above support this version.
  21. #TasksMax=infinity
  22. TimeoutStartSec=0
  23. # set delegate yes so that systemd does not reset the cgroups of docker containers
  24. Delegate=yes
  25. # kill only the docker process, not all processes in the cgroup
  26. KillMode=process
  27. # restart the docker process if it exits prematurely
  28. Restart=on-failure
  29. StartLimitBurst=3
  30. StartLimitInterval=60s
  31. [Install]
  32. WantedBy=multi-user.target
复制代码
3.Docker启动脚本(op_docker.sh):
  1. ​#!/bin/sh
  2. # ./op_docker.sh start 启动 stop 停止 restart 重启 status 状态 monitor 监控(未启动->自动重启)
  3. # JVM参数
  4. AppName=docker
  5. opUser=root
  6. RE_LOG_HOME=/home/data/monitorlog/crontab
  7. RE_LOG_FILE=$RE_LOG_HOME/$(date +%F)/$(date +%F)_restart.txt
  8. STATE_HOME=/home/data/monitorlog/component-status
  9. STATE_FILE=$STATE_HOME/$AppName
  10. if [ `whoami` != "$opUser" ];then
  11. echo -e " only $opUser can run me"
  12. exit 1
  13. fi
  14. if [ "$1" = "" ];
  15. then
  16. echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status|monitor} \033[0m"
  17. exit 1
  18. fi
  19. if [ "$AppName" = "" ];
  20. then
  21. echo -e "\033[0;31m 未输入应用名 \033[0m"
  22. exit 1
  23. fi
  24. function start()
  25. {
  26. PID=`ps -ef|grep "/usr/bin/dockerd" |grep -v 'grep' | awk '{print $2}'`
  27. if [ x"$PID" != x"" ]; then
  28. echo "$AppName is running..."
  29. else
  30. systemctl start docker
  31. echo "Start $AppName success..."
  32. fi
  33. }
  34. function stop()
  35. {
  36. echo "Stop $AppName"
  37. PID=""
  38. query(){
  39. PID=`ps -ef|grep "/usr/bin/dockerd" |grep -v 'grep' | awk '{print $2}'`
  40. }
  41. query
  42. if [ x"$PID" != x"" ]; then
  43. systemctl stop docker
  44. echo "$AppName (pid:$PID) exiting..."
  45. while [ x"$PID" != x"" ]
  46. do
  47. sleep 1
  48. query
  49. done
  50. echo "$AppName exited."
  51. else
  52. echo "$AppName already stopped."
  53. fi
  54. }
  55. function restart()
  56. {
  57. stop
  58. sleep 2
  59. start
  60. }
  61. function status()
  62. {
  63. PID=`ps -ef|grep "/usr/bin/dockerd" |grep -v 'grep' | awk '{print $2}' |wc -l`
  64. if [ $PID != 0 ];then
  65. echo "$AppName is running..."
  66. else
  67. echo "$AppName is not running..."
  68. fi
  69. }
  70. function monitor()
  71. {
  72. PID=`ps -ef|grep "/usr/bin/dockerd" |grep -v 'grep' | awk '{print $2}' |wc -l`
  73. if [ $PID != 0 ];then
  74. echo "$AppName is running..."
  75. echo $(date +%Y-%m-%d%n%H:%M:%S)_running > $STATE_FILE
  76. else
  77. start
  78. echo "$AppName is not running,and restarting..."
  79. echo $(date +%Y-%m-%d%n%H:%M:%S)_notrunning > $STATE_FILE
  80. echo $(date +%Y-%m-%d%n%H:%M:%S) >> $RE_LOG_FILE
  81. echo "$AppName is not running,and restarting..." >> $RE_LOG_FILE
  82. fi
  83. }
  84. case $1 in
  85. start)
  86. start;;
  87. stop)
  88. stop;;
  89. restart)
  90. restart;;
  91. status)
  92. status;;
  93. monitor)
  94. monitor;;
  95. *)
  96. echo "操作名"$1"错误";;
  97. esac
复制代码

三、Docker相关命令:

汇总列一下常见的Docker操作命令:

  • 重启Docker服务:systemctl restart docker / service docker restart
  • 关闭Docker服务:docker service docker stop / docker systemctl stop docker
  • 停止容器:docker stop 容器ID
  • 重启容器:docker restart 容器ID
  • 删除容器:docker rm container_id
  • 搜索仓库镜像:docker search 镜像名
  • 查看镜像:docker images
  • 拉取镜像:docker pull 镜像名(或docker pull nginx:xxx ,xxx指版本号)
  • 删除镜像:docker rmi image_id
  • 启动(停止的)容器:docker start 容器ID
  • 启动(新)容器:docker run -it ubuntu /bin/bash(或docker run -p 80:80 -d --name nginx nginx:1.24.0,第一个80宿主机端口,第二个80容器端口)
  • 进入容器:docker attach 容器ID或docker exec -it 容器ID /bin/bash,推荐使用后者。
  • 先启动再设置自启动:docker update --restart=always  容器ID
  • 查看正在运行的容器:docker ps
  • 查看所有容器:docker ps -a
  • 查看docker 日志:docker logs -t  -f rabbitmq (docker 容器的默认日志路径/var)
  • 镜像打包:docker save 镜像名称:镜像版本 >打包后的文件名字.tar
  • 将镜像加载到Docker:docker load -i 打包后的文件名字.tar(例子:docker load -i minio.tar)
  • 查看docker内存情况:docker stats -a

更多的命令可以通过docker help命令来查看。


  • 查看所有自启动项目:systemctl list-unit-files |grep enabled
  • 设置开机自启:systemctl enable docker
  • 守护进程重启:systemctl daemon-reload(重载配置文件以生效)
  • 服务器重启:reboot -f

端口映射示意图

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行