Docker_常用操作


目录:

安装

$ 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文件进行构建