Docker学习笔记

本文作者:陈进坚
个人博客:https://jian1098.github.io
CSDN博客:https://blog.csdn.net/c_jian
简书:https://www.jianshu.com/u/8ba9ac5706b6
联系方式:jian1098@qq.com

注意事项

  • docker只能运行Linux系统

基本组成

  • 客户端Client
  • 守护进程Daemon
  • 镜像Image
  • 容器Container
  • 仓库Registry

安装环境

  • Docker维护版本(推荐)
curl -sSl https://get.docker.com/|sudo sh
  • Ubuntu维护版本
sudo apt-get install docker.io
source /etc/bash_completion.d/docker.io

查看版本

sudo docker.io version

查看docker配置信息

docker info

配置文件

/etc/default/docker

重启docker

systemctl restart docker

启动容器

单次启动容器
docker run 镜像名 命令 参数

例:

sudo docker run ubuntu echo 'Hello world'

Ctrl+C退出容器
为了方便非root用户运行,可以加入到用户组后运行

sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
交互式容器
docker run --name=container01 -it 镜像名 bash

-i:–interactive=true 默认false,保持交互状态

-t:–tty=true 默认false,提供tty终端

完整的创建容器命令

docker run -it --name=EntWallet -p 8888:8888 --mount type=bind,source=/data/golang/EntWallet,target=/data/golang ubuntu bash

–name:自定义容器名

–mount:挂载共享目录,source:宿主机目录,target:容器目录

-P:映射全端口

-p:映射指定端口,前面是宿主机端口,后面是容器端口,访问宿主机端口就相当于访问容器的绑定端口

-d:后台启动

-v:目录映射,例如host_dir:container_dir对应宿主机和容器目录,绑定后两个目录的数据将同步,容器被删除后宿主机数据不会删除;如果新容器映射这个目录,数据将同步到容器中

守护式容器
  • 方法一:启动交互式容器后顺序按下Ctrl+PCtrl+Q

进入正在运行的容器

docker attach 容器名或ID

或

docker exec -it 容器名 /bin/bash
  • 方法二:直接加-d参数启动
docker run -d 镜像名 命令参数

退出当前容器:exec

停止守护式容器

docker stop 容器名

docker kill 容器名

区别:stop会发出停止信号等待容器停止并返回容器名,kill会直接快速停止容器

查看容器

容器列表
docker ps [-a] [-l]

不加参数:列出正在运行的容器

-a:列出所有容器

-l:列出最新创建的容器

获取容器完整id
docker inspect lnmp|grep Id
通过ID查看容器详情
docker inspect 容器ID或仓库名+tag名
通过容器名查看容器详情

自定义容器名称

docker run --name=container01 -i -t ubuntu /bin/bash

查看详情

docker inspect container01
重新启动已停止的容器
docker start [-i] 容器名

-i :交互命令行

删除已停止的容器
docker rm 容器名或ID

参数:

-f:强制删除正在运行的容器

删除所有容器
docker rm `docker ps -a -q`

查看容器日志

docker logs [-f] [-t] [--tail] 容器名

-f:–follows=true 默认false,跟踪日志并返回结果

-t:–timestamps=true 默认false,返回结果加上时间戳

–tail:=‘all’,显示的条数,默认全部显示

注意:容器重启后ip和端口映射都会发生变化

查看容器内进程

docker top 容器名

在运行中的容器启动新进程

docker exec [-d] [-i] [-t] 容器名 命令 参数

帮助命令

man docker-rum
man docker-logs
man docker-top
......

设置容器的端口映射

docker run -P -i -t ubuntu /bin/bash

-P:–publish-all=true 默认false,映射容器所有端口

-p:指定映射端口;-p 80 :只指定容器端口;-p 8080:80 :指定宿主机和容器端口;-p 0.0.0.0:80:指定容器ip和端口;-p 0.0.0.0:8080:80:同时指定ip、宿主机和容器端口;

给已存在的容器添加端口映射

提交一个运行中的容器为镜像

docker commit containerid foo/live

运行镜像并添加端口

docker run -d -p 8000:80  foo/live /bin/bash

镜像

镜像列表
docker images

-a,–all=false:显示所有镜像,包括没有标签的中间层镜像

-f,–filter=[]

–no-trunc=false:显示完整的镜像ID

-q,–quiet=false

仓库

仓库是一系列镜像的集合

标签

同一个仓库中的镜像用标签来区分,不同标签可能对应同一个镜像ID

删除指定镜像
docker rmi 镜像ID或仓库名+标签
删除所有镜像
docker rmi `docker images -q`
获取和推送
  • 搜索镜像

从官网搜索镜像https://hub.docker.com/

命令行搜索:

docker search
  • 拉取镜像
docker pull 仓库名:标签名
  • 推送镜像
docker push 仓库名

需要登录

构建镜像

保存修改的内容,后面可以使用构造的镜像来运行容器同时使用之前修改的内容

通过容器构造

docker commit 容器名 镜像名

-a,–author="":作者

-m,–message="":镜像信息

-p,–paause=true:是否暂停正在执行的容器

通过Dockerfile构建

docker build -t 镜像名

查看构建过程

docker history

构建好的镜像可以用docker images命令查看

Dockerfile

组成:大写命令+小写参数

# 这是注释		
FROM ubuntu:14.04	# 指定镜像:标签
MAINTAINER dormancypress "123@qq.com"	# 镜像作者信息
RUN apt-get update	# 在容器构建时执行命令
RUN apt-get install -y nginx
EXPOSE 80	# 正定运行该镜像容器使用的端口
CMD		# 在容器运行时执行的命令
ENTRYPOINT	# 与CMD相同 但不会被docker run指令覆盖
ADD	# 复制文件,带有类似tar的解压功能
COPY # 复制文件,单纯复制推荐
COLUME # 
WORKDIR # 指定工作目录
ENV # 设置环境
USER # 指定用户身份执行,默认用root执行
ONBUILD	# 镜像触发器

执行dockerfile

首先进入到Dockerfile所在目录,然后执行命令

docker build -t bitcoinpaygate/regtest-bitcoind:latest .

参数是镜像名:标签名和上下文(.)

创建完成镜像即可打开容器

docker run --name regtest -it bitcoinpaygate/regtest-bitcoind:latest bash

docker守护进程操作

sudo service docker start/stop/restart

运行docker hub上的镜像

下载镜像

docker pull huangguoji/lnmp

如果不指定标签,默认会加上:latest标签

以该镜像运行容器

docker run -it huangguoji/lnmp:latest bash

如果仅运行一次,可以加上--rm,当容器退出会自动删除容器

文件传输

容器和宿主机传输

通过容器id或名字查到容器的长id

docker inspect 549288a2fc7f

然后在宿主机中用docker cpmv命令即可,注意容器id后面的冒号

docker cp 549288a2fc7f74e63de13e37a2aae0db59af6543696fd29530175a1bd757b518:/root/go/main.go /root
docker cp /root/main.go 549288a2fc7f74e63de13e37a2aae0db59af6543696fd29530175a1bd757b518:/root/go
FTP工具

在创建容器的时候需要绑定端口映射

docker run --name containername -p 3000:80 -p 3001:21 -d dockerimagename
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值