Docker常用命令&操作&下載加速

一、安裝docker

1、檢查內核版本,必須是3.10及以上
uname -r
2、安裝docker
使用yum: yum install docker
不使用yum: wget -qO- https://get.docker.com/ | sh
3、輸入y確認安裝
4、啓動docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
5、開機啓動docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
6、停止docker
systemctl stop docker

二、常用命令&操作

1、鏡像操作

操作 命令 說明
檢索 docker search 關鍵字 eg:docker search redis 我們經常去docker hub上檢索鏡像的詳細信息,如鏡像的TAG。
拉取 docker pull 鏡像名:tag :tag是可選的,tag表示標籤,多爲軟件的版本,默認是latest
列表 docker images 查看所有本地鏡像
刪除 docker rmi image-id 刪除指定的本地鏡像

2、容器操作

軟件鏡像(QQ安裝程序)----運行鏡像----產生一個容器(正在運行的軟件,運行的QQ);

步驟:

1、搜索鏡像
[root@localhost ~]# docker search tomcat
2、拉取鏡像
[root@localhost ~]# docker pull tomcat
3、根據鏡像啓動容器
docker run --name mytomcat -d tomcat:latest
4、docker ps  
查看運行中的容器
5、 停止運行中的容器
docker stop  容器的id
6、查看所有的容器
docker ps -a
7、啓動容器
docker start 容器id
8、刪除一個容器
 docker rm 容器id
9、啓動一個做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
-d:後臺運行
-p: 將主機的端口映射到容器的一個端口    主機端口:容器內部的端口

10、爲了演示簡單關閉了linux的防火牆
service firewalld status ;查看防火牆狀態
service firewalld stop:關閉防火牆
11、查看容器的日誌
docker logs container-name/container-id

更多命令參看參考每一個鏡像的文檔

3、安裝MySQL示例

docker pull mysql

錯誤的啓動

[root@localhost ~]# docker run --name mysql01 -d mysql
42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846

mysql退出了
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
42f09819908b        mysql               "docker-entrypoint.sh"   34 seconds ago      Exited (1) 33 seconds ago                            mysql01
538bde63e500        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       compassionate_
goldstine
c4f1ac60b3fc        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       lonely_fermi
81ec743a5271        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       sick_ramanujan


//錯誤日誌
[root@localhost ~]# docker logs 42f09819908b
error: database is uninitialized and password option is not specified 
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;這個三個參數必須指定一個

正確的啓動

[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b874c56bec49        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 3 seconds        3306/tcp            mysql01

做了端口映射

[root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ad10e4bc5c6a        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mysql02

三、Docker鏡像下載加速

1、 進入docker在本機的配置目錄,

cd /etc/docker

2、 找到daemon.json文件,沒有新建

vi daemon.json

# 添加阿里雲代理
{
    "registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"]    
}

3、執行重啓docker命令:

service docker restart

四、Docker鏡像製作

1、 通過dockerfile製作docker

FROM ubuntu:xenial

# 定義變量 # nginx端口默認值
ENV NGINX_PORT=8888 \  
     # fastdfs端口默認值
    FDFS_PORT=22122 \  
	# tracker/storage 數據和日誌目錄地址
	FDFS_PATH=/home/face/fdfs \  	
	#主機ip
	HOST_IP=49.233.163.26 \  
	#組名
	GROUP_NAME=group1  
	

# 更新數據源
WORKDIR /etc/apt
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > sources.list \
	&& echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> sources.list \
	&& echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> sources.list \
	&& echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> sources.list \
	&& apt-get update

# 安裝依賴
RUN apt-get install make gcc libpcre3-dev zlib1g-dev --assume-yes bash vim net-tools
 
 # 創建目錄
RUN mkdir -p /home/face/fdfs
 
WORKDIR /usr/local/src
#複製並解壓縮各種源碼
ADD fastdfs-6.06.tar.gz /usr/local/src 
ADD fastdfs-nginx-module-1.22.tar.gz /usr/local/src 
ADD	libfastcommon-1.0.43.tar.gz /usr/local/src 
ADD	nginx-1.17.9.tar.gz /usr/local/src
 
# 安裝 libfastcommon
WORKDIR /usr/local/src/libfastcommon-1.0.43
RUN ./make.sh && ./make.sh install
 
# 安裝 FastDFS / 修改fdfs配置文件
WORKDIR /usr/local/src/fastdfs-6.06/
RUN ./make.sh && ./make.sh install \
	&& cp /usr/local/src/fastdfs-6.06/conf/*  /etc/fdfs/ \
	&& sed -i "s|/home/yuqing/fastdfs|${FDFS_PATH}|g" /etc/fdfs/storage.conf \
	&& sed -i "s|/home/yuqing/fastdfs|${FDFS_PATH}|g" /etc/fdfs/tracker.conf \
	&& sed -i "s|/home/yuqing/fastdfs|${FDFS_PATH}|g" /etc/fdfs/client.conf  \
	&& sed -i "s|http.server_port = .*$|http.server_port=${NGINX_PORT}|g" /etc/fdfs/storage.conf \
	&& sed -i "s|group_name = .*$|group_name=${GROUP_NAME}|g"  /etc/fdfs/storage.conf

#防盜鏈功能 
#RUN sed -i "s|http.anti_steal.check_token = false |http.anti_steal.check_token=${CKECK_TOKEN}|g"  /etc/fdfs/http.conf \
#     && sed -i "s|FastDFS1234567890|${SECRET_KEY}|g"  /etc/fdfs/http.conf \
#	 && sed -i "s|/home/yuqing/fastdfs/conf/anti-steal.jpg|${CKECK_FAIL}|g"  /etc/fdfs/http.conf \ 
 
 
#配置fastdfs-nginx-module
RUN cp /usr/local/src/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf  /etc/fdfs/ \
    && sed -i "s|group_name=.*$|group_name=${GROUP_NAME}|g" /etc/fdfs/mod_fastdfs.conf \
	&& sed -i "s|url_have_group_name =.*$|url_have_group_name=true|g"  /etc/fdfs/mod_fastdfs.conf \
	&& sed -i "s|store_path0=.*$|store_path0=${FDFS_PATH}|g" /etc/fdfs/mod_fastdfs.conf 


#安裝nginx
WORKDIR /usr/local/src/nginx-1.17.9
RUN ./configure --add-module=/usr/local/src/fastdfs-nginx-module-1.22/src/ \
	&& make && make install 

#nginx配置文件上傳
ADD nginx.conf /usr/local/nginx/conf
RUN sed -i "s|listen.*$|listen ${NGINX_PORT};|g" /usr/local/nginx/conf/nginx.conf     

#啓動命令
ADD start.sh /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/start.sh"]

#暴漏端口 
WORKDIR /  
EXPOSE ${NGINX_PORT} ${FDFS_PORT} 23000

start.sh

#!/bin/sh
chmod 755 /etc/init.d/fdfs_trackerd
chmod 755 /etc/init.d/fdfs_storaged

sed -i "s|tracker_server = .*$|tracker_server=$HOST_IP:$FDFS_PORT|g" /etc/fdfs/storage.conf
sed -i "s|tracker_server = .*$|tracker_server=$HOST_IP:$FDFS_PORT|g" /etc/fdfs/client.conf
sed -i "s|tracker_server=.*$|tracker_server=$HOST_IP:$FDFS_PORT|g" /etc/fdfs/mod_fastdfs.conf

/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start
/usr/local/nginx/sbin/nginx -g 'daemon off;'

dokcer-compose.xml

version: '3.1'
services:
  fastdfs:
    build: env
    tty: true
    # 該容器是否需要開機啓動+自動重啓
    restart: always
    container_name: fastdfs
    image: newland/fastdfs:6.06
    # 將本地目錄映射到docker容器內的fastdfs數據存儲目錄
    volumes:
      - ./fdfs:/home/face/fdfs
    network_mode: host

2、構建過程

#開啓執行權限
chmod +x start.sh
# 構建建啓動容器,通過dokcer-compose文件
dokcer-compose up -d  
# 構建建鏡像通過 dokcer run 啓動
docker build -t newland/fdfs .
# -e 對應的環境變量,只對sh裏面起作用
docker  run  --name  fdfs11 -d  -v /usr/local/docker/fastdfs4/fdfs:/home/face/fdfs -e HOST_IP=49.233.163.26   -p 8889:8888 -p 22122:22122 -p 23000:23000 newland/fdfs 
#進入容器命令
docker exec -it fdfs11 /bin/bash  
#查看環境變量
docker exec fdfs11 env  
#如果出現倉庫鏡像存在,需要卸載存在鏡像
dokcer-compose down

3、鏡像倉庫

#遠程倉庫操作
# 修改tagh和倉庫名一致
docker tag fdfs jeffreyliu007/fdfs  
#上傳
docker push jeffreyliu007/fdfs
#拉取
docker pull jeffreyliu007/fdfs

#本地鏡像操作
#保存到本地
docker save -o fdfs.tar newland/fdfs
#導入
docker load < fdfs.tar
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章