赞
踩
作者是基于Linux系统实践的,一般各种包管理工具里面已经集成了docker的安装包,比如作者的yum工具里就有docker-engine.x86_64安装包,因此安装比较方便。
# 查看yum源里有没有docker相关安装包 yum list | grep docker # 开始安装 yum install -y docker-engine.x86_64 # 安装结束查看docker版本 docker -v docker version # docker安装完成后是默认启动的,也可以自行启动 systemctl start docker systemctl restart docker # 查看是否有docker进程 ps -eaf | grep docker # 停止docker systemctl stop docker # 查看docker系统信息 docker info
为了docker能够正常使用,需要配置一下docker.service和daemon.json两个文件。
# 配置docker.service,作者主要需要配置代理,其他倒没啥 vim /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify EnvironmentFile=-/etc/sysconfig/docker EnvironmentFile=-/etc/sysconfig/docker-storage EnvironmentFile=-/etc/sysconfig/docker-network Environment=GOTRACEBACK=crash Environment="HTTP_PROXY=" #如果你的环境需要代理 Environment="HTTPS_PROXY=" #添加这两行配置你的代理即可 ExecStart=/usr/bin/dockerd $OPTIONS \ $DOCKER_STORAGE_OPTIONS \ $DOCKER_NETWORK_OPTIONS \ $INSECURE_REGISTRY ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process [Install] WantedBy=multi-user.target
# 配置daemon.json文件,主要配置镜像源和镜像加速
vim /etc/docker/daemon.json #没有这个文件自己创一个
# 在文件中添加下面的内容,这就配置了华为云的镜像加速
{
"registry-mirrors":["https://xxx.mirror.swr.myhuaweicloud.com"]
}
# 配置完成后输入以下命令使配置生效
systemctl daemon-reload
systemctl restart docker
右上角登录控制台
登录上去后点击左上角展开服务列表
选择容器–>选择容器镜像服务
进入之后选择右侧的镜像资源里面的镜像中心
再点击右上角的镜像加速器
之后跟着弹出来的详细步骤配置即可。
现在应该就能正常使用docker search和docker pull来查询和拉取镜像了,比如:
# 查询镜像仓库里有没有mysql docker search mysql # 出现如下信息就是有 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 14934 [OK] mariadb MariaDB Server is a high performing open sou… 5701 [OK] phpmyadmin phpMyAdmin - A web interface for MySQL and M… 958 [OK] percona Percona Server is a fork of the MySQL relati… 626 [OK] bitnami/mysql Bitnami MySQL Docker Image 110 [OK] databack/mysql-backup Back up mysql databases to... anywhere! 110 ubuntu/mysql MySQL open source fast, stable, multi-thread… 61 linuxserver/mysql-workbench 55 linuxserver/mysql A Mysql container, brought to you by LinuxSe… 41 rapidfort/mysql RapidFort optimized, hardened image for MySQL 25 google/mysql MySQL server for Google Compute Engine 25 [OK] rapidfort/mysql-official RapidFort optimized, hardened image for MySQ… 9 rapidfort/mysql8-ib RapidFort optimized, hardened image for MySQ… 9 bitnami/mysqld-exporter 6 cimg/mysql 3 drupalci/mysql-5.5 https://www.drupal.org/project/drupalci 3 [OK] vitess/mysqlctld vitess/mysqlctld 1 [OK] eclipse/mysql Mysql 5.7, curl, rsync 1 [OK] elestio/mysql Mysql, verified and packaged by Elestio 0 mirantis/mysql 0 docksal/mysql MySQL service images for Docksal - https://d… 0 bitnamicharts/mysql 0 drupalci/mysql-5.7 https://www.drupal.org/project/drupalci 0 drupalci/mysql-8 https://www.drupal.org/project/drupalci 0 hashicorp/mysql-portworx-demo 0
# 拉取想要的镜像到本地 docker pull mysql latest: Pulling from library/mysql 45b42c59be33: Pull complete b4f790bd91da: Pull complete 325ae51788e9: Pull complete adcb9439d751: Pull complete 174c7fe16c78: Pull complete 698058ef136c: Pull complete 4690143a669e: Pull complete f7599a246fd6: Pull complete 35a55bf0c196: Pull complete 790ac54f4c47: Pull complete b0ddd5d1b543: Pull complete 1aefd67cb33d: Pull complete Digest: sha256:03306a1f248727ec979f61424c5fb5150e2c5fd2436f2561c5259b1258d6063c Status: Downloaded newer image for mysql:latest # 下载完成,docker images查询镜像 docker images REPOSITORY TAG IMAGE ID CREATED SIZE testos 20240227V0 a9179cfc48eb 2 weeks ago 16.6GB mysql latest 8457e9155715 3 years ago 546MB
通常我们是基于一个基础镜像来创建一个容器,然后把我们想要运行的服务进程和工具包放到容器里去运行。但是有时候我们的服务可能基础镜像满足不了,这时候我们可以直接把宿主机的环境打包成一个镜像来供docker容器使用。
# 先把宿主机的环境打包 tar -zcvpf dockerimages.tar --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot . # --exclude 表示排除宿主机上这些目录,因为每次启动它们都会发生变化,打包无意义 # 把压缩包导入docker镜像 docker import dockerimages.tar 你的镜像名称 # 启动一个容器看看 docker run -itd -p 80:80 --name 容器名称 镜像名称 /bin/bash # 这里解释一下-itd表示以后台交互模式启动容器 # -p 80:80表示把宿主机的80端口映射到容器的80端口 # 这里使用docker的默认网络模式,也就是桥接模式 # 在宿主机上ip a查询应该会发现多一个docker0的网卡 # 也可以直接使用宿主机的网络 docker run -itd --net host --name 容器名称 镜像名称 /bin/bash # 查询一下容器的运行状态 docker ps #查询正在运行的容器 docker ps -a #查询所有的容器 # 进入容器 docker exec -it 容器ID /bin/bash
细心的朋友们已经发现我们在执行docker run的时候后面都会跟着一个/bin/bash,这是表示容器启动后运行的第一个进程,如果容器启动后没有进程运行那么马上就会退出,因此通常会启动bash作为容器启动项。但是这会带来一个问题就是如果你的服务是靠systemd进程拉起的,那么在容器里运行服务则会报错,因为容器里没有systemd进程。网上流传的解决方法是给容器赋予特权,如下:
docker run -itd --net host --cap-add SYS_ADMIN --priviledged --name 容器名称 镜像名称 /sbin/init
# 这个命令的作用是让docker容器里的服务就像运行在宿主机上一样
# 但是也会带来容器逃离的风险,比如你在容器修改的配置,可能会将宿主机上的配置一并修改
# 停止容器 docker stop 容器ID # 删除容器 docker rm 容器ID # 删除镜像 docker rmi 镜像ID # 卸载docker yum remove docker # 删除docker配置文件 find / -name "*docker*" rm -rf /etc/docker rm -rf /var/lib/docker # 删除docker0网卡 ip link delete docker0
其实docker还有很多东西没讲完,比如dockerfile,下次再讲吧,希望给你有一点点帮助~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。