docker容器

1. 启动容器并获取镜像

docker  run -d -p 80:80 httpd #后台启动一个httpd的服务
docker ps -a # 查看

2. 删除容器

删除所有的容器
docker rm -f `docker ps -qa`

批量删除已关闭
docker rm -v $(docker ps -aq -f status=exited)

删除指定容器
docker rm -f 容器ID/name

3. 基于centos6.9开启一个容器,取名test,

docker run -it --name "test" centos:6.9

4. 将test容器制作为一个镜像

docker commit test wzj/centos:6.9

5. 制作带有centos7.5+vim+net-tools+iproute+sshd的镜像

1. 启动并进入一个新容器
docker run -it --name "tests" centos:7.5.1804

2. 使用ftp优化yum源, ftp的路径不要错了
mv /etc/yum.repos.d/*.repo /tmp
echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub/centos7\ngpgcheck=0">/etc/yum.repos.d/ftp.repo

3. 安装ssh
yum install -y vim net-tools  iproute   openssh-*

4. 启动ssh
 yum install -y sed 
 mkdir /var/run/sshd
 echo 'UseDNS no' >> /etc/ssh/sshd_config
 sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
 echo 'root:123456' | chpasswd
 /usr/bin/ssh-keygen -A
 
 /usr/sbin/sshd -D 
 
  以上操作做完后会一直不退出, 按住以下键退至宿主机并不关闭容器
  ctrl p  q
  
5. 基于这个容器制作镜像
docker commit tests wzj/centos7_sshd:v2

6. dockerfile的应用

我们发现, 安装完ssh的容器制作的镜像还是很大, 使用dockerfile, 记录操作步骤, 就可以了

vim  dockerfile

FROM centos:7.5.1804
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub/centos7\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
RUN yum install -y openssh-server
RUN yum install -y openssh-clients
RUN yum install net-tools* -y
RUN yum install iproute-* -y
RUN mkdir /var/run/sshd
RUN echo 'UseDNS no' >> /etc/ssh/sshd_config
RUN sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
RUN echo 'root:123456' | chpasswd
RUN /usr/bin/ssh-keygen -A
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

这样运行dockerfile就可以搭建好容器环境了

docker build -t "oldguo/centos7_sshd:v3" /opt/dockerfile

7. 数据卷的使用(持久化)

7.1 首先利用dockerfile起一个容器并安装运行Redis

创建一个dockfile目录,将宿主机的Redis安装目录压缩放到这里,
    dockerfile文件放这里, Redis配置文件放这里
    
mkdir -p /opt/dockfile/redis3
tar -cvf redis-3.2.10.tar  redis-3.2.10

redis的配置文件
vim redis.conf
port 6379
logfile /test/redis.log
dir /test/
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync always
requirepass 123

写dockerfile
vim dockerfile
FROM centos:7.5.1804
VOLUME ["/test"]
COPY redis-3.2.10.tar /data/
COPY redis.conf /test/
RUN tar -xf /data/redis-3.2.10.tar -C /data/
EXPOSE 6379
CMD ["/data/redis-3.2.10/src/redis-server","/test/redis.conf"]

运行docker, 后面有一个点不能少, 代表dockerfile就在当前目录下
docker build -t "wzj/centos_redis:v1" . 
运行装好Redis的容器
docker  run -d -p 16380:6379 -v /opt/Registry:/var/lib/registry wzj/centos_redis:v1

查看数据所在目录
docker inspect 容器ID/容器名
这里面的Mounts下面的Source值为路径,cd进去就可以了

7. 容器管理

容器的类型
    工具类:会进入到容器中, 例如要使用vim
        docker run -it --name="test_vim"  3fe2fe0dab2e /bin/bash
    服务类:只需要后台启一个服务就行,不用进入容器,例如开启一个nginx服务 
        docker run -d -p 8080:80 --name="discuz" nginx:1.14
        
查看所有容器 docker ps -a
关闭一个容器 docker stop centos6.9
强制关闭一个容器 docker kill nginx 
启动一个关闭了的容器 docker start -i centos6.9
重启一个容器 docker restart centos6.9
进入启动的容器: docker attach 容器ID/name
查看容器的详细信息 docker inspect 容器ID/name
查看容器中运行的进程信息 docker top 容器ID/name

8. 制作私有Registry仓库

1.配置私有仓库
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/Registry:/var/lib/registry  registry

vim /etc/docker/daemon.json

{
   "registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"],
   "insecure-registries": ["10.0.0.100:5000"]
}

systemctl  restart docker

2. 制作本地镜像并push
docker tag nginx 10.0.0.100:5000/oldguo/nginx:v1
docker images
docker push 10.0.0.100:5000/oldguo/nginx:v1

3. 异地进行pull镜像
docker pull  10.0.0.100:5000/oldguo/nginx:v1

你可能感兴趣的:(docker容器)