Docker学习

一.CentOS安装Docker

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

安装docker

安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

然后更新本地镜像源:

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

注意:

此处使用yum命令如果报错,需要修改一下yum源

sudo cat <<EOF > /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-\$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/\$releasever/os/\$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
[updates]
name=CentOS-\$releasever - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/\$releasever/updates/\$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
[extras]
name=CentOS-\$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/\$releasever/extras/\$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
[centosplus]
name=CentOS-\$releasever - Plus - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/\$releasever/centosplus/\$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOF

然后输入命令:

yum install -y docker-ce

启动docker

# 先关闭防火墙
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

systemctl status docker # 检查docker状态

systemctl enable docker # 设置docker服务开机自启

输入命令查看docker 版本

docker -v

二.CentOS7安装DockerCompose

配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn",
        "https://bpeyquta.mirror.aliyuncs.com"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

下载

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

修改文件权限

# 修改权限
chmod +x /usr/local/bin/docker-compose
# 查看系统中是否已经包含命令补齐脚本
ls  /usr/share/bash-completion/completions/docker*
# 下载自动补齐工具
yum -y install bash-completion
# 让自动补齐功能生效
source /usr/share/bash-completion/completions/docker
source /usr/share/bash-completion/bash_completion

三.docker容器命令

docker run        --name  容器名称  -v 宿主机目录:容器目录   -p 宿主机端口:容器端口  -d  镜像名称

-d 容器后台运行

-it 交互式运行

-v 挂载数据卷

--restart=always 设置容器的重启策略为始终重启。这意味着即使容器因为某些原因停止,Docker 也会自动重新启动它

# 拉取镜像

docker pull nginx:1.19.0

# 启动容器

docker run --name nginx -d -p 80:80  nginx:1.19.0

 如图所示,nginx启动成功。 

docker pause:让一个运行的容器暂停

docker unpause:让一个容器从暂停状态恢复运行

停止容器:docker stop 容器名称或容器id

启动容器:docker start 容器名称或容器id

删除容器:docker rm 容器名称或容器id (可以删除多个容器,以空格隔开)

查看日志命令:docker logs -f 容器名称或容器id

-f 使得日志持续输出

查看正在运行的容器:docker ps

查看所有容器docker ps -a

进入容器: docker exec -it 容器名称或容器ID bash

四.docker镜像操作命令

# 拉取镜像,不加版本号默认拉取latest
docker pull 镜像名称:版本号

# 查看镜像
docker images

# 保存镜像
docker save -o [保存的目标文件名称] [镜像名称]

# 删除本地镜像
docker rmi nginx:latest
 
# 加载本地文件
docker load -i nginx.tar

注意:当关闭服务器后,再次打开,直接运行docker命令,可能会报如下信息:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

# 首先可以通过status命令查看docker状态
sudo service docker status

# 如果服务状态为dead,可以通过如下命令启动
sudo service docker start

五.数据卷操作

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume

  • inspect 显示一个或多个volume的信息

  • ls 列出所有的volume

  • prune 删除未使用的volume

  • rm 删除一个或多个指定的volume (注意:如果要删除,需要先删除使用的容器

#创建数据卷,名称testVolume
docker volume create testVolume

#查看数据卷信息
docker volume inspect testVolume

#将已有的数据卷进行挂载
docker run -d --name nginx -v testVolume:/usr/local -p 80:80 nginx:1.19.0

#如果没有已有的数据卷,想指定宿主机目录与容器内目录挂载
docker run -d --name nginx -v 宿主机目录:容器内目录 -p 80:80 nginx:1.19.0


六.Dockerfile自定义镜像

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。

Dockerfile语法

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Lay

示例:

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

将该文件上传到虚拟机任意目录执行:docker build -t javaweb:1.0 


七.搭建私有镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

docker pull registry

docker run -d \
    --restart=always \
    --name registry    \
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

上述已经装完.命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像.

推送、拉取镜像

① 重新tag本地镜像,名称前缀为私有仓库的地址:192.168.200.130:8080/

docker tag 本地镜像名称:镜像版本 仓库IP:端口/本地镜像名称:镜像版本

docker tag nginx:latest 192.168.200.130:8080/nginx:1.0

② 推送镜像

docker push 仓库IP:端口/本地镜像名称:镜像版本

docker push 192.168.200.130:8080/nginx:1.0

 注意:此处上传可能报错

The push refers to repository [192.168.187.129:5000/nginx]
Get "https://192.168.187.129:5000/v2/": http: server gave HTTP response to HTTPS client,
这是由于 Docker 客户端尝试通过 HTTPS 连接到位于 192.168.187.129:5000 的 Docker 注册表,但服务器以 HTTP 响应。

此时可以编辑 Docker 守护进程的配置文件(通常位于 /etc/docker/daemon.json

{ "insecure-registries" : ["192.168.187.129:5000"] }

保存文件后,重启 Docker 服务以使更改生效:

sudo systemctl restart docker

③ 拉取镜像

docker pull 仓库IP:端口/本地镜像名称:镜像版本

docker pull 192.168.200.130:8080/nginx:1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值