首页 > 其他分享 >Docker

Docker

时间:2023-06-24 13:32:42浏览次数:40  
标签:容器 命令 nginx html 镜像 Docker 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

1.首先需要大家虚拟机联网,安装yum工具

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

2.更新本地镜像源:

# 设置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

3.然后输入命令:

yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

启动docker

启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

输入命令查看docker版本:

docker -v

镜像

拉取镜像

docker pull nginx

查看拉取到的镜像

docker images

查看save命令用法

docker save --help

利用docker xx --help命令查看docker save和docker load的语法

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

使用docker save导出镜像到磁盘

docker save -o nginx.tar nginx:latest

使用docker load加载镜像

删除本地的nginx镜像

docker rmi nginx:latest

运行命令,加载本地文件

docker load -i nginx.tar

容器

命令

解释

docker run

创建并运行一个容器,处于运行状态

docker pause

让一个运行的容器暂停

docker unpause

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

docker stop

停止一个运行的容器

docker start

让一个停止的容器再次运行

docker rm

删除一个容器

1.创建并运行nginx容器的命令

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

命令解读:

  • docker run :创建并运行一个容器
  • --name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx

2.进入容器。进入我们刚刚创建的nginx容器的命令为

docker exec -it mn bash

命令解读:

  • docker exec :进入容器内部,执行一个命令
  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn :要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

3.修改index.html的内容

sed -i -e 's#Welcome to nginx#阿里巴巴欢迎您#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html
sed -i -e 's#Welcome to nginx#完美世界欢迎您#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

小结:

docker run命令的常见参数有哪些?

  • --name:指定容器名称
  • -p:指定端口映射
  • -d:让容器后台运行

查看容器日志的命令:

  • docker logs
  • 添加 -f 参数可以持续查看日志

查看容器状态:

  • docker ps
  • docker ps -a 查看所有容器,包括已经停止的

数据卷

数据卷操作的基本语法如下:

docker volume [COMMAND]

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

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

1.创建数据卷

docker volume create html

2.查看所有数据

docker volume ls

3.查看数据卷详细信息卷

docker volume inspect html

小结

数据卷的作用:

  • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

数据卷操作:

  • docker volume create:创建数据卷
  • docker volume ls:查看所有数据卷
  • docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置
  • docker volume rm:删除指定数据卷
  • docker volume prune:删除所有未使用的数据卷

5.挂载数据卷

在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:

docker run \
  --name mn \
  -v html:/root/html \
  -p 8080:80
  nginx \

这里的-v就是挂载数据卷的命令:

  • -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中

6.案例-给nginx挂载数据卷

① 创建容器并挂载数据卷到容器内的HTML目录

docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx

② 进入html数据卷所在位置,并修改HTML内容

# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html

小结

docker run的命令中通过 -v 参数挂载文件或目录到容器中:

  • -v volume名称:容器内目录
  • -v 宿主机文件:容器内文
  • -v 宿主机目录:容器内目录

数据卷挂载与目录直接挂载的

  • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
  • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看
  • 目录或者文件挂载会覆盖容器中的目录或者文件,而数据卷不会

Dockerfile自定义镜像

1.构建Java项目

基于Ubuntu构建Java项目

  • 步骤1:新建一个空文件夹docker-demo
  • 步骤2:拷贝资料中的docker-demo.jar文件到docker-demo这个目录
  • 步骤3:拷贝资料中的jdk8.tar.gz文件到docker-demo这个目录
  • 步骤4:拷贝资料提供的Dockerfile到docker-demo这个目录
    其中的内容如下:
# 指定基础镜像
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
  • 步骤5:进入docker-demo
    将准备好的docker-demo上传到虚拟机任意目录,然后进入docker-demo目录下
  • 步骤6:运行命令:
docker build -t javaweb:1.0 .

最后访问 http://192.168.150.101:8090/hello/count,其中的ip改成你的虚拟机ip

DockerCompose

Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:

version: "3.8"
 services:
  mysql:
    image: mysql:5.7.25
    environment:
     MYSQL_ROOT_PASSWORD: 123 
    volumes:
     - "/tmp/mysql/data:/var/lib/mysql"
     - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  web:
    build: .
    ports:
     - "8090:8090"

下载DockerCompose

Linux下需要通过命令下载:

# 安装
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

Base自动补全命令:

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

安装DockerCompose

设置命令补全

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compos

Docker镜像仓库

推送镜像到私有镜像服务必须先tag,步骤如下

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

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

② 推送镜像

docker push 192.168.150.101:8080/nginx:1.0

③ 拉取镜像

docker pull 192.168.150.101:8080/nginx:1.0

简化版镜像仓库

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

搭建方式比较简单,命令如下:

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 可以查看当前私有镜像服务中包含的镜像

带有图形化界面版本

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=lucky私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

配置Docker信任地址

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
{
    # 其他已有的东西
    。。。。。。。
    #这一行需要新添加,注意:整个文件是一个标准的json格式,别漏掉逗号、双引号,
    # 如果不确定是否正确,拷贝到在线json格式检查工具中检查时格式是够合法
    "insecure-registries":["http://192.168.150.101:8080"]
}
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

标签:容器,命令,nginx,html,镜像,Docker,docker
From: https://blog.51cto.com/u_16169178/6541080

相关文章

  • Docker
    初始Docker项目部署问题大型项目组件较多,允许环境复杂,部署会碰到一些问题:依赖关系复杂,容易出现兼容性问题开发、测试、生产环境有差异DockerDocker如何解决依赖的兼容问题?将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包将每个应用放到一个隔离容器去允许,避免相互干扰不同环境的......
  • docker常用指令和options说明
    1、dockerrun运行容器以及容器资源语法:dockerrun[options]image[:tag|digest][command][ags...]dockerrun 命令必须指定一个容器镜像,可以设置镜像的一些默认值:前台还是后台运行;容器身份标识;网络设置;运行时对CPU和内存约束。 OPTIONS说明(常用):--name="容器新名......
  • Docker原理和Dockerfile的原理介绍
    Docker原理Docker是一种容器化平台,可以在其中运行应用程序。Docker将应用程序和其依赖项打包在一个容器中,提供了一种轻量级的解决方案,可以轻松地在任何平台上运行应用程序。Docker的核心技术是Linux容器(LXC)。容器是一种虚拟化技术,允许应用程序在有限的资源下运行,同时提供了强大的隔......
  • 记录liunx服务器和docker时区修改
    记录服务器和docker时区修改前言我的博客是部署在docker里面的,然后我发现评论和留言的时间和北京时间是有差别的,相差8个小时,然后发现是因为容器中的时区设置与服务器是不一致的,所以需要设置一下。更改liunx服务器时区查看当前时区设置使用date命令查看当前系统时间,发现当前......
  • docker安装minio
    一、简介MinIO是在GNUAffero通用公共许可证v3.0下发布的高性能对象存储。它是与AmazonS3云存储服务兼容的API,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等文档:http://......
  • Docker容器相关命令
    容器相关命令:(1)dockerrun:创建容器并让容器出于运行状态(2)dockerpause:运行到暂停(3)dockerunpause:从暂停到运行(4)dockerstop:运行到停止(5)dockerstart:停止到运行【暂停是挂起,停止是杀死进程】(6)dockerexec进入容器执行命令(7)dockerlogs查看容器运行日志(8)dockerps查看所......
  • kubernetes安装和调试(1-20-9-docker19-03-0-weave)
    kubernetes安装和调试(1.20.9+docker19.03.0+weave)学习kubernetes来对项目进行容器化部署。这里使用了VMware创建虚拟机来搭建k8s集群。VMware:16.1.2,CentOS7,docker:19.03.0,kubeadm:1.20.9,kubectl:1.20.9,kubelet:1.20.9,weave。CentOS安装镜像下载CentOS7下载地址:CentOS7.9......
  • permission denied while trying to connect to the Docker daemon socket at unix://
     001、问题[liujiaxin01@PC1~]$dockersearchomicsclasspermissiondeniedwhiletryingtoconnecttotheDockerdaemonsocketatunix:///var/run/docker.sock:Get"http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/search?term=omicsclass":dialunix......
  • centos7中 给docker添加镜像加速器
     001、查看当前的镜像加速地址[root@PC1test01]#dockerinfo|tail 002、进入阿里云官网:https://www.aliyun.com/?spm=5176.8351553.top-nav.dlogo.47f41991k7oEMl 003、 004、点击产品 005、点击容器 006、点击容器镜像服务ACR  007、点击管理......
  • Docker镜像相关命令
    一、镜像相关命令镜像名称一般分两部分组成:[repository]:[tag]。在没有指定tag时,默认是latest,代表最新版本的镜像镜像操作命令:docker--help查看docker命令构建镜像:将本地的DockerFile文件使用dockerbuild构建成镜像   查看镜像:dockerimages删除镜像:do......