类似于电脑,要在朋友的电脑上跑你写的Java程序,就得检查他电脑有没有安装Java环境.
类似的,要想在别的电脑上跑你写的Python程序,又得检查那台电脑有没有装python.
如何让自己写的程序换到别的电脑上后,可以便捷的运行起来?
将程序和程序的环境打包迁移,是一种解决方案.
虚拟机安装太麻烦,就好比一个完整的操作系统,启动起来很费时间。
服务器版本:CentOS 8.2 64位
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum erase podman buildah
yum install -y docker-ce docker-ce-cli containerd.io --nobest
# 简单信息
docker -v
# 查看docker的版本号,包括客户端、服务端、依赖的Go等
docker version
# 查看系统(docker)层面信息,包括管理的images, containers数等
docker info
# 启动
systemctl start docker
# 开机自启
systemctl enable docker
systemctl stop docker
systemctl restart docker
systemctl status docker
类比win 镜像: 程序安装包 容器: 安装好的程序 (镜像的)仓库: 放安装包的仓库.
Docker执行命令,构建镜像并存储在机器上。
Docker收到命令后,将本地镜像上传到镜像仓库。
生产环境机器收到命令后,Docker会从镜像仓库拉取镜像到机器上,然后基于镜像运行容器。
类比win: 程序的安装包
docker images
docker search 镜像名称
docker pull 镜像名称:版本号
docker rmi 镜像名称:版本号
vim /var/lib/docker/image/overlay2/repositories.json
repositories.json文件中保存了一些基本信息
类比win: 已经安装好的程序
# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a
容器创建后,在容器列表中即可看到该容器(相当于安装好程序) 以后用后文的启、停、删就可以操作该容器了.
# eg: \是换行的意思
docker run -d -p 1337:1337 \
--network kong-net \
--name konga \
-e "NODE_ENV=production" \
-e "DB_ADAPTER=postgres" \
-e "DB_URI=postgresql://kong:kong@172.0.0.1:5432/konga" \
pantsel/konga
linux中-和--的区别?
-后面一般跟简写,大多数是一个字母,如:
ls -l
--后面一般跟长的完整名字,如:
chkconfig --add
run参数
docker exec -it 容器名称 /bin/bash
# eg:进入一个叫konga的容器
docker exec -it konga /bin/bash
# 在容器中执行了一个ping命令
ping 127.0.0.1
# 退出当前容器
exit
docker start 容器名称
docker stop 容器名称
docker rm 容器名称
#删除所有容器
docker rm `docker ps -aq`
docker inspect 容器名称
cd /var/lib/docker/containers
查看所有容器,其中的id:
eb67258c80d1
与上方文件夹对应
docker ps -a
# 显示
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb67258c80d1 mongo "docker-entrypoint.s…" 7 days ago Exited (0) 6 days ago mongo
容器可以比拟做一个独立的系统环境,能配置自己网络,所以说容器里的localhost不一定等于宿主机的localhost
网络模式
Linux查看网络信息
# if没有打错.
# 这里面能看到docker相关的网络.
ifconfig
docker network ls
docker network inspect networkname
# 不指定网络驱动时,默认创建的是bridge网络.
docker network create networkname
docker network rm networkname
docker logs [OPTIONS] CONTAINER
# Options参数
--details: 显示更多的信息
--follow(-f): 跟踪实时日志
--since string: 显示自某个timestamp之后的日志,或相对时间,如40m(即40分钟)
--tail string: 从日志末尾显示多少行日志, 默认是all
--timestamps(-t): 显示时间戳
--until string: 显示自某个timestamp之前的日志,或相对时间,如40m(即40分钟
示例
# 查看容器mysql 最近30分钟的日志:
docker logs --since 30m mysql
# 查看容器mysql 某时间之后的日志:
docker logs -t --since="2019-11-02T13:23:37" mysql
#查看容器mysql 某时间段日志:
docker logs -t --since="2019-11-02T13:23:37" --until "2019-11-03T12:23:37" mysql
vim /etc/docker/daemon.json
# 镜像信息
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"live-restore": true
}
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。