Docker

Docker

安装

  1. 在docker hub上注册一个账号
  2. 下载docker desktop mac
  3. 配置国内镜像源 "registry-mirrors": [ "https://registry.docker-cn.com" ]
  4. 安装完成

使用

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
docker run -p 0.0.0.0:8080:80 --name=xxxx -i -t IMAGE /bin/bash		
# 启动交互式容器
# -p 设置一个端口映射 IP+主机端口+容器端口
# -i --interactive=true|false 默认flase
# -t --tty=true|false 默认false ctrl+p 当前容器转到后台运行

docker ps [-a][-l]
# 查看容器 -a:所有,-l:最新创建的容器,默认返回正在运行的容器

docker inspect 容器名
# 查看容器信息

docker rm 容器名
# 删除容器

docker start [-i] 容器名
# 重新启动建立过的容器

docker run --name=xx -d ubuntu /bin/bash/
# 在后台启动一个守护式容器

docker attach 容器名
# 进入在后台运行的容器

docker logs [-f] [-t] [--tail] 容器名
# 查看容器日志
# -f --follows=true|false 默认false 一直跟踪容器变化并且返回结果
# -t --timestamps=true|fasle 默认为flase 增加时间戳
# --tail="all"

docker top 容器名
# 查看运行中容器的进程情况
docker exec [-d] [-i] [-t] 容器名
# 在运行的容器中启动新的进程

ctrl + Q P 退出容器但不关闭
docker kill 容器名 # 强制退出
docker stop 容器名 # 等待容器自然停止

docker search 镜像名 # 从远程仓库查找镜像
docker pull 镜像名 # 下载镜像
docker push 镜像名 # 推送镜像

docker commit 容器名
# 通过容器构建镜像
# -a 作者名
# -m 构建信息
# -p 可以不暂停正在运行的容器

docker cp [容器id]:[文件路径]
# 把容器内的文件复制到主机中

容器数据卷

为了数据持久化,从容器到主机

是容器之间数据共享技术,docker容器中产生的数据同步到本地。

目录到挂载,将容器的目录挂载到linux上。

就是容器到持久化和同步操作,容器间也是可以数据共享的

使用数据卷

方式一

1
2
3
docker run -it -v /home/ceshi:/home centos /bin/bash

# 主机目录:容器内目录双向绑定

好处:后续修改只需要在本地即可,容器内不管停止还是启动都会同步

mysql

1
2
3
docker pull mysql:5.7

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/data MYSQL-password=123456 --name mysql01 mysql:5.7

具名和匿名挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
# 匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx nginx

# 查看所有容器信息
docker volume ls

# 具名挂载 (一般都使用这个)
docker run -d -P --name nginx01 -v my-nginx:/etc/nginx nginx

# 所有卷在没有指定目录时,都是在/var/lib/docker/volumes 下
# 通过在-v最后面加: ro rw 可以改变读写权限,只能设置容器的权限
docker run -d -P --name nginx01 -v my-nginx:/etc/nginx:ro nginx
# 这样就只能通过外部更改了

多挂载

其他容器都挂载到一个父容器,然后父容器于主机挂载。

--volumes-from 继承的容器

Dockerfile

就是用来构建镜像的脚本文件

1
2
3
4
5
6
7
8
9
10
11
# 1.创建一个dockerfile文件
# 2.docker bulid
# 3.docker run 运行镜像
# 4.可以上传
FROM centos
VOLUME ["volume01":"volume02"]

CMD echo "---end---"

然后
docker bulid -f dockerfile文件路径 -t 容器名 .

dockerfile构建过程

基础知识

  1. 每个保留指令都必须是大写
  2. 执行从上到下顺序执行
  3. 每个指令都会创建提交一个新的镜像层

dockerfile是面向开发的,以后需要发布项目,就需要编写dockerfile。

Dockerfile指令

1
2
3
4
5
6
7
8
9
FROM					# 基础镜像
MAINTAINER # 镜像是谁写的 姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤,tomcat镜像,这个tomcat压缩包,添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置
CMD # 指定这个容器启动的时候要执行的命令
ENTRYPOINT # 指定这个容器启动时要运行的命令,可以追加命令
0%