Docker命令操作

使用docker命令需要管理员权限,如果希望每次输入docker相关命令时,不用sudo,可通过以下命令进行设置

sudo usermod -a -G docker $USER
sudo service docker restart
newgrp - docker

官方提供的ubuntu系统镜像,工具命令很少,如希望内部安装ping、ifconfig网卡或者vim等工具,可以通过以下命令进行设置[需要联网,而且耗时]

apt-get update
apt install net-tools        # ifconfig
apt install iputils-ping     # ping

镜像操作

# 搜索镜像
docker search 镜像名
# 拉取镜像
docker pull 镜像名
# 查看所有镜像
docker image ls || docker images || docker images ls --all
# 运行镜像创建为容器<"这里的内容为可选参数">
docker run -itd <-p,-v...> <--name=别名>镜像名字<:版本>
# 删除镜像(需要镜像没有成为容器在运行)
docker image rm 镜像名  || docker rmi 镜像名<id> || docker rmi -f 镜像名<id>  # -f 强制删除加显示信息

# 批量操作删除镜像
docker rmi `docker image ps -aq `
# 导入镜像
docker load -i 路径文件名.tar <镜像名> ||  docker load < 路径文件名.tar.gz
# 保存镜像<打包>
docker save -o 文件名.tar <镜像名>    || docker save 镜像名 > 路径文件名.tar.gz
# 提交自己定义的镜像
docker commit 镜像id 镜像名

参数

exec        # 进入容器的参数
-i          # 交互式的操作容器
-t          # 开启一个terminel终端,用于和linux交互
-d         # 后台运行容器
/bin/sh    # 指定使用centos的bash解释器
bash      # 进入容器命令窗口,配合-it使用
-c         # 运行一段shell命令

docker search  hello-docker     # 搜索docker镜像 ,就是去 docker hub搜索 hello-docker而已
docker pull hello-world         # 下载公网的,docker镜像
docker image ls                # 查看本地的镜像有哪些
docker images                  # 这两条命令一样的,docker进行了很多的命令升级,不用慌
docker run hello-world         # 运行一个docker镜像,产生一个容器实例
docker container  ls           # 列出所有正在运行的容器
docker ps  -a              # 列出所有曾经运行过的容器记录,以及正在运行的容器记录
docker pull  centos             # 下载cnetos镜像

容器操作

必须要有镜像

# 运行镜像后台创建为容器<"这里的内容为可选参数">-p主机端口:指定端口,-v主机路径:指定路径
docker run -itd <-p,-v...> <--name=别名>镜像名字<:版本>
# 单纯的创建容器           || 创建容器并输出hehe
docker run hello-world   || docker run --name namecentos -it centos /bin/echo "hehe"
# 查看容器
docker container ls || docker ps -a
# 启动容器
docker container start 容器名或id
# 停止容器
docker container stop 容器名或id
# 强制停止容器
docker container kill 容器名或id
# 批量操作容器
docker stop/start/rm `docker ps -aq`
# 进入容器
docker container exec -it 容器名或id  bash  || docker exec -it 容器id bash
# 删除容器
docker container rm 容器名或id
# 把容器保存成镜像
docker commit <容器名或id> <新镜像名>
# 查看容器日志
docker logs 容器id
# 查看容器端口映射本地
docker port 容器id
# 查看容器内的进程
docker top 容器id

删除过程(停止容器->删除容器->删除镜像)

docker container stop <容器名称/容器ID>
docker container rm  <容器名称/容器ID>
docker image rm <容器名称/容器ID>

重新拷贝一个镜像加修改名称

docker tag 镜像名:版本 10.0.3.33:5000/新镜像名:版本
docker tag hello-world:latest 10.0.3.33:5000/hello-world:latest

仓库操作

docker提供了一个类似于github的仓库dockerhub,
网址https://hub.docker.com/

在linux登录docker仓库

docker login
# 提示输入账户和密码

注意要保证image的tag是账户名,如果镜像名字不对,需要改一下tag

改镜像名

# 语法是:  docker tag 镜像名 账户名/新镜像名
docker tag nginx wsh885/newnginx1.0

推送docker image到dockerhub

推送镜像到仓库

docker push wsh885/newnginx1.0:latest(版本)

下载仓库中的镜像

docker pull wsh885/newginx1.0

搭建内部使用的私有仓库

官方提供的私有仓库docker registry用法

https://yeasy.gitbooks.io/docker_practice/repository/registry.html

1.下载registry镜像并且启动私有仓库容器

docker pull registry

私有仓库会被创建在容器的/var/lib/registry下,因此通过-v参数将镜像文件存储到本地的/opt/data/registry
端口映射容器中的5000端口到宿主机的5000端口(不用-it加了也进不了容器里面)

docker run -d -p 5000:5000 -v /opt/docker/registry:/var/lib/registry registry

2.检查启动的registry容器

docker ps -a 

http://10.0.3.33:5000

3.修改镜像tag,以docker_registry的地址端口开头

注意:需要这样格式的镜像名,不然上传不了

docker tag 镜像名:版本 10.0.3.33:5000/新镜像名:版本
docker tag redis:latest 10.0.3.33:5000/newredis:latest
docker images

4.Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,这里必须写正确json数据

vim /etc/docker/daemon.json
// 添加一行配置("insecure-registries":["10.0.3.33:5000"]):
{   // 这条是容器加速器
  "registry-mirrors": ["http://95822026.m.daocloud.io"],
  "insecure-registries":["10.0.3.33:5000"]
}

5.将daemon.json配置文件写入到docker服务中,写入到[Service]配置块中,加载此配置文件

vim /lib/systemd/system/docker.service

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
# 加这一条
EnvironmentFile=-/etc/docker/daemon.json
TimeoutSec=0
RestartSec=2
Restart=always

6.修改了docker配置文件之后,重新加载docker

systemctl daemon-reload

7.重启docker服务

systemctl restart docker  # 注意,重启docker服务,所有的容器都会挂掉

8.重启了dockerr容器

# 启动registry服务
docker ps -a
docker start 容器id
docker start `docker ps -aq` # 批量启动

9.上传镜像到私有仓库

docker ps -a
docker push 10.0.3.33:5000/newredis
# 再创建一个
docker tag mysql:latest 10.0.3.33:5000/newmysql:latest
# 再上传
docker push 10.0.3.33:5000/newmysql

10.使用以下链接访问仓库, 可以查看到我们上传的镜像

http://10.0.3.33:5000/v2/_catalog
# 可以到目录里面去看
cd /opt/docker/registry/docker/registry/v2/repositories/

11.当我们上传到私有仓库完成之后,相当于已经备份过了这个镜像, 那我们就可以删除本地的这个镜像,如果要使用的话,就直接从私有仓库下载下来使用

# 删除
docker rmi 容器名字
docker rmi 10.0.3.33:5000/newredis
# 下载
docker pull 10.0.3.33:5000/newredis

自定义docker容器(dockerfile)

1.创建下载文件

/opt下建立了docker目录,创建文件和下载一个django-2.1.7的源码包

touch Dockerfilerun.sh 其中run.sh是用来执行Djanog的bash脚本,Dockerfile即为自动build python的文件,此处建立容器的核心也是Dockerfile

下载阿里云扩展源epel.repo文件

# 在/opt/docker/目录中下载
wget https://media.djangoproject.com/releases/2.1/Django-2.1.7.tar.gz
wget -O epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2.编写Dockerfile文件

FROM centos
MAINTAINER TigerLee

ADD epel.repo /etc/yum.repos.d  # 将当前目录的epel.repo文件拷贝到容器的/etc/yum.repos.d目录下
RUN yum update -y               # 运行命令

RUN yum install -y python36
RUN yum install -y python36-pip
RUN pip3 install setuptools
ADD Django-2.1.7.tar.gz /opt/

WORKDIR /opt/                   # 进入/opt目录
RUN mv Django-2.1.7 django      # 运行命令mv

WORKDIR /opt/django             # 进入/opt/django目录
RUN python3 setup.py install

WORKDIR /opt
RUN django-admin.py startproject qishidj

ADD run.sh /opt/qishidj/run.sh
RUN sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = \['\*'\]/g" /opt/qishidj/qishidj/settings.py   # 替换django的配置文件,允许任何主机都可以访问
WORKDIR /opt/qishidj
RUN chmod 777 run.sh
EXPOSE 8000                        # 声明容器端口
CMD ["/bin/sh","run.sh"]           # 容器启动时默认执行的命令

3.编写run.sh

python3 manage.py runserver 0.0.0.0:8000

4.构建docker镜像

sudo docker build -t django_file-217 .    # 注意,有一个点,表示在当前页
# 构建完成后,查看镜像,有当前创建的django_file-217镜像文件
docker images

5.启动创建启动容器

docker run -itd -p 9090:8000 django_file-217

6.查看

docker ps -a                        # 查看容器状态,运作中则可以进入容器
docker exec -it 容器id bash         # 使用交互式模式进入容器,再使用ps -ef查看运行的进程
ps -ef                             # 有运行状态则表示成功
# 外部通过访问ip:9090 即可访问django启动画面了
# 查看docker的log日志
docker logs -f container_id(容器id) # -f为持续显示

7.导出镜像

# 如果想容器保存为镜像用此命令 ---> docker commit <容器名或id> <新镜像名>
# 本身已经有镜像了,直接导出 # -o 参数  指定地址和文件名   镜像名
docker save -o mydjango.tar.gz django_file-217  # 这样就有一个解压包了

8.推送到仓库

# 推送到线上自己的仓库
docker login        # 登录
docker tag django_file-217 wsh885/mydjango_217
docker push wsh885/mydjango_217

docker 镜像加速器

加速器镜像站:https://www.daocloud.io/mirror#accelerator-doc
资料:https://www.cnblogs.com/pyyu/p/6925606.html

# 一条命令加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

# 这条命令其实就是改了docker的一个配置文件里面的注册镜像地址, 可以查看一下
cat /etc/docker/daemon.json
### 添加 ###

多端口多路径映射

查看docker port 容器id

docker run -itd --name=88luffy -p 80:80 -v /home/ubuntu/luffyo/luffyclient/dist/:/usr/share/nginx/html -p 8080:80 -v /home/ubuntu/luffyo/luffyserver/luffyserver/static/:/usr/share/nginx/static nginx

原文地址:https://www.cnblogs.com/wshlym/p/11329913.html

时间: 2024-08-30 04:31:19

Docker命令操作的相关文章

(三) Docker 常用操作与CentOS7 防火墙命令

参考并感谢 Docker 常用命令 https://docs.docker.com/engine/reference/commandline/docker/ Docker 登录docker账户 docker login -u 用户名 -p 密码 根据本地待上传镜像 修改新镜像,新镜像名称需要与hub中的repository保持一致 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] 查看所有镜像 docker images 查看特定镜像 docker

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被

Docker 之 Docker基础操作

第1章 Docker基础操作 1.1 常用的命令 0) 安装Docker 环境 yum -y install docker 1)   指定 IP,DNS 网络位启动Docker容器 a)  docker -bip 192.168.6.233/28-dns 8.8.8.8 -g /data/docker/  -d 2)   在线pull image 镜像到本地 a)     Docker pull centos 3)   启动容器 a)     Docker run –i –t centos/bi

Docker 命令行和后台参数

Docker官方为了让用户快速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的使用方法. Docker 命令行 下面对Docker的命令清单进行简单的介绍,详细内容在后续章节详细介绍.可以通过运行 docker ,或者 docker help 命令得到命令行的帮助信息(我们还是以 vmware 上的 coreos 为操作环境,如无特殊说明后文都采用这个环境): [email protected] ~ $ docker Usage: docker [OPTIONS] C

Docker 命令行和后台參数

Docker官方为了让用户高速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的用法. Docker 命令行 以下对Docker的命令清单进行简单的介绍,具体内容在兴许章节具体介绍. 能够通过执行 docker ,或者 docker help 命令得到命令行的帮助信息(我们还是以 vmware 上的 coreos 为操作环境,如无特殊说明后文都採用这个环境): [email protected] ~ $ docker Usage: docker [OPTIONS] CO

docker命令不需要敲sudo的方法

由于docker daemon需要绑定到主机的Unix socket而不是普通的TCP端口,而Unix socket的属主为root用户,所以其他用户只有在命令前添加sudo选项才能执行相关操作. 如果不想每次使用docker命令的时候还要额外的敲一下sudo,可以按照下面的方法配置一下. 创建一个docker组 $ sudo groupadd docker 添加当前用户到docker组 $ sudo usermod -aG docker $USER 登出,重新登录shell 验证docker命

容器技术Docker 容器操作大总结

Docker实战之容器操作: 新建容器: docker create创建的容器处于停止状态,可以使用docker start命令启动Docker容器. 使用docker run命令,可以创建一个运行中的容器. create命令与容器运行模式相关的选项: -a,--attach=[]                                      是否绑定到标准输出.输入和错误 -a,--detach=true|false                              是否在

Docker学习笔记(2)-docker镜像操作

本节将会涉及Docker的镜像操作. 1. 获取镜像 如何获取Docker Hub上的镜像?可通过docker pull命令获取,其格式为: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签],具体可通过docker pull --help命令查看. Docker镜像仓库地址的格式一般为<域名/IP>[:端口号],仓库名一般为两段式名称,即<用户名>/<软件名>,对于Docker Hub,默认的用户名为library

Docker 镜像操作

概念 image 镜像: 层叠的只读文件系统,比如有Linux针对于docker而创建的最小的镜像,和其他共享的镜像.简言之就是系统镜像文件.利用面向对象的思想,可以认为image就是一个类,而容器就该类的一个实例. Docker镜像的层次如下: 最底端是一个引导文件系统,即bootfs,这很像典型的Linux/Unix的引导文 件系统.Dockei?用户几乎永远不会和引导文件系统有什么交互.实际上,当一个容器启动 后,它将会被移到内存中,而引导文件系统则会被卸载(unmount),以留出更多的