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 = 1

sysctl -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 docker

1.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/bash

2. Dockerfile

Dockerfile是一个包含 用于 组合镜像 的命令 的文本文档 。可以使用在命令行中,调用任何命令

Docker 通过 docker build 命令 可以 读取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/bash

3. 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

更多推荐