Docker学习

1. 环境准备

Linux ubuntu 4.15.0-194-generic #205-Ubuntu SMP Fri Sep 16 19:49:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

2. 安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

2.1. 配置镜像加速

Docker镜像首页,包括官方镜像和其它公开镜像。Docker Hub上最受欢迎的10大镜像 (通过Docker registry API获取不了镜像被pull的个数,只能通过镜像的stars数量,来衡量镜像的流行度。毫无疑问,拥有最高stars数量的库都是官方库。国情的原因,国内下载 Docker HUB 官方的相关镜像比较慢,可以使用国内(docker.io)的一些镜像加速 器,镜像保持和官方一致,关键是速度块,推荐使用。配置镜像加速器:

PS:配置镜像加速器(参考该网站具体的文档操作)

步骤:

sudo vim /etc/docker/daemon.json

配置内容:

{
  "registry-mirrors": ["https://cs913o6k.mirror.aliyuncs.com"]
}
  sudo systemctl daemon-reload
  sudo systemctl restart docker

3. 卸载

sudo apt-get remove docker docker-engine docker.io containerd runc

4. 镜像操作

4.1. 列出镜像

docker images

image-20230104105911011

  • REPOSITORY:表示镜像的仓库源 TAG:镜像的标签(版本),同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本。
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

4.2. 查找镜像

 docker search 镜像名称

image-20230104110314183

  • NAME:镜像仓库源的名称
  • DESCRIPTION:镜像的描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否docker官方发布
  • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

4.3. 拉取镜像

docker pull 镜像名称[:version]

QQ20230104-111421

4.4. 删除镜像

#1、删除一个镜像
docker rmi 镜像名称/id 
#2、删除多个镜像
docker rmi 镜像名称1/id1 镜像名称2/id2 ... 
#3、删除所有镜像
docker rmi `docker images -q`

5. 容器操作

5.1. 创建容器

 docker run [options] image command [ARG...]
option 作用
-i 以交互模式运行容器,通常与 -t 同时使用
-t 启动容器后,为容器分配一个命令行,通常与 -i 同时使用
-v 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
-d 守护进程,后台运行该容器
-p 指定端口映射,格式:主机(宿主)端口:容器端口
-P 随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535)
-u 以什么用户身份创建容器
-name “nginx-lb” 容器名字
-m, --memory bytes 设置容器使用内存最大值
-h, --hostname string 指定容器的 host name
-dns 8.8.8.8 指定容器 dns 服务器
-e username=“ritchie” 设置环境变量
--restart=always 重启后,容器是否自动重启
-privileged 容器内是否使用真正的 root 权限
--link 容器内是否使用真正的 root 权限

创建数据库:

docker run -d --name=dev_template_factory_data  --restart=always \
         -v /data/dev_template_factory_data:/var/lib/postgresql/data \
         -e POSTGRES_PASSWORD=qwer123456 \
         -p 127.0.0.1:8091:5432 \
         -d postgres:14

创建应用:

docker run -d --name=template-factory-test --restart=always \
    -p 8090:8080 \
    -v /usr/share/zoneinfo:/usr/share/zoneinfo:ro \
    -v /etc/ssl/certs:/etc/ssl/certs:ro \
    -v /data/dev-template-factory/data:/data \
    -v /data/dev-template-factory/log:/log \
    -v /data/dev-template-factory/session:/session \
    -v /data/dev-template-factory/static:/static \
    -e TZ=Asia/Shanghai \
    -e LOG_LEVEL=0 \
    -e db="postgres://postgres:qwer123456@dev_template_factory_data:5432/template-factory?sslmode=disable" \
    -e s=":8080" \
    --link dev_template_factory_data:dev_template_factory_data \
    registry.cn-chengdu.aliyuncs.com/hountryliu/template-factory-test

5.2. 进入容器

#方式一: (ps:exit,退出容器会停止)
docker attach 容器名称/id 
#eg:docker attach u3

#方式二: (ps:exit,退出容器不会停止)
docker exec -it 容器名称/id /bin/bash
#eg:docker exec -it u3 /bin/bash

5.3. 查看容器

#查看正在运行的容器
docker ps
#查看运行过的容器(历史) 
docker ps -a
#最后一次运行的容器
docker ps -l

5.4. 停止/启动容器

docker start 容器名称/id
docker stop 容器名称/id

5.5. 获取容器/镜像的元数据

查看容器/镜像全部信息:
docker inspect 容器/镜像
查看容器/镜像部分信息:
docker inspect --format '{{.NetworkSettings.IPAddress}}' 容器/镜像

5.6. 删除容器

PS:无法删除正在运行的容器

#删除一个容器:
docker rm 容器名称/id 
#删除多个容器:
docker rm 容器名称1/id1 容器名称2/id2 ... 
#删除所有容器
docker rm `docker ps -a -q`

5.7. 查看容器日志

docker logs 容器名称/id

5.8 文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录
#eg:docker cp 1.txt c2:/root

也可以将文件从容器内拷贝出来

 docker cp 容器名称:容器目录 需要拷贝的文件或目录
 #eg:docker cp c2:/root/2.txt /root

6. docker自定义镜像

6.1. docker commit

6.1.1. 制作

提交一个正在运行的容器为一个新的镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :提交的镜像作者
  • -c :使用Dockerfile指令来创建镜像
  • -m :提交时的说明文字;
  • -p :在commit时,将容器暂停。

QQ20230104-135133

6.1.2. 打包

6.1.2.1. 打包镜像
docker save [OPTIONS] IMAGE [IMAGE...]

OPTIONS 说明:

  • -o :输出到的文件。

QQ20230104-141300

6.1.2.1. 打包容器
docker export [OPTIONS] CONTAINER

OPTIONS说明:

  • -o :将输入内容写到文件。

QQ20230104-143210

6.1.3. 导入

6.1.3.1. 导入镜像
docker load [OPTIONS]

OPTIONS 说明:

  • --input , -i : 指定导入的文件,代替 STDIN。
  • --quiet , -q : 精简输出信息。

QQ20230104-143512

6.1.3.2. 导入容器
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

OPTIONS说明:

  • -c :应用docker 指令创建镜像
  • -m :提交时的说明文字

QQ20230104-144104

6.2. docker builder

6.2.1. Dockerfile

QQ20230104-150122

FROM       # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像的作者 邮箱+姓名
RUN        # 镜像构建的时候需要运行的命令
ADD        # 步骤:tomcat镜像,这个tomcat压缩包,添加内容
WORKDIR    # 镜像的工作目录
VOLUME     # 挂载的目录
EXPOST     # 保留端口配置
CMD        # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD    # 当构建一个被继承 DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令。
COPY       # 类似ADD ,将我们的文件拷贝到镜像中
ENV        # 构建的时候设置环境变量

eg:构造nginx镜像的Dockerfile

#下载镜像
FROM centos:centos7
MAINTAINER hountryliu hountryliu@qq.com
#安装nginx所需环境
RUN yum install -y pcre pcre-devel openssl openssl-devel gcc gcc+ wget vim net-tools
#创建www用户组
RUN useradd www -M -s /sbin/nologin
RUN cd /usr/local/src && wget http://nginx.org/download/nginx-1.23.3.tar.gz && tar -zxvf nginx-1.23.3.tar.gz
#手动编译安装nginx
RUN cd /usr/local/src/nginx-1.23.3 && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module && make && make install
ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /usr/local/nginx/logs/access.log

6.2.2. 构建镜像

docker build  -t ImageName:TagName dir

选项

  • -t 给镜像加一个Tag
  • ImageName 给镜像起的名称
  • TagName 给镜像的Tag名
  • Dir Dockerfile所在目录

QQ20230104-160731

QQ20230104-160939

6.2.2.1 测试镜像
docker run -itd --name=test_nginx -p 39009:80 my_nginx:v1 /bin/bash

QQ20230104-161456

作者: Hountry_Liu
本文采用 CC BY-NC-SA 4.0 协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00