docker 常用命令

技术知识 2021-12-14 12:07:19 阅读 796 次
### 一、docker启动 - Ubuntu Docker ```sh >> su root #切换到root用户 >> systemctl enable docker #设置开机自动启用docker服务 >> systemctl start docker #启动docker 服务 ``` - CentOS Docker ```sh $ sudo systemctl enable docker #设置开机自动启用docker服务 $ sudo systemctl start docker #启动docker 服务 ``` ### 二、关闭docker - Ubuntu Docker ```sh >> systemctl stop docker #关闭docker 服务 ``` - CentOS Docker ```sh $ sudo systemctl stop docker #关闭docker 服务 ``` ### 三、重启docker - Ubuntu Docker ```sh >> systemctl restart docker #重启docker 服务 ``` - CentOS Docker ```sh $ sudo systemctl restart docker #重启docker 服务 ``` ### 四、卸载 docker - Ubuntu Docker ```sh >> sudo apt-get purge docker-ce # 删除安装包 >> sudo rm -rf /var/lib/docker # 删除镜像、容器、配置文件等内容 ``` - CentOS Docker ```sh $ yum remove docker-ce # 删除安装包 $ rm -rf /var/lib/docker # 删除镜像、容器、配置文件等内容 ``` ### 五、镜像加速 > Docker 官方和国内很多云服务商都提供了国内加速器服务,例如: > - 科大镜像:https://docker.mirrors.ustc.edu.cn/ > - 网易:https://hub-mirror.c.163.com/ > - 阿里云:https://<你的ID>.mirror.aliyuncs.com > - 七牛云加速器:https://reg-mirror.qiniu.com - Ubuntu14.04、Debian7Wheezy 对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址: ```sh DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com" ``` 重新启动服务: ```sh $ sudo service docker restart ``` - Ubuntu16.04+、Debian8+、CentOS7 对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件): ```sh {"registry-mirrors":["https://reg-mirror.qiniu.com/"]} ``` 之后重新启动服务: ```sh $ sudo systemctl daemon-reload $ sudo systemctl restart docker ``` ### 六、镜像使用 - 列出镜像列表 ```sh $ docker images ``` - 获取一个新的镜像 ```sh $ docker pull 仓库源:标签 ``` - 查找镜像 ```sh $ docker search 仓库源 ``` - 删除镜像 ```sh $ docker rmi 仓库源:标签 ``` ### 七、容器使用 - 1、获取镜像 ```sh $ docker pull nginx ``` - 2、启动容器 ```sh $ docker run -itd --name nginx-test nginx /bin/bash ``` > - -i: 交互式操作。 > - -t: 终端。 > - -d: 后台运行 > - --name nginx-test:容器名称。 > - nginx: nginx 镜像 > - /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。(要退出终端,直接输入 exit) - 3、提交容器副本为镜像: ```sh $ docker commit -m="new conent" -a="lqs" e218edb10161 lqs/nginx-test:v1 # -m: 提交的描述信息 # -a: 指定镜像作者 # e218edb10161:容器 ID # lqs/nginx-test:v1: 指定要创建的目标镜像名 ``` - 4、查看所有的容器 ```sh $ docker ps -a ``` - 5、停止一个容器 ```sh $ docker stop <容器 ID> ``` - 6、启动已停止运行的容器 ```sh $ docker start <容器 ID> $ docker restart <容器 ID> ``` - 7、进入容器 - docker attach # 退出容器会停止 - docker exec # 推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。 ```sh $ docker exec -it nginx-test /bin/bash ``` - 8、导出容器 ```sh $ docker export nginx-test > nginx.tar ``` - 9、导入容器快照 > 可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 nginx.tar 导入到镜像 test/nginx:v1: ```sh $ cat docker/nginxtar | docker import - test/nginx:v1 ``` - 10、删除容器 ```sh $ docker rm -f <容器 ID> ``` ### 八、容器的端口映射 - 1、查看容器端口的映射情况 ```sh $ docker port <容器 ID | 容器名称> ``` - 2、容器启动时可以指定通信协议,比如tcp、udp ```sh $ docker run -ti -d --name nginx-test -p 8080:80/tcp docker.io/nginx $ docker run -ti -d --name nginx-test -p 192.168.10.214:8081:80/udp docker.io/nginx ``` - 3、容器启动绑定多IP和端口(跟多个-p) ```sh $ docker run -ti -d --name nginx-test -p 192.168.10.214:7777:80 -p 127.0.0.1:7788:80 docker.io/nginx ``` - 4、通过宿主机的iptables进行nat转发,将宿主机的端口映射到容器的内部端口上 > 这种方式适用于容器启动时没有指定端口映射的情况! ```sh # 首先获得容器的ip地址 [root@docker-test ~]$ docker inspect my-nginx9|grep IPAddress # "SecondaryIPAddresses": null, # "IPAddress": "172.17.0.9", [root@docker-test ~]$ ping 172.17.0.9 [root@docker-test ~]$ telnet 172.17.0.9 80 # 将容器的80端口映射到docker主机的8080端口 [root@docker-test ~]$ iptables -t nat -A DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.9:80 ``` - 5、提交一个运行中的容器为镜像,运行镜像并添加端口 ```sh $ docker commit -m="描述信息" -a="镜像作者" <容器 ID> <创建的目标镜像名> $ docker run -itd -p 8000:80 <新的镜像> /bin/bash ```
您可能感兴趣的
一、安装 Git,二、服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码,三、服务器端创建 Git 仓库,四、客户端 clone 远程仓库,五、客户端创建 SSH 公钥和私钥,六、服务器端 Git 打开 RSA 认证,七、将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件
国内使用 yarn 速度很慢,默认是去 npm/yarn 官方镜像源获取需要安装的具体软件信息,你可以重新修改镜像源。与npm命令比较
linux下修改文件/文件目录权限、拥有者及用户组
在实际操作中,我们有时会重启服务器,比如阿里云ECS,但是重启后发现ssh无法连接,80端口网站也无法访问,以下说下解决方案。
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
如果使用 yarn 速度很慢,你可以设置淘宝镜像
vs code中报错:yarn : 无法加载文件 node\yarn.ps1;npm : 无法加载文件node\npm.ps1,因为在此系统中禁止执行脚本,解决方法
Git报错解决:OpenSSL SSL_read: Connection was reset, errno 10054 错误解决
多人协同开发中,经常会遇到这种情况:A在A分支本地开发完成后,将代码推送到远程dev分支,这时候B的B分支本地代码的版本就低于远程代码dev的版本,这时候B该如何从远程dev拉取最新的代码,并与自己的本地代码合并呢?
浏览器中接口set-cookie未加SameSite=None导致cookie设置失效,无法登录,解决方案
Top