安装
CentOs7安装docker】
[查看系统版本] cat /etc/redhat-release
[安装docker失败后使用此命令] yum install libdevmapper* -y
[安装docker] yum install docker
[查看docker安装是否成功] docker -v
[配置下载源]vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
【ubuntu14.04安装docker】
sudo apt-get install docker.io [安装]
sudo service docker restart
sudo service docker start
创建软连接
ln -sf /usr/bin/docker.io /usr/local/bin/docker
【window下安装docker】
http://get.daocloud.io/(DockerToolbox)
教程:https://www.jianshu.com/p/3e1297879a16
1.启动,运行Kitematic (Alpha)
2.打开终端Docker Quickstart Terminal
3.创建“default”虚拟机:docker-machine create --driver virtualbox default
4.显示搭建”default”虚拟机的需要的指令:docker-machine env default
5.连接至”default”虚拟机:eval "$(docker-machine env default)"
6.验证是否成功:docker run hello-world
基本命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 | #添加docker用户组 sudo groupadd docker [su - root ;groupadd docker] #将test用户添加到用户组 sudo gpasswd - a test docker #切换当前会话到新 group newgrp - docker #Docker系统信息 docker info #重新启动docker service docker restart #启动docker service docker start #停止docker service docker stop #开机启动 systemctl enable docker.service 开机启动 #chkconfig docker on #查看docker运行情况 ps - ef|grep docker #查看docker版本 docker version #查看正在运行容器 docker ps #查看最新容器 docker ps - l #查看所有容器 docker ps - a #查看容器端口映射 docker port 容器名 #启动python容器 docker - it run - - name py3 python3:v1 python #启动容器 docker run learn / tutorial echo 'start' #启动nginx docker run - - name ng - d - p 8000 : 80 docker.io / nginx #自定义容器名 docker run - it - - name = ubu1 ubuntu:v3 / bin / bash - - name 自定义容器名 - i - - interactive = ture|false 默认是false [始终打开标准输入] - t - - tty = true|false 默认false [分配伪ttp终端] #启动后使用Ctrl+P Ctrl+Q以守护形式运行容器 docker run - i - t ubuntu bin / bash #附加到运行中的容器 docker attach 容器 id 或容器名 #停止守护式容器 docker stop 容器名 #停止守护式容器 docker kill 容器名 #后台运行容器 docker run - - name dc1 - d ubuntu / bin / sh - c "while true;do echo hello world;sleep 1;done" - d 以后台的形式运行 #在运行容器内启动新进程 docker exec - it py_poc / bin / sh #查看运行容器中运行的进程 docker top dc1 #查看容器详细信息 docker inspect 容器 id 或容器名 #查看容器内部运行情况 docker logs [ - f] [ - t] [ - - tail] 容器名 - t 显示日志时间 - f 查看日志更新状态 - - tail 10 显示最后 10 条 #重新启动停止的容器 docker start [ - i] 容器 id 或容器名 #删除停止的容器 docker rm 容器名 #删除正在运行的容器 docker rm - f 容器名 #安装ping命令 docker run learn / tutorial apt - get install - y ping #连接多个容器 docker run - it - p 8888 : 8080 - - name perlv3 - - link mysqlv3:mysql - - link oraclev3:oracle - d - v / home / share / RUNNING / : / home / share / RUNNING 10.1 . 101.59 : 5000 / perl:v3 - - link<容器名称>:<别名> #查看镜像的创建历史 docker history 203.75 . 156.57 : 5000 / tornado:v1. 21 #查找镜像 docker search ubuntu #下载镜像 docker pull ubuntu:latest[sudo docker pull <镜像名称>:<标签> latest为最新版本] #查看镜像 docker images #给镜像打标签 docker tag ubuntu: 15.10 runoob / ubuntu:v3 #删除镜像 docker rmi 镜像名或 id #docker镜像的导入和导出 docker save - o gitlab.tar.gz sameersbn / gitlab docker load < gitlab.tar.gz #提交镜像到仓库 docker push learn/ping docker - H tcp: / / 192.267 . 156.56 : 38794 run - e constraint:node = = 204 - 89 - 16 - 89.HINET - IP.hinet.net 客户端通过指定IP和端口访问服务端 docker - H IP:PORT docker run [OPTIONS] IMAGE [COMMAND] [ARG...] - d, - - detach = false 指定容器运行于前台还是后台,默认为false - i, - - interactive = false 打开STDIN,用于控制台交互 - t, - - tty = false 分配tty设备,该可以支持终端登录,默认为false - u, - - user = "" 指定容器的用户 - a, - - attach = [] 登录容器(必须是以docker run - d启动的容器) - w, - - workdir = "" 指定容器的工作目录 - c, - - cpu - shares = 0 设置容器CPU权重,在CPU共享场景使用 - e, - - env = [] 指定环境变量,容器中可以使用该环境变量 - m, - - memory = "" 指定容器的内存上限 - P, - - publish - all = false 指定容器暴露的端口 - p, - - publish = [] 指定容器暴露的端口 - h, - - hostname = "" 指定容器的主机名 - v, - - volume = [] 给容器挂载存储卷,挂载到容器的某个目录 - - volumes - from = [] 给容器挂载其他容器上的卷,挂载到容器的某个目录 - - cap - add = [] 添加权限,权限清单详见:http: / / linux.die.net / man / 7 / capabilities - - cap - drop = [] 删除权限,权限清单详见:http: / / linux.die.net / man / 7 / capabilities - - cidfile = "" 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法 - - cpuset = "" 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU - - device = [] 添加主机设备给容器,相当于设备直通 - - dns = [] 指定容器的dns服务器 - - dns - search = [] 指定容器的dns搜索域名,写入到容器的 / etc / resolv.conf文件 - - entrypoint = "" 覆盖image的入口点 - - env - file = [] 指定环境变量文件,文件格式为每行一个环境变量 - - expose = [] 指定容器暴露的端口,即修改镜像的暴露端口 - - link = [] 指定容器间的关联,使用其他容器的IP、env等信息 - - lxc - conf = [] 指定容器的配置文件,只有在指定 - - exec - driver = lxc时使用 - - name = "" 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字 - - net = "bridge" 容器网络设置: bridge 使用docker daemon指定的网桥 host / / 容器使用主机的网络 container:NAME_or_ID > / / 使用其他容器的网路,共享IP和PORT等网络资源 none 容器使用自己的网络(类似 - - net = bridge),但是不进行配置 - - privileged = false 指定容器是否为特权容器,特权容器拥有所有的capabilities - - restart = "no" 指定容器停止后的重启策略: no:容器退出时不重启 on - failure:容器故障退出(返回值非零)时重启 always:容器退出时总是重启 - - rm = false 指定容器停止后自动删除容器(不支持以docker run - d启动的容器) - - sig - proxy = true 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理 【mysql】 #docker pull mysql:5.6 #docker run -p 3306:3306 --name mymysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 #docker run -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 #docker exec -it mymysql /bin/bash # mysql -u root -p - p 3306 : 3306 :将容器的 3306 端口映射到主机的 3306 端口 - v $PWD / conf / my.cnf: / etc / mysql / my.cnf:将主机当前目录下的conf / my.cnf挂载到容器的 / etc / mysql / my.cnf - v $PWD / logs: / logs:将主机当前目录下的logs目录挂载到容器的 / logs - v $PWD / data: / mysql_data:将主机当前目录下的data目录挂载到容器的 / mysql_data - e MYSQL_ROOT_PASSWORD = 123456 :初始化root用户的密码 【redis】 #docker run -p 6379:6379 -v $PWD/data:/data -d redis:3.2 redis-server --appendonly yes #docker exec -it 43f7a65ec7f8 redis-cli - p 6379 : 6379 : 将容器的 6379 端口映射到主机的 6379 端口 - v $PWD / data: / data : 将主机中当前目录下的data挂载到容器的 / data redis - server - - appendonly yes : 在容器执行redis - server启动命令,并打开redis持久化配置 【python】 Dockerfile FROM frolvlad / alpine - python3 RUN pip install tornado RUN pip install pymysql RUN pip install requests RUN pip install bs4 WORKDIR / home / AF EXPOSE 8080 ENTRYPOINT [ 'python' ] CMD [ "/home/AF/app.py" ] #docker build -t "tornado" --no-cache . #docker run -v /root/.jenkins/workspace/tornado/:/home/AF/ --name=tornado -p 8080:8080 -d tornado python /home/AF/app.py 【python - tensorflow】 #docker search python3+tensorflow #docker pull feisan/alpine-python3-tensorflow #vi Dockerfile FROM feisan / alpine - python3 - tensorflow MAINTAINER "liboye@youbesttech.com" LABEL version = "1.0.0" type = "tensorflow" ENV REFRESH_DATE 2018 - 04 - 12 ENV TZ "Asia/Shanghai" ENV PYTHONPATH / home / tf #物体检测 ENV PYTHONPATH / home / tf / slim:$PYTHONPATH #物体检测 RUN pip install slim #物体检测 RUN pip install numpy RUN pip install matplotlib WORKDIR / home / tf EXPOSE 6006 #docker build -t "python3_tensorflow" --no-cache . #docker run -v /home/batch/share/project/tf:/home/tf --name=tf python3_tensorflow python /home/tf/tf001.py #docker run -v /home/batch/share/project/tf:/home/tf --name=tfboard -p 6006:6006 -d #python3_tensorflow tensorboard --logdir=/home/tf/logs #docker tag python3_tensorflow 203.75.156.57:5000/python3_tensorflow:v1 #docker push 203.75.156.57:5000/python3_tensorflow:v1 #docker build -t tf_objection . [物体检测] #docker run -it -v /root/.jenkins/workspace/python_tensorflow:/home/tf --name tf_obj_detect tf_objection python /home/tf/object_detection_api.py [物体检测] 【 Portainer】 参考:https: / / blog.csdn.net / fundebug / article / details / 70213275 它提供了图形化界面用于管理Docker主机和Swarm集群。如果使用Portainer管理本地 Docker主机的话,需要绑定 / var / run / docker.sock: docker run - d - p 9000 : 9000 - v / var / run / docker.sock: / var / run / docker.sock portainer / portainer 【端口映射】 [ - P随机映射端口号] docker run - P - d - - name mynginx1 nginx [指定端口映射(宿主机端口:容器端口)] docker run - d - p 9000 : 80 - - name mynginx2 nginx 【通过Dockerfile构建镜像】 #mkdir -P dockerfile/df_test [创建目录] #cd dockerfile/df_test #vim Dockerfile #Dockerfile注释 FROM ubuntu: 14.04 MAINTAINER dormancypress "boye@outlook.com" LABEL version = "1.0.0" type = "Autoplate" ENV REFRESH_DATE 2017 - 12 - 16 ENV UPD_DATE 2017 - 12 - 01 ENV TZ "Asia/Shanghai" COPY index.htm / index.html RUN apt - get update RUN apt - get install - y nginx #RUN apt-get update && apt-get install -y nginx ENV PATH / usr / local / nginx / sbin:$PATH ONBULID COPY index.html / usr / share / nginx / html / EXPOSE 80 #指定运行该镜像的容器使用的端口 #docker build -t='dockerfile/df_test' --no-cache . [构建镜像,指定生成镜像名及路径,--no-cache:不使用缓存] #docker run -p --name test -d dockerfile/df_test [运行镜像] #docker history dockerfile/df_test [查看镜像的构建过程] [Dockerfile指令] FROM <images>:<tag> [基础镜像,必须是第一条非注释指令] MAINTAINER <name> [指定镜像的作者信息,包含镜像的所有者和联系信息] RUN [ "executable" , "param1" , "param2" ]( exec 模式) [在容器构建过程中执行命令] command param1 param2 (shell模式) CMD [ "executable" , "param1" , "param2" ]( exec 模式)[指定容器运行时的默认命令,会被docker启动命令覆盖] command param1 param2 (shell模式) ENTRYPOINT (也有两种模式)[与CMD类似,docker启动时需要使用 - - entrypoint选项 该命令才被覆盖] COPY <src(相对路径)> <dest(绝对路径)>[将文件复制到Dockerfile构建的镜像中] ADD <src> <dest> [与COPY类似,ADD包含类似tar的解压功能] VOLUMN[ "/data" ] [向基于镜像创建的容器添加卷] WORKDIR / path / to / workdir(绝对路径) [在容器内部创建工作目录] ENV <key> <value> [创建环境变量] USER daemon [指定镜像运行的身份] ONBULID [INSTRUCTION] [镜像触发器,当一个镜像被其它镜像作为基础镜像时 执行会在构建过程中插入指令] 【使用现有容器生成新的镜像】 docker commit - a "boye" - m "20180403" ng nginx:v1 docker commit <选项><容器名称, ID ><注册名称> <镜像名称>:<标签> - a:设置镜像创建者有关信息 - m:日志信息 【私有仓库】 docker pull registry docker run - d - p 5000 : 5000 registry docker tag centos:latest 203.75 . 156.57 : 5000 / centos:v3 docker tag nginx:v1 127.0 . 0.1 : 5000 / nginx:v2 docker push 203.75 . 156.57 : 5000 / centos:v3 docker pull 203.75 . 156.57 : 5000 / centos:v3 [修改配置文件] #vi /lib/systemd/system/docker.service ( 1 ) #ExecStart=/usr/bin/dockerd -H fd:// -s overlay2 --dns 10.xx.xxx.xx --dns 8.8.8.8 --insecure-registry 10.27.168.88:5000 ( 2 ) #ExecStart=/usr/bin/docker -d -H fd:// -H tcp://0.0.0.0 $DOCKER_OPTS 其中 - - dns 10.xx .xxx.xx是公司内网的dns服务器 #systemctl daemon-reload #systemctl restart docker 【Docker容器与外部网络连接】 ps - ef | grep docker[查看docker是否运行] sysctl net.ipv4.conf. all .forwarding [查看ip forward默认值为 - - ip - forward = true] sudo iptables - t filter - L - n [查看 filter 表] sudo iptables - I DOCKER - s 10.211 . 55.3 - d 172.17 . 0.7 - p TCP - - dport 80 - j DROP [禁止指定ip访问指定容器] 【数据卷】 docker run - it - v ~ / datavolume: / data ubuntu / bin / bash [创建数据卷datavolume为宿主机目录,data 容器下目录] docker run - it - v ~ / datavolume: / data:ro - - name do1 ubuntu / bin / bash [设置容器访问权限] docker run - it - v / home / boye / test: / data - - name cs - - privileged = true ubuntu / bin / bash 【数据卷容器】 docker run - it - - name dvt5 - - volumes - from dvt4 ubuntu / bin / bash 【数据备份】 docker run - - volumes - from dvt5 - v ~ / backup: / backup:wr - - name dvt10 ubuntu tar cvf / backup / dvt5.tar / datavolume1[将dvt5容器的backup目录备份本地backup目录] 【问题】 1.docker 启动失败:Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details 解决: 1 ) #vi /lib/systemd/system/docker.service 将 ExecStart = / usr / bin / dockerd - H fd: / / 改成 ExecStart = / usr / bin / dockerd - H fd: / / - s overlay2 #systemctl daemon-reload #systemctl restart docker 2 ) #rm -rf /var/lib/docker #service docker start Error response from daemon: v1 ping attempt failed with error: Get https: / / 192.168 . 227.129 : 5000 / v1 / _ping https: / / www.tianmaying.com / tutorial / docker - registry 2.docker 上传到镜像仓库时错误提示 Get https: / / 10.100 . 50.120 : 5000 / v1 / _ping: http: server gave HTTP response to HTTPS client 解决方案: 修改 / etc / default / docker 或 / etc / sysconfig / docker文件,并重新启动docker服务 ADD_REGISTRY = '--add-registry 192.168.227.130:5000' DOCKER_OPTS = "--insecure-registry 192.168.227.130:5000" INSECURE_REGISTRY = '--insecure-registry 192.168.227.130:5000' #sudo service docker restart 重启docker |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统