一、测试环境

名称版本
centos7.6
docker18.09.06

二、在线安装

这里采用yum源命令安装前期准备的依赖包,包括yum-utils、device-mapper-persistent-data、lvm2

 sudo yum install -y yum-utils device-mapper-persistent-data lvm2

因为官方镜像仓库网速较慢,在此设置阿里云镜像代理,以便快速下载、上传镜像。

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  

接下来安装Docker-CE 社区版,通过以下命令查看docker社区版安装包列表。如下图所示各docker版本信息。

yum list docker-ce --showduplicates | sort -r

在这里插入图片描述
选择对应版本安装docker

sudo yum install docker-ce.x86_64

启动

sudo systemctl enable docker
sudo systemctl start docker

验证:查看版本信息命令,出现下图时表明安装成功。

docker version

在这里插入图片描述

三、离线安装

提供以下三种方式下载docker离线安装包

  1. Docker官方地址:docker down
  2. 百度云下载地址: https://pan.baidu.com/s/1XsLShYKyPcj2-bQ2VlFidg 提取码: wgb3
  3. 有网服务器执行命令下载:wget https://download.docker.com/linux/static/stable/x86_64/docker-18.09.6.tgz

官方参考文档:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries

将已下载好的docker离线包拷贝到服务器,解压压缩包

tar -xvf docker-18.09.6.tgz

将解压出来的docker文件内容移动到 /usr/bin/ 目录下

cp docker/* /usr/bin/

注册编辑docker服务

vim /etc/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
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# 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
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
  
[Install]
WantedBy=multi-user.target

添加权限后启动

chmod +x /etc/systemd/system/docker.service

重新加载配置文件

systemctl daemon-reload 

启动Docker

systemctl start docker

设置开机自启

systemctl enable docker.service

验证是否安装成功

systemctl status docker
docker -v

**

四、常用命令(搜索、下载本地未有镜像需要联网)

**
搜索镜像,

#docker search 镜像名称
docker search java

在这里插入图片描述
下载镜像

#docker pull 镜像名称
docker pull java

在这里插入图片描述
查看已下载的镜像

docker images

在这里插入图片描述
删除镜像

删除单个镜像:docker rmi 镜像名称
删除所有镜像:docker rmi -f $(docker images)

操作容器

  1. 使用docker run命令可新建并启动一个容器,例如使用java镜像启动:docker run java /bin/echo 'Hello World'
    其它启动可选附带参数:
    -d 选项:表示后台运行
    -P 选项:随机端口映射
    -p 选项: 指定端口映射,有以下四种模式

    	① ip:hostPort:containerPort
    	② ip::containerPort
    	③ hostPort:containerPort
    	④ containerPort
    
  2. 实例测试Nginx容器
    docker run --name nginxTest -d -p 91:80 nginx

    说明:docker 启动容器时,本地无该容器时会自动从Docker Hup下载引用
    -d #后台运行
    -p #宿主机端口:容器端口 #开放容器端口到宿主机端口
    –name #自定义容器名称

  3. 浏览器访问http://服务器ip:91 ,如果出现Nginx主页则表示启动成功。

  4. 查看容器状态
    查看正在运行容器详情 docker ps
    查看所有容器详情 docker ps -a
    在这里插入图片描述
    – CONTAINER ID #容器ID
    – IMAGE #镜像
    – CREATED #创建时间
    – STATUS #状态 Up代表正在运行,Exited 表示已停止运行
    – PORTS #端口
    – NAMES #容器名称

  5. 查看容器日志
    格式:docker logs -f -t --tail 行数 容器名 或者 docker logs -f -t --tail 行数 容器ID
    docker logs -f -t --tail 200 483a128fdb39

  6. 停止容器
    docker stop 容器IDdocker stop 容器名称

  7. 强制停止容器
    docker kill 容器ID

  8. 启动已停止的容器
    docker start 容器ID

  9. 重启容器
    docker restart 容器ID

  10. 进入容器
    (1)使用docker attach 命令进行容器,有多窗口操作会同步显示和阻塞问题。
    docker attach 容器ID
    (2)使用nsenter进入容器
    docker inspect --format "{{.State.Pid}}" 容器ID #查询出pid
    nsenter --target 查询的pid --mount --uts --ipt --net --pid
    (3) 推荐 使用docker exec 命令,该命令在1.3.x版本之后提供。
    docker exec -it 容器ID /bin/bash

  11. 查看容器详情
    docker inspect 容器ID

  12. 删除容器
    docker rm 容器ID
    #该命令不可删除正在运行的容器,要执意删除加-f 参数

打包镜像为离线包

docker save -o 文件名.tar 镜像名称

加载离线镜像包

docker load < 文件名.tar

使用Dockerfile构建Docker镜像

  1. 以上面创建的Nginx为例,创建dockerfiler文件
    touch Dockerfile

  2. 编辑dockerfiler文件
    vim Dockerfile

  3. 填入以下内容

    FROM nginx
    #添加进入docker容器后的目录(可以不填)
    WORKDIR /opt/hello
    
    RUN echo '<h1>Hello World!</h1>' > /usr/share/nginx/html/index.html
    
  4. 在Dockerfile所在路径执行以下命令
    docker build -t nginx:my .

  5. 启动一个docker容器
    docker run -d -p 92:80 nginx:my
    当然也可指定配置文件路径
    docker run -d -p 92:80 -v /u01/hello/config:/opt/hello/config nginx:my
    说明:-d 后台运行,-p 对外暴露端口:内部端口 -v linux文件路径:容器内路径 --name 容器昵称 启动的镜像:版本号
    之后只需要在linux 下的/u01/hello/config修改配置,重启容器加载。

  6. 浏览器访问http://ip:92 ,可看到“Hello World!”信息。

未完待续…愿世界安好…
使用Docker Registry管理镜像
使用Docker Hub 管理镜像
使用maven插件构建Docker镜像

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐