安装
$ yum install -y yum-utils # 安装依赖包
$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 添加yum软件源
$ wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
$ sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
$ yum install docker-ce docker-ce-cli containerd.io # 安装Docker
$ systemctl start docker # 开启,使用systemctl enable docker命令开机自启
$ cat /etc/docker/daemon.json # docker配置文件,默认没有该文件,若有需要手动创建
{
"insecure-registries": ["192.168.254.29:8080"], # 信任的仓库,往harbor传输镜像
}
使用
核心
docker --help # 查看docker命令
docker [command] --help # 查看指定命令可输入的参数
启动容器
docker run -d --name domain_forward nginx:latest # 最简的容器启动命令
docker cp domain_forward:/etc/nginx /usr/local/wlhiot/mount/nginx/conf # 将容器里的/etc/nginx路径复制为宿主机的/usr/local/wlhiot/mount/nginx/conf
docker stop domain_forward # 停止指定名称容器,也使用CONTAINER ID来指定
docker rm domain_forward # 彻底删除指定容器
docker run -d -p 8001:80 --name domain_forward --restart=always -v /usr/local/wlhiot/mount/nginx/conf:/etc/nginx -v /usr/local/wlhiot/mount/nginx/html:/usr/share/nginx/html -v /usr/local/wlhiot/mount/nginx/logs:/var/log/nginx nginx:latest
# -d [后台运行]
# -p [宿主机端口:容器端口](访问宿主机8001端口等于访问容器80端口)
# --name [容器名称](对应使用docker ps命令显示的NAMES)
# --restart=always(容器生命策略,永远重启,不方便排错)
# -v [宿主机挂载路径:容器路径](将容器的指定路径挂载到宿主机上)
# nginx:latest(镜像名,若本地没有则自动从公有仓库下载)
命令行
docker exec -it domain_forward /bin/bash # 对domain_forward容器(Running状态)执行/bin/bash命令(进入容器)
# exec 表示在运行的容器中执行命令
docker exec -it domain_forward pwd # 同理可以查看domain_forward容器的当前工作目录
容器标签
docker tag nginx:latest 192.168.254.29:8080/library/nginx:v1 # 将nginx:latest镜像打为192.168.254.29:8080/library/nginx:v1的标签
# 至于为什么前缀这么复杂可查看harbor相关文档,目的在于将该镜像推送至harbor镜像仓库
查看状态
docker logs -f [container_name] # 查看指定容器的标准输出(日志)
docker stats --no-stream # 查看所有容器的资源使用状态
docker container update [container_name] --memory="2g" --memory-swap="-1"
# 对指定容器的资源使用进行限制,常用于mongodb
# 因为mongodb的特性在于只要有内存就会一直使用,而容器的内存与宿主机一致。如果有多个mongo容器,对容器来说内存使用并没满,对宿主机则不太友好
dockerfile
$ ls -l
total 80352
-rw-r--r-- 1 root root 82273898 2021-12-28 13:50 admin_car-2.2.2.RELEASE.jar
-rw-r--r-- 1 root root 128 2021-11-17 16:22 Dockerfile
$ cat Dockerfile
FROM java:8 # 继承镜像
MAINTAINER bingo
ADD admin_car-2.2.2.RELEASE.jar ebox_svr.jar # 将当前路径下的admin_car-2.2.2.RELEASE.jar包添加至容器的/目录下
EXPOSE 8080 # 开放端口
ENTRYPOINT ["java","-jar","-Duser.timezone=GMT+08","ebox_svr.jar"] # 容器运行命令
$ docker build -t 192.168.254.29:8080/library/ebox:v1 . # 使用当前路径下的Dockerfile文件进行构建