docker学习记录

docker学习记录

1
2
镜像 镜像库 
容器

镜像

下载

1
2
3
4
5
6
7
8
9
10
11
下载 windows linux 
命令:
docker pull docker.io/library/xxx:latest 注意是官方库可以省略的部分

dockerhub: hub.docker.com
dockhub的镜像站:docker.fxxk.dedyn.io
给docker配置镜像站:daemon.json

docker pull --platform=xxxx 一般linux上下载docker镜像会自动选择适合宿主机处理器架构的镜像

可以直接不下载直接使用docker run,创建运行容器时自动下载镜像

查看已下载镜像

docker images

删除镜像

docker rmi id/名字

容器

创建容器和运行

docker run -d -p 80:80 镜像id或者名字 可以设置容器名字没细讲

docker create和run类似 但只创建

查看运行中的容器

docker ps 显示正在运营容器

可以显示:容器id 所属镜像 容器名字等 -a(显示包括非运行的容器)

查看容器的信息

docker inspect 容器 查看容器的信息

删除容器

1
docker rm -f id 删除正在运行的容器需要f 

挂载卷 -v

绑定挂载卷

1
2
docker run  -d -p 80:80 -v 宿主机目录:容器目录 镜像id或者名字 
绑定挂载 宿主目录写死 会覆盖容器目录内容

命名卷挂载

1
2
3
4
5
6
7
8
docker volume create xxx 

docker run -d -p 80:80 -v 挂载卷名字:容器目录 镜像id或者名字
docker volume inspect 挂载卷名字 显示挂载卷的真实位置

docker volume rm xxx

docker volume prune -a 删除所有没有容器使用的卷

查看已有的挂载卷

1
docker volume list 

设置容器变量 -e

1
2
3
4
5
6
7
8
-e参数  
docker run -e xxx=xxx -d -p... -v... 镜像

创建mongdb容器
mongo
创建mongodb网页端容器
--name参数
docker run -e xxx=xxx -d -p... -v... --name 容器名 镜像 容器名要唯一

-it参数

-it参数 可以让交互页面进入docker交互页面
docker run -it -rm alpine 轻量级linux系统 停止运行后删除,调试很有用

进入容器的交互界面

docker exec -it 容器 /bin/sh

查看容器内linux系统信息

cat /etc/os-release 查看容器内linux系统信息,容器内的系统简洁有的工具不自带

–restart参数

第一个命名在docker停止后会重启,第二个手动停止不会重启 生产环境
docker run -d –restart always nginx
docker run -d –restart unless-stopped nginx

启动和暂停容器

docker start/stop 容器 会保留之前启动的参数

容器日志

docker logs 容器 -f 动态显示日志

在容器内部执行linux命令

docker exec 容器 ps -ef

容器网络 容器子网

1
2
3
4
5
6
7
8
9
10
11
docker network create 子网名 
桥接模式
--network 子网名

host模式 直接使用宿主机网络和端口
--network host

none模式 没有网络

docker network list 显示所有docker网络
删除网路 docker network rm xxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker network create network1

docker run -d \
--name my_mongodb\
-e MONGO_INITDB_ROOT_USERNAME=name\
-e MONGO_INITDB_ROOT_PASSWORD=pass\
-v /my/datadir:/data/db\
--network network1\
mongo

docker run -d \
--name my_mongodb_express\
-p 8081:8081\
-e ME_CONFIG_MONGODB_SERVER=my_mongodb\
-e ME_CONFIG_MONGODB_ADMINUSERNAME=name\
-e ME_CONFIG_MONGODB_ADMINUSERPASSWORD=pass\
--network network1\
mongo-express

构建镜像

dockerfile

1
2
3
4
5
6
7
dockerfile 描述镜像是如何创建的 
from
workdir
copy
run
cmd [] 一个dockerfile里只能有一个cmd
entrypoint 比cmd优先级更高,不容易被覆盖

docker build命令

1
2
3
4
5
docker build -t 镜像名字 版本可不指定 . 

然后就可以使用自定义的镜像创建运行了

发布镜像到dockerhub

docker compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
快捷创建多个容器,方便管理的容器编排技术,使用yml文件管理多个容器。

yml文件定义各个容器如何创建和如何协同工作的

docker compose文件默认所有容器自动加入同一个子网
yml文件文件里可以定义容器启动顺序dependson

标准的名字是docker-compose.yaml,如果是其它名字需要加-f

docker compose up -d(同dockercompse文件目录下) 启动yml文件里定义的容器

docker compose up -d -f test.yaml(其它名字) 启动yml文件里定义的容器

docker compose down(同dockercompse文件目录下) 停止并删除容器

docker compose stop (同dockercompse文件目录下) 停止容器

docker compose start (同dockercompse文件目录下) 启动用dockercompose文件创建但已停止的容器