docker相关
docker在线
apt-get install docker.io
docker离线安装步骤
-
这里用到的版本是:docker 20.10.12,需要三个deb类型文件。
dpkg -i docler-ce-cli_20.10.12_3-0_ubuntu-bionic_amd64.deb dpkg -i containerd.io_1.4.12-1_amd64.deb dpkg -i docler-ce_20.10.12_3-0_ubuntu-bionic_amd64.deb -
查看是否安装成功
docker -v Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1
docker导入导出镜像
#将容器保存为镜像文件
docker commit 容器名称 保存的镜像名称
#例
docker commit postgres mypostgres
#将镜像打包成tar包
docker save -o tar包名称 镜像名称
#例
docker save -o postgresql.tar mypostgres
#将打包好的tar包文件生成镜像
docker load -i tar包名称
#例
docker load -i postgresql.tar
#运行镜像
docker run -d --name postgres --restart=always -e POSTGRES_POSSWARD=postgres -p 5432:5432 -v /data/postgesql:/data mypostgres:latest
#redis运行命令
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /opt/myredis/redis.conf:/etc/redis/redis.conf -v /opt/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass Admin@123
#nginx运行
docker run -di --name=nginx -p 80:80 nginx
docker常用命令
-
查看版本
docker -v -
启动、停止、查看状态
systemctl start docker systemctl stop docker systemctl status docker -
设置开启自启动
systemctl enable docker
镜像常用命令
-
查看镜像
docker images- REPOSITORY:镜像名称
- TAG:镜像标签
- IMAGE ID:镜像ID
- CREATED:镜像的创建日期
- SIZe:镜像大小
这些镜像都是存储在Docker宿主机的
/var/lib/docker目录下 -
搜索镜像
docker search 镜像名 docker search postgres- NAME:仓库名称
- DESCRIPTION:镜像描述
- STARTS:用户评价,反应一个镜像的受欢迎程度
- OFFICIAL:是否官方
- AUTO
-
拉取镜像
docker pull 镜像名称:版本 docker pull postgres:12.0 -
删除镜像
docker rmi 镜像ID / 镜像名称删除所有镜像
docker rmi `docker images -q`
容器相关命令
-
查看容器
查看正在运行的容器
docker ps查看所有容器
docker ps -a查看最后一次运行的容器
docker ps -l查看所有停止的容器
docker ps -f status=exited -
创建与启动容器
创建容器常用参数说明:
创建容器命令:
docker run-i:表示运行容器-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登陆进去。即分配一个伪终端。--name:为创建的容器命名。-v:表示目录映射关系(前者是宿主机目录,后者是要映射的容器目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射。-
交互式方式创建容器
docker run -it --name=容器名称 镜像名称:版本号 /bin/bash退出当前容器
exit -
守护式方式创建容器
docker run -d --name=容器名称 镜像名称:版本号 -
进入容器终端
docker exec -it 容器名称 /bin/bash docker exec -it postgres /bin/bash
-
docker已经创建的容器添加映射端口
-
找到需要添加映射的容器名称
docker ps -a -
查看容器的端口映射情况
docker port 容器名称 -
查找要修改容器的id
docker inspect 容器名称 |grep id -
停止容器,停止docker
-
进入 /var/lib/docker/containers目录找到与上一步操作id相同的目录,修改其中的hostconfig.json和config.v2.json文件。
hostconfig.json文件,找到PortBindings,添加一下端口:
"PortBindings": { "80/tcp": [ { "HostIp": "", "HostPort": "80" } ], "8001/tcp": [ { "HostIp": "", "HostPort": "8001" } ], "8002/tcp": [ { "HostIp": "", "HostPort": "8002" } ] }config.v2.json文件,找到ports,再以下添加端口:
"Ports": { "80/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "80" }, { "HostIp": "::", "HostPort": "80" } ], "8001/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "8001" }, { "HostIp": "::", "HostPort": "8001" } ], "8002/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "8002" }, { "HostIp": "::", "HostPort": "8002" } ] } -
重新启动docker,重新启动容器
在已创建但未挂载配置文件的容器中复制配置文件并进行修改
-
使用docker cp命令将容器中的配置文件复制到本地:
docker cp 容器名称:配置文件在容器内的路径 #示例 docker cp postgres:/var/lib/postgresql/data/pg_hba.conf /home/ -
使用vim或者其他工具修改本地复制的配置文件
-
使用docker cp命令将修改后的配置文件复制回容器:
docker cp /home/pg_hba.conf postgres:/var/lib/postgresql/data/pg_hba.conf -
重启容器