docker常用命令

释放双眼,带上耳机,听听看~!

文章目录

    1. docker 常用命令
  • 1.1 启动停止

    • 1.2 配置aliyun容器镜像加速器
    • 1.3 镜像操作
    • 1.4 容器相关
    1. 构建镜像
  • 2.1 修改容器,通过容器构建镜像

    • 2.2 编写dockerfile构建镜像
  • 2.2.1 dockerfile常用参数
    * 2.2.2 构建镜像

    1. 其他问题
  • 3.1 docker -v 挂载宿主机目录没有权限访问

  • 3.1.1 关闭selinux
    * 3.1.2 给需要挂载的宿主机目录配置安全上下文(selinux 标签)

1. docker 常用命令

1.1 启动停止


1
2
3
4
5
6
1systemctl start docker     # 启动docker服务
2systemctl stop docker  # 关闭docker服务
3systemctl enable docker # 设置开机自启动
4docker version             # 查看docker 版本
5
6

1.2 配置aliyun容器镜像加速器


1
2
3
4
5
6
7
8
9
10
1mkdir -p /etc/docker
2tee /etc/docker/daemon.json <<-'EOF'
3{
4  "registry-mirrors": ["https://1fc43mcq.mirror.aliyuncs.com"]
5}
6EOF
7systemctl daemon-reload
8systemctl restart docker
9
10

1.3 镜像操作

docker search 关键字
在镜像仓库中搜索包含关键字的镜像
docker pull 镜像名称:tag
tag为镜像版本,如果不指定,默认为latest
docker images
查看本地镜像
docker inspect 镜像id or 镜像名称
查看镜像详细信息
docker rmi -f 镜像id or 镜像名:tag
-f 为强制删除

搜索镜像
docker常用命令
拉取镜像
docker常用命令
查看本地镜像
docker常用命令
查看镜像底层信息
docker常用命令
docker常用命令

1.4 容器相关

docker run –name 容器名称 -i -t -d -p 宿主机端口:容器端口 -v 宿主机目录:容器目录:ro 镜像id or 镜像名:tag
创建镜像 , –name:指定容器名称,-i:交互模式访问 -t:分配一个伪终端,-p:端口映射,-v:目录映射 ro为只读,默认为读写
docker ps -a -q
-a:表示 查看所有容器,默认显示正在运行的容器,-q:只显示容器id
docker stop 容器id或容器名称
停止容器
docker start 容器id或容器名称
启动容器
docker rm -f 容器id或容器名称
删除容器 -f 表示强制删除
docker logs 容器id或容器名称
查看容器日志
docker inspect 容器id或容器名称
查看容器详细信息
docker exec -it 容器id或容器名 bash
以交互式进入容器
docker cp 宿主机目录 容器id:容器目录
拷贝宿主机文件到容器内
docker cp 容器id:容器目录 宿主机目录
拷贝容器文件到宿主机

创建镜像


1
2
3
1docker run --name conner_centos -i -t -d -p 1234:2234 -v /tmp:/tmp:ro 688353a31fde
2
3

docker常用命令
拷贝宿主机文件到容器


1
2
3
1docker cp lbz 1b8ecd002608:/root
2
3

docker常用命令
拷贝容器文件到宿主机


1
2
3
1docker cp 1b8ecd002608:/root/lbz/connor /tmp
2
3

docker常用命令
清除所有容器


1
2
3
4
5
6
1# 方法一
2for i in `docker ps -a|awk '{print $1}'|grep -v CONTAINER`; do docker rm -f $i; done;
3# 方法二
4docker rm -f $(docker ps -aq)
5
6

2. 构建镜像

2.1 修改容器,通过容器构建镜像

根据基础镜像创建容器
docker常用命令
修改容器
docker常用命令
提交新镜像


1
2
3
4
1# docker commit -m='描述信息' -a='作者' 容器id或容器名称 镜像名:tag
2docker commit -m='test2020' -a='connor' 2d96a1f2d3e8 centos7:v1.0
3
4

docker常用命令
docker常用命令

2.2 编写dockerfile构建镜像

语法规则

  • 指令必须大写,且后面必须跟参数
  • 第一条指令必须为FROM,指定Base Image(基础镜像)
  • 指令顺序按从上到下依次执行
  • 每条指令都会创建一个新的镜像层并提交

2.2.1 dockerfile常用参数

FROM
指定Base Image
MAINTAINER
指定作者
ENV
设置环境变量
WORKDIR
指定默认工作目录,即进入容器后默认进入的目录
VOLUME
创建容器内部挂载点
RUN
指定构建过程中需要执行的命令
CMD
指定容器运行时需要执行的命令,有多条命令时只有最后一条生效
ENTRYPOINT
指定容器运行时需要执行的命令
COPY
拷贝文件或目录到镜像中
ADD
拷贝文件到镜像中
EXPOSE
指定容器暴露端口

2.2.2 构建镜像

创建dockerfile


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
1# 指定基础镜像
2FROM accab2322a74
3# 指定作者
4MAINTAINER connor
5# 添加环境变量
6ENV test_path /usr/local/ansible
7# 构建过程中执行命令
8RUN mkdir -p ${test_path}
9# 拷贝文件或目录
10COPY a.txt ${test_path}
11# 拷贝文件
12ADD 1.txt ${test_path}
13# 指定默认工作目录
14WORKDIR ${test_path}
15# 添加默认挂载点,在docker run 时如果不指定-v 则默认挂载到随机目录
16VOLUME ["/data1","/data2"]
17# 启动容器时运行,如果docker run后面添加了参数则会在ENTRYPOINT参数中追加
18ENTRYPOINT ["tail"]
19# 启动容器时运行,默认追加命令(参数),如果有多个CMD命令,只执行(添加)最后一条命令(参数),如果docker run后面添加了参数则会将 CMD中的参数覆盖
20CMD ["-f", "/usr/local/ansible/1.txt"]
21# 声明了容器应该打开的端口并没有实际上将它打开,在不使用-p(指定宿主机端口映射)和-P(宿主机随机端口映射)时该端口并不会打开
22# 作用1:为了让运维人员知晓,需要映射哪些端口 作用2:使用随机端口映射时,容器默认使用EXPOSE暴露端口
23EXPOSE 8080
24
25

根据dockerfile构建新的镜像


1
2
3
4
1# docker build -f dockerfile文件名 -t 镜像:标签 .(注意这里还有个点)
2docker build -f test_dockerfile -t centos7:v1.7 .
3
4

docker常用命令
运行容器


1
2
3
4
1# -P 指定随机端口映射,[-f /usr/local/ansible/a.txt] 为启动参数,默认会将dockerfile中的CMD参数覆盖,但不会覆盖ENTRYPOINT,会与ENTRYPOINT参数组合成新的命令,当没有ENTRYPOINT时,则为独立运行的命令
2docker run  -it -d  -P centos7:v1.7 -f /usr/local/ansible/a.txt
3
4

此处可以看到容器端口8080已经对外开放
docker常用命令
此处可以看到dockerfile 的CMD的值已经被替换


1
2
3
1docker inspect -f {{".Config.Cmd"}} eab086bf2f8c
2
3

docker常用命令
此处可以查看容器挂载宿主机的具体目录


1
2
3
1docker inspect -f {{".Mounts"}} eab086bf2f8c
2
3

docker常用命令
此处可以验证得出容器挂载宿主机成功
docker常用命令

3. 其他问题

3.1 docker -v 挂载宿主机目录没有权限访问

两种方法选择一种即可

3.1.1 关闭selinux


1
2
3
4
5
1# 修改配置文件需要重启服务器才能生效,所以修改配置后还需要使用命令临时修改
2sed  -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
3setenforce 0
4
5

3.1.2 给需要挂载的宿主机目录配置安全上下文(selinux 标签)


1
2
3
4
1# /data为宿主机提供挂载的目录
2chcon -Rt svirt_sandbox_file_t /data/
3
4

给TA打赏
共{{data.count}}人
人已打赏
安全运维

MySQL到MongoDB的数据同步方法!

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索