Docker 安装与使用
1. Docker 的安装
1.1 docker 的安装
docker是一种容器技术,解决软件跨环境迁移的问题
# 补包
yum install -y yum-utils device-mapper-persistent-data lvm2 unzip
# 添加阿里云仓库
vi /etc/yum.repos.d/aliyum.repo
[base] name=base baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/ enabled=1 gpgcheck=0 [extras] name=extras baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/ enabled=1 gpgcheck=0 [epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=http://mirrors.aliyun.com/epel/7/$basearch failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache# 安装docker
yum install -y docker-ce docker-ce-cli containerd.io# 开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1sysctl -p
1.2 配置镜像加速器
访问阿里云相关页面(https://promotion.aliyun.com/ntms/act/kubernetes.html)
搜索镜像服务
点击 管理控制台
执行操作文档中的命令
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://2q6ap672.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker1.3 镜像命令
docker images # 查看镜像 docker search 镜像名 # 搜索镜像 docker pull 镜像名 # 拉取镜像 docker pust 镜像名 # 推送镜像 docker rmi 镜像名 # 删除镜像1.4 容器命令
docker ps # 查看容器 docker ps -a # 查看所有容器 docker ps -aq # 查看所有容器ID docker start/stop/restart/inspect/rm 容器名/容器ID # 启动/停止/重启/查看/删除 docker run -d # 创建容器 docker exec -it 容器名/容器ID # 进入容器1.5 数据卷
宿主机中的一个目录或文件,用于数据持久化和容器间的数据交换
-v /usr/local/conf:/usr/lcoal/conf
# 部署tomcat
# 搜索镜像 docker search tomcat # 拉取镜像 docker pull tomcat:latest # 创建容器 docker run -d --name tomcat -p 18080:8080 \ -v /data/docker/volume/tomcat-app/:/usr/local/tomcat/webapps \ tomcat:latest # 查看容器 docker ps # 进入容器 docker exec -it tomcat /bin/bash2. Dockerfile
Dockerfile是一个包含用于 组合镜像 的命令的文本文档 。可以使用在命令行中,调用任何命令
Docker 通过 dockerbuild命令 可以 读取Dockerfile中的指令 并自动生成新的 镜像
2.1 编写dockerfile
vim Dockerfile # Description: test image FROM busybox LABEL maintainer="natasha <natasha@163.com>" app="httpd" ENV WEBDIR="/data/web/html" RUN mkdir -p ${WEBDIR} && echo 'this is a test web' > ${WEBDIR}/index.html CMD [ "sh","-c","/bin/httpd -f -h ${WEBDIR}" ]# 构建镜像
docker build -f Dockerfile -t apache:v1 /data/docker/Docker-file
2.2 dockerfile案例
### 提供基础镜像 Centos,(最接近完整虚拟机) [root@docker-31 /data/docker/images]# cd /data/docker/images/ [root@docker-31 /data/docker/images]# wget http://192.168.6.100/Docker/images/centos7.9.2009.tar [root@docker-31 /data/docker/images]# docker load < centos7.9.2009.tar ### 创建专用目录和相关的文件 [root@docker-31 /data/docker]# mkdir centos-nginx/ [root@docker-31 /data/docker]# cd centos-nginx/ ### 提供水果忍者游戏 和 阿里云yum配置 [root@docker-31 /data/docker/centos-nginx]# cp /etc/yum.repos.d/aliyun.repo ./ [root@docker-31 /data/docker/centos-nginx]# wget http://192.168.6.100/web/fruit-game.tar.gz [root@docker-31 /data/docker/centos-nginx]# ls aliyun.repo fruit-game.tar.gz ### 编写Dcokerfile FROM centos:centos7.9.2009 LABEL author="xunfang" version="7.9.2009" nginx_version="1.20" app="Game" WORKDIR /etc/yum.repos.d/ RUN rm -rf /etc/yum.repos.d/*.repo ADD aliyun.repo ./ ADD http://192.168.6.100/web/nginx-1.20.2.tar.gz /usr/local/src RUN yum clean all && yum makecache && yum install -y gcc zlib zlib-devel pcre pcre-devel openssl openssl-devel && groupadd -g 88 nginx && useradd -g nginx -M -s /sbin/nologin -u 88 nginx && cd /usr/local/src && tar xf nginx-1.20.2.tar.gz && cd nginx-1.20.2 && ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module --with-pcre && make && make install ADD fruit-game.tar.gz /usr/local/nginx/html/ WORKDIR /usr/local/nginx/html EXPOSE 80/tcp CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"] ### 执行构建 [root@docker-31 /data/docker/centos-nginx]# docker build -t centos-nginx-game:v1 /data/docker/centos-nginx ### 查看镜像 [root@docker-31 /data/docker/centos-nginx]# docker images ### 运行容器: docker run -d --name nginx-game-1 -p 88:80 centos-nginx-game:v1 ### windows测试 http://192.168.10.31:88 ### 登录容器查看: [root@docker-31 /data/docker/centos-nginx]# docker exec -it nginx-game-1 /bin/bash3. Docker命令小结
docker -v docker --help docker version docker info docker ps docker ps -a docker images docker search docker pull docker save -o docker load < docker rmi docker rm -f docker attach 返回主程序,1号 docker exec 在主程序上,运行新的程序 非 1号 docker inspect 查看 容器/镜像 明细 ctrl + p + q docker run -it --name -p -d docker start 启动一个挂掉的容器4. Docker-compose
Docker的服务编排工具,主要用来构建基于 Docker 的复杂应用,通过 YAML 文件声明式
# 安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 授权
chmod +x /usr/local/bin/docker-compose
# 运行docker-compose
docker-compose up
# 后台运行docker-compose
docker-compose up -d
