Docker操作

1.安装与卸载(推荐使用CentOS7)

docker官网https://docs.docker.com/engine/install/centos/

RPM安装:
安装包下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

​ 后面使用k8s时候,官方认证的是17.03,为了统一版本使用rpm安装方式,两个安装包相对应

docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm 

开始安装之前需要开启防火墙,docker需要进行一定的设置

# 更新yum 
 yum update # 需要时间
# 清空防火墙规则
...
# 查看防火墙规则
firewall-cmd --list-all 
# 创建安装包存放路径
mkdir -p /usr/local/src/InstallPackages/Docker
# 进入到安装包存放路径下
yum -y install *
....
[root@localhost Docker]# systemctl start docker
[root@localhost Docker]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost Docker]#systemctl status docker
# 配置加速器
[root@localhost Docker]# mkdir -p /etc/docker
[root@localhost Docker]# tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://vsk4inl0.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://vsk4inl0.mirror.aliyuncs.com"]
}
[root@localhost Docker]# systemctl daemon-reload
[root@localhost Docker]# systemctl restart docker
[root@localhost Docker]# ps -ef | grep docker
root      76233      1  0 17:25 ?        00:00:00 /usr/bin/dockerd
root      76238  76233  0 17:25 ?        00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root      76334  75931  0 17:26 pts/3    00:00:00 grep --color=auto docker
[root@localhost Docker]#

2.常用命令

2.1 帮助命令

查看版本:docker version
显示 Docker 系统信息,包括镜像和容器数 :docker info
查看帮助:docker --help

2.2镜像命令

1. docker images [选项]

列出本地的镜像模板

​ -a : 列出本地的所有镜像(含中间影响层)

​ -q : 只显示镜像ID

​ --digests : 显示镜像的摘要

​ --no-trunc : 显示完成的镜像信息

2.docker search 镜像名 [选项]

查询指定的仓库镜像 (查询是在github’https://hub.docker.com/ '当查询,下载是在阿里云下载)

​ -automated : 只列出automated build 类型的镜像

​ -s : 列出收藏值不小于指定值的镜像 eg -> docker search -s 20 tomcat

​ --no-trunc : 显示完成的镜像信息 ok 的

3.docker pull 镜像名 [:TAG]

下载镜像

​ [:TAG] 指定标签或版本,不指定默认拉取最新的latest版本.

4.docker rmi 镜像名ID

删除镜像

​ -f : 强制删除

​ 删除单个 : docker rmi -f 镜像ID:TAG

​ 删除多个 : docker rmi -f 镜像ID1:TAG 镜像ID2:TAG]

​ 删除全部 : docker rmi -f $(docker images -qa)

5.Docker镜像提交

docker commit -m="提交描述信息" -a="作者" 容器ID 需要创建的镜像名:[标签名]
eg:
docker commit -m="提交描述信息" -a="XuTigui" b421b52fe12f jenkins:xyit_1.0.0
# 使用dockerfile,docker文件名使用绝对路径会相对路径,新镜像名后有一个.,表示上下文
docker build -f dockerfilename -t 需要创建的镜像名:[标签名] .

6.镜像导出与导入(挂载的路径不会被打包)

# 导出指定的位置 >和-o 是一样的
docker save 镜像ID > /tmp/docker-images/镜像名.tar
eg:
## 前置条件 docker commit -m="提交描述信息" -a="XuTigui" b421b52fe12f jenkins:xyit_1.0.0
## 前置条件 mkdir /tmp/docker-images
docker save 556bd10b382c -o /tmp/docker-images/jenkins-xyit-1.0.0.tar

# 导入,-i和<是一样的
docker load < /tmp/docker-images/镜像名.tar
eg:
docker load -i /tmp/docker-images/jenkins-xyit-1.0.0.tar

# 修改进行的tag
docker tag 镜像ID 新的镜像名:[Tag]
eg:
docker tag 556bd10b382c jenkins:xyit_1.0.0

2.3容器命令

1.docker run

新建并启动容器:docker run [OPTION] IMAGE [COMMMAND][ARG]
[OPTION] 
	--name="容器新名字":为容器指定一个名称,未指定会随机分配
	--env: 向容器中注入环境变量(-e)
	--link 容器名:别名 : 容器通信
	-d:后台运行容器,并返回容器id,也叫启动守护式容器
	-i:以交互式模式运行容器,通常与-t同时使用
	-t:为容器重新分配一个伪输入终端,通常与-i同时使用
	-P:随机映射端口
	-p:指定端口映射,有四种该模式
		ip:hostPort:containerPort
		ip::containerPort
		hostPort:containerPort
		containerPort

2.docker ps

列出当前所有容器正在运行的容器
docker ps [OPION]
[OPTION]
	-a:列出当前所有正在运行的容器+历史上运行过的
	-l:显示最近创建的容器
	-n:显示最近创建的n个容器
	-q:只显示容器编号
	-no-trunc:不截断输出

3.退出容器

退出容器:
	exit:容器停止退出
	ctrl+P+Q:容器不停止退出

4.docker start 容器ID

启动未关闭的容器:
	docker start 容器ID或容器名

5.docker restart 容器ID

重启容器:
	docker restart 容器ID或容器名

6.停止容器

docker stop 容器ID或容器名 # 慢慢停止
docker kill 容器ID或容器名 # 立刻停止

7.删除容器

删除已停止的容器:
	docker rm [-f] 容器ID或容器名
	-f:强制删除
一次性删多个:
	docker rm -f $(docker ps -a -q)
	docker ps -a -q | xargs rm

8.启动守护式容器

docker run -d 镜像名
	ps 中没有该容器运行

9.查看容器日志

docker logs -f -t --tail 容器ID或容器名
	-t:是加入的时间戳
	-f:跟随最新的日志打印
	--tail 数字:显示最后多少条

10.查看容器内运行的进程

docker top 容器ID或容器名

11.查看容器内部细节

docker inspect 容器ID或容器名 
	json字符串

12.进入正在运行的容器并以命令行交互

dcoker exec -it 容器ID或容器名 bashShell
docker attach 容器ID或容器名
区别:
	exec:是在容器中打开的新终端,并且可以启动新的进程 直接在容器外执行没用进入到容器内部
	attach:直接进入容器启动命令的终端,不会启动新的进程

13.从文件内拷贝文件到主机上

docker cp 容器ID或容器名:容器内路径 目的主机路径  # 反之则反
docker cp f59bb1c0e727:/etc/apt/sources.list /usr/local/src/

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb http://mirrors.aliyun.com/kali-security kali-rolling/updates main contrib non-free

docker cp /usr/local/src/sources.list 36f2b4e3ae2e:/etc/apt/

3.网络

进程网络修改:
-b, --bridge 指定Docker使用的网桥设备,默认情况下Docker会自动创建和使用docker0 网桥设备,通过此参数可以使用已经存在的设备
--bip 指定Docker0 的IP 和掩码,使用标注的CIDR形式,如10.10.10.10/24
--dns 配置容器的DNS,在启动Docker进程时添加,所有容器全部生效
容器网络修改:
--net 用于指定容器的网络通讯方式
	bridge:Docker默认的方式,网桥模式
	none:容器没有网络栈
	container:使用其他容器的网络栈,Docker容器会加入其他容器的network namespace
	host:表示容器使用Host的网络,没有自己独立的网络栈.容器可以完全访问Host的网络,不安全

网络隔离:

查看当前docker可用网络: docker network ls
新建网络: docker network create app-tier --driver bridge
		docker network create -d 类型 网络空间名称
查看新建的网络信息: docker network inspect app-tier
查看所有可用网桥
docker network list
删除指定网桥
docker network rm dr0

4.dockerfile

FROM:定制的镜像都是基于 FROM 的镜像
RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
	RUN <命令行命令> # <命令行命令> 等同于,在终端操作的 shell 命令。
	RUN ["可执行文件", "参数1", "参数2"]

5.docker-compose

5.1下载安装

下载地址:https://github.com/docker/compose/releases/tag/1.26.0

mv docker-compose-Linux-x86_64 docker-compose
chmod a+x docker-compose
mv docker-compose /usr/local/bin
vim /etc/profile
#添加内容:export PATH=/usr/local/bin:$PATH
source /etc/profile
# 测试,任意目录下输入
docker-compose

5.2容器管理

5.2.1yml文件编写格式

yml文件以key:value方式来指定配置信息
多个配置信息以换行+缩进的方式来区分,严格缩进
在docker-compose.yml文件中,不要使用制表符
 
version: '3.1'
services:
  mysql:           # 服务的名称
    restart: always   # 代表只要docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4  # 指定镜像
    container_name: mysql  # 指定容器名称
    ports:
      - 3306:3306   #  指定端口号的映射,依次可以映射多个端口
    environment:
      MYSQL_ROOT_PASSWORD: root   # 指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai        # 指定时区
    volumes:
     - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql   # 映射数据卷
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8
    container_name: tomcat
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
      - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs

5.2.2容器管理

在使用docker-compose的命令时,默认会在当前目录下找docker-compose.yml文件
 
#1.基于docker-compose.yml启动管理的容器
docker-compose up -d
 
#2.关闭并删除容器
docker-compose down
 
#3.开启|关闭|重启已经存在的由docker-compose维护的容器
docker-compose start|stop|restart
 
#4.查看由docker-compose管理的容器
docker-compose ps
 
#5.查看日志
docker-compose logs -f

5.2.34.docker-compose配合Dockerfile使用

编写docker-compose文件

# yml文件
version: '3.1'
services:
  ssm:
    restart: always
    build:            # 
      context: ../      # 指定dockerfile文件的所在路径
      dockerfile: Dockerfile   # 指定Dockerfile文件名称
    image: ssm:1.0.1
    container_name: ssm
    ports:
      - 8081:8080
    environment:
      TZ: Asia/Shanghai

编写Dockerfile文件

from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps

运行

#可以直接基于docker-compose.yml以及Dockerfile文件构建的自定义镜像
docker-compose up -d
# 如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个自定义镜像
#重新构建自定义镜像
docker-compose build
#运行当前内容,并重新构建
docker-compose up -d --build

6.CI|CD

文件夹及文件挂载

文件夹挂载: 若文件夹不存在,则先创建出文件夹(若为多层文件夹,则递归创建) 用host上的文件夹内容覆盖container中的文件夹内容

文件挂载: docker 禁止用主机上不存在的文件挂载到container中已经存在的文件 文件挂载不会对同一文件夹下的其他文件产生任何影响

文件复制

本地复制到容器 docker cp /www/ 18b1660eb8cb:/www/
容器复制到本地 docker cp 18b1660eb8cb:/www/ /www/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值