Docker引擎的安装: https://docs.docker.com/manuals/

一、Docker命令

1.启动: sudo systemctl start docker;  查看正在运行中的应用: docker ps;

2.系统开机/重启时也启动docker: systemctl enable docker;

3.镜像搜素: docker search xxx;  镜像拉取: docker pull xxx; 拉取指定版本镜像: docker pull xxx:latest;

4.查看已存在镜像: docker images;  查看镜像的不同版本可访问 http://hub.docker.com/; 删除镜像 docker rmi 镜像id/xxx:latest;

5.启动镜像时携带参数: docker run [options] xxx;  后台启动镜像: docker run -d xxx;

6.后台运行切端口映射 docker run -d -p 88:80 nginx;(88为主机端口,80为内部容器端口,内部端口可重复);

7.停止运行镜像: docker stop xxx;  运行镜像 docker start xxx; 重启镜像 docker restart xxx;

8.查看镜像运行的状态: docker stats xxx;  查看镜像日志: docker logs xxx; 删除镜像: docker rm xxx;

9.进入容器中的某个目录: docker exec -it mynginx /bin/bash;  -it为交互模式;

10.提交镜像: docker commit [options] CONTAINER [REPOSITORY][:TAG];

11.保存镜像: docker save [options]  IMAGE; 加载镜像: docker load [options];

12.客户端登录docker社区: docker login; 镜像改名 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG];

13.推送镜像到社区个人主页 docker push xxx;

14.卷操作: docker volume;   列出所有卷: docker volume ls; 创建卷: docker volume create myvolume; 查看某个卷的信息: docker volume inspect myvolume;

15.查看某个容器的信息 docker container inspect 6e69c3b4cd5b;

16.网络相关命令docker network; 创建网络: docker network cerate mynet;

17.docker compose相关。批量容器管理首次上线:docker compose up -d 批量容器管理下线:docker compose down

18.compose启动 docker compose start x1 x2; compose停止 docker compose stop x1 x2;

二、Docker储存

1.目录挂载: 在docker run时通过 -v命令,将外部目录挂载到容器指定目录,以便更安全的保存数据。如: -v /my/nginx/html:/user/share/nginx/html 命令将外部的/my/nginx/html目录进行挂载。此时以修改命令修改容器内部地址,外部实体文件,也会被修改,内外部修改都生效。外部目录挂载后会覆盖内部目录中原有的文件。

2.卷映射: 在docker run时通过 -v命令,映射一个卷到内部目录,以便更安全的保存数据。如: -v ngconf:/etc/nginx,其中ngconf就是卷名。以卷映射启动时,卷中文件初始化是以内部文件为准的。如果要改卷中的配置文件,其地址在docker约定的目录,/var/lib/docker/volumes/<volume-name>中。同样改外部卷中的文件,内部也生效。

三、Docker网络

1.默认网络: docker应用有一个默认网关docker0,其内部的所有容器,都在这个默认网关内。每个容器会分配一个唯一ip,容器间可以通过这个ip访问。容器ip存在变化的可能,考虑用固定的域名访问,但默认网络docker0不支持域名访问,可以创建自定义网络,并以固定的域名进行访问。

2.自定义网络

通过docker network cerate mynet;创建网络后,docker run时,通过 --network参数可指定运行的网络,如:

容器app1: docker run -d -p 88:80 --name app1 --network mynet nginx;

容器app2: docker run -d -p 99:80 --name app2--network mynet nginx;

在app2中可以通过http://app1:80 来访问app1,即以容器名作为域名来访问容器

四、Docker Compose

通过以上各种命令,我们配置、应用和管理容器较为不便,可以通过Docker Compose批量管理和配置容器。基于.yaml的配置文件进行管理,就是将以前的命令都写进配置文件进行管理和分享;文件编写格式参考https://docs.docker.com/compose/compose-file/。创建的多个容器默认在一个网络环境.

1.示例,如管理mysql和redis:

services:
  mysql:
    image: mysql:8.3.0
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
    environment:
      - MYSQL_ROOT_PASSWORD=asd1234
      - MYSQL_LOWER_CASE_TABLE_NAMES=0
    ports:
      - "3306:3306"
    volumes:
      - ./data/mysql:/var/lib/mysql     // 若使用卷挂载,需要将卷名在全局volumes属性下声明一下 
      restart:always                          // 开机自启动
  redis:
    image: redis:7.4
    ports:
      - "6379:6379"
    volumes:
      - ./data/redis:/data
    depends_on:
      - mysql                 //有依赖时,可设置先启动mysql

2.yaml文件修改后,可以增量更新启动:

docker compose -f compose.yaml up -d

五、Dockerfile

1.dockerfile用于制作镜像,需要编写相关指令来实现;可参考 https://docs.docker.com/reference/dockerfile/  镜像一般包含基础环境,软件包,启动命令;

2.docker的镜像存储机制: 分层存储机制,不同镜像可共用部分只存储一份。

点赞 (2)

欢迎转载:转载时请注明本文出处及文章链接